thinreports 0.9.1 → 0.11.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (213) hide show
  1. checksums.yaml +5 -5
  2. data/.github/workflows/test.yml +39 -0
  3. data/.gitignore +1 -0
  4. data/CHANGELOG.md +59 -2
  5. data/Dockerfile +12 -0
  6. data/Gemfile +7 -4
  7. data/README.md +44 -22
  8. data/Rakefile +14 -31
  9. data/lib/thinreports.rb +16 -15
  10. data/lib/thinreports/config.rb +2 -24
  11. data/lib/thinreports/core/errors.rb +6 -17
  12. data/lib/thinreports/core/format/base.rb +62 -61
  13. data/lib/thinreports/core/shape.rb +10 -12
  14. data/lib/thinreports/core/shape/base.rb +3 -12
  15. data/lib/thinreports/core/shape/base/interface.rb +34 -32
  16. data/lib/thinreports/core/shape/base/internal.rb +45 -43
  17. data/lib/thinreports/core/shape/basic.rb +12 -12
  18. data/lib/thinreports/core/shape/basic/block_format.rb +8 -6
  19. data/lib/thinreports/core/shape/basic/block_interface.rb +24 -22
  20. data/lib/thinreports/core/shape/basic/block_internal.rb +28 -26
  21. data/lib/thinreports/core/shape/basic/format.rb +11 -9
  22. data/lib/thinreports/core/shape/basic/interface.rb +79 -77
  23. data/lib/thinreports/core/shape/basic/internal.rb +17 -14
  24. data/lib/thinreports/core/shape/image_block.rb +9 -9
  25. data/lib/thinreports/core/shape/image_block/format.rb +7 -5
  26. data/lib/thinreports/core/shape/image_block/interface.rb +15 -13
  27. data/lib/thinreports/core/shape/image_block/internal.rb +10 -8
  28. data/lib/thinreports/core/shape/list.rb +13 -13
  29. data/lib/thinreports/core/shape/list/format.rb +83 -77
  30. data/lib/thinreports/core/shape/list/manager.rb +179 -176
  31. data/lib/thinreports/core/shape/list/page.rb +91 -93
  32. data/lib/thinreports/core/shape/list/page_state.rb +42 -40
  33. data/lib/thinreports/core/shape/list/section_format.rb +28 -26
  34. data/lib/thinreports/core/shape/list/section_interface.rb +42 -40
  35. data/lib/thinreports/core/shape/list/section_internal.rb +21 -19
  36. data/lib/thinreports/core/shape/manager.rb +4 -13
  37. data/lib/thinreports/core/shape/manager/format.rb +21 -19
  38. data/lib/thinreports/core/shape/manager/internal.rb +87 -84
  39. data/lib/thinreports/core/shape/manager/target.rb +93 -95
  40. data/lib/thinreports/core/shape/page_number.rb +9 -9
  41. data/lib/thinreports/core/shape/page_number/format.rb +20 -18
  42. data/lib/thinreports/core/shape/page_number/interface.rb +20 -18
  43. data/lib/thinreports/core/shape/page_number/internal.rb +46 -44
  44. data/lib/thinreports/core/shape/style.rb +5 -14
  45. data/lib/thinreports/core/shape/style/base.rb +121 -120
  46. data/lib/thinreports/core/shape/style/basic.rb +12 -10
  47. data/lib/thinreports/core/shape/style/graphic.rb +35 -33
  48. data/lib/thinreports/core/shape/style/text.rb +113 -107
  49. data/lib/thinreports/core/shape/text.rb +9 -9
  50. data/lib/thinreports/core/shape/text/format.rb +10 -9
  51. data/lib/thinreports/core/shape/text/interface.rb +13 -11
  52. data/lib/thinreports/core/shape/text/internal.rb +14 -12
  53. data/lib/thinreports/core/shape/text_block.rb +10 -10
  54. data/lib/thinreports/core/shape/text_block/format.rb +35 -33
  55. data/lib/thinreports/core/shape/text_block/formatter.rb +26 -24
  56. data/lib/thinreports/core/shape/text_block/formatter/basic.rb +25 -25
  57. data/lib/thinreports/core/shape/text_block/formatter/datetime.rb +15 -12
  58. data/lib/thinreports/core/shape/text_block/formatter/number.rb +52 -34
  59. data/lib/thinreports/core/shape/text_block/formatter/padding.rb +17 -14
  60. data/lib/thinreports/core/shape/text_block/interface.rb +25 -23
  61. data/lib/thinreports/core/shape/text_block/internal.rb +66 -68
  62. data/lib/thinreports/core/utils.rb +7 -3
  63. data/lib/thinreports/generator/pdf.rb +24 -25
  64. data/lib/thinreports/generator/pdf/document.rb +109 -110
  65. data/lib/thinreports/generator/pdf/document/draw_shape.rb +57 -51
  66. data/lib/thinreports/generator/pdf/document/draw_template_items.rb +50 -47
  67. data/lib/thinreports/generator/pdf/document/font.rb +67 -58
  68. data/lib/thinreports/generator/pdf/document/graphics.rb +32 -33
  69. data/lib/thinreports/generator/pdf/document/graphics/attributes.rb +121 -121
  70. data/lib/thinreports/generator/pdf/document/graphics/basic.rb +112 -114
  71. data/lib/thinreports/generator/pdf/document/graphics/image.rb +58 -150
  72. data/lib/thinreports/generator/pdf/document/graphics/text.rb +149 -137
  73. data/lib/thinreports/generator/pdf/document/page.rb +60 -64
  74. data/lib/thinreports/generator/pdf/document/parse_color.rb +37 -37
  75. data/lib/thinreports/generator/pdf/drawer/base.rb +41 -41
  76. data/lib/thinreports/generator/pdf/drawer/list.rb +56 -54
  77. data/lib/thinreports/generator/pdf/drawer/list_section.rb +42 -40
  78. data/lib/thinreports/generator/pdf/drawer/page.rb +101 -96
  79. data/lib/thinreports/generator/pdf/prawn_ext.rb +4 -30
  80. data/lib/thinreports/generator/pdf/prawn_ext/calc_image_dimensions.rb +32 -0
  81. data/lib/thinreports/generator/pdf/prawn_ext/width_of.rb +35 -0
  82. data/lib/thinreports/layout.rb +5 -7
  83. data/lib/thinreports/layout/base.rb +5 -9
  84. data/lib/thinreports/layout/format.rb +17 -13
  85. data/lib/thinreports/layout/legacy_schema.rb +17 -13
  86. data/lib/thinreports/layout/version.rb +22 -25
  87. data/lib/thinreports/report.rb +4 -6
  88. data/lib/thinreports/report/base.rb +24 -51
  89. data/lib/thinreports/report/internal.rb +13 -15
  90. data/lib/thinreports/report/page.rb +5 -11
  91. data/lib/thinreports/version.rb +2 -2
  92. data/thinreports.gemspec +10 -19
  93. metadata +13 -288
  94. data/.travis.yml +0 -19
  95. data/examples/character_spacing/character_spacing.rb +0 -8
  96. data/examples/character_spacing/character_spacing.tlf +0 -293
  97. data/examples/dynamic_image/dynamic_image.rb +0 -31
  98. data/examples/dynamic_image/dynamic_image.tlf +0 -661
  99. data/examples/dynamic_image/img200x100.png +0 -0
  100. data/examples/dynamic_image/img50x50.png +0 -0
  101. data/examples/dynamic_style/dynamic_style.rb +0 -150
  102. data/examples/dynamic_style/dynamic_style.tlf +0 -1835
  103. data/examples/dynamic_style/dynamic_style_in_list.tlf +0 -344
  104. data/examples/dynamic_style/image.png +0 -0
  105. data/examples/eudc/eudc.rb +0 -20
  106. data/examples/eudc/eudc.tlf +0 -180
  107. data/examples/eudc/eudc.ttf +0 -0
  108. data/examples/helper.rb +0 -50
  109. data/examples/hidden_shapes/hidden_shapes.rb +0 -9
  110. data/examples/hidden_shapes/hidden_shapes.tlf +0 -449
  111. data/examples/list_events/list_events.rb +0 -32
  112. data/examples/list_events/list_events.tlf +0 -361
  113. data/examples/list_manual_generation/list_manual_generation.rb +0 -22
  114. data/examples/list_manual_generation/list_manual_generation.tlf +0 -132
  115. data/examples/list_page_number/list_page_number.rb +0 -17
  116. data/examples/list_page_number/list_page_number.tlf +0 -254
  117. data/examples/page_number/page_number.rb +0 -33
  118. data/examples/page_number/page_number.tlf +0 -215
  119. data/examples/palleted_png/palleted_png.png +0 -0
  120. data/examples/palleted_png/palleted_png.rb +0 -11
  121. data/examples/palleted_png/palleted_png.tlf +0 -47
  122. data/examples/password_setting/password_setting.rb +0 -10
  123. data/examples/password_setting/password_setting.tlf +0 -45
  124. data/examples/report_callbacks/report_callbacks.rb +0 -14
  125. data/examples/report_callbacks/report_callbacks.tlf +0 -147
  126. data/examples/single_line_tblock/single_line_tblock.rb +0 -13
  127. data/examples/single_line_tblock/single_line_tblock.tlf +0 -170
  128. data/examples/tblock_overflow/tblock_overflow.rb +0 -20
  129. data/examples/tblock_overflow/tblock_overflow.tlf +0 -538
  130. data/examples/tblock_styles/font_size.tlf +0 -383
  131. data/examples/tblock_styles/tblock_styles.rb +0 -43
  132. data/examples/tblock_styles/tblock_styles.tlf +0 -889
  133. data/examples/text_align/text_align.rb +0 -8
  134. data/examples/text_align/text_align.tlf +0 -241
  135. data/examples/typeB_page_size/B4_ISO.tlf +0 -45
  136. data/examples/typeB_page_size/B4_JIS.tlf +0 -45
  137. data/examples/typeB_page_size/typeB_page_size.rb +0 -17
  138. data/examples/word_wrap/word_wrap.rb +0 -26
  139. data/examples/word_wrap/word_wrap.tlf +0 -297
  140. data/lib/thinreports/generator.rb +0 -29
  141. data/lib/thinreports/generator/base.rb +0 -40
  142. data/lib/thinreports/generator/configuration.rb +0 -31
  143. data/lib/thinreports/report/events.rb +0 -32
  144. data/test/data/font.ttf +0 -0
  145. data/test/data/image_normal.jpg +0 -0
  146. data/test/data/image_normal.png +0 -0
  147. data/test/data/image_normal_jpg_noext +0 -0
  148. data/test/data/image_normal_png_noext +0 -0
  149. data/test/data/image_pallete_based.png +0 -0
  150. data/test/data/legacy_layout/all-items.tlf +0 -1
  151. data/test/schema_helper.rb +0 -121
  152. data/test/test_helper.rb +0 -42
  153. data/test/tmp/.gitkeep +0 -0
  154. data/test/unit/core/format/test_base.rb +0 -152
  155. data/test/unit/core/shape/base/test_internal.rb +0 -87
  156. data/test/unit/core/shape/basic/test_block_format.rb +0 -23
  157. data/test/unit/core/shape/basic/test_block_interface.rb +0 -29
  158. data/test/unit/core/shape/basic/test_block_internal.rb +0 -55
  159. data/test/unit/core/shape/basic/test_format.rb +0 -37
  160. data/test/unit/core/shape/basic/test_interface.rb +0 -108
  161. data/test/unit/core/shape/basic/test_internal.rb +0 -55
  162. data/test/unit/core/shape/image_block/test_interface.rb +0 -24
  163. data/test/unit/core/shape/image_block/test_internal.rb +0 -31
  164. data/test/unit/core/shape/list/test_format.rb +0 -111
  165. data/test/unit/core/shape/list/test_manager.rb +0 -67
  166. data/test/unit/core/shape/list/test_page.rb +0 -82
  167. data/test/unit/core/shape/list/test_page_state.rb +0 -31
  168. data/test/unit/core/shape/list/test_section_format.rb +0 -36
  169. data/test/unit/core/shape/list/test_section_interface.rb +0 -75
  170. data/test/unit/core/shape/list/test_section_internal.rb +0 -50
  171. data/test/unit/core/shape/manager/test_format.rb +0 -38
  172. data/test/unit/core/shape/manager/test_internal.rb +0 -132
  173. data/test/unit/core/shape/manager/test_target.rb +0 -140
  174. data/test/unit/core/shape/page_number/test_format.rb +0 -55
  175. data/test/unit/core/shape/page_number/test_interface.rb +0 -33
  176. data/test/unit/core/shape/page_number/test_internal.rb +0 -81
  177. data/test/unit/core/shape/styles/test_base.rb +0 -191
  178. data/test/unit/core/shape/styles/test_basic.rb +0 -24
  179. data/test/unit/core/shape/styles/test_graphic.rb +0 -50
  180. data/test/unit/core/shape/styles/test_text.rb +0 -97
  181. data/test/unit/core/shape/text/test_format.rb +0 -44
  182. data/test/unit/core/shape/text/test_internal.rb +0 -20
  183. data/test/unit/core/shape/text_block/formatter/test_basic.rb +0 -24
  184. data/test/unit/core/shape/text_block/formatter/test_datetime.rb +0 -49
  185. data/test/unit/core/shape/text_block/formatter/test_number.rb +0 -76
  186. data/test/unit/core/shape/text_block/formatter/test_padding.rb +0 -77
  187. data/test/unit/core/shape/text_block/test_format.rb +0 -169
  188. data/test/unit/core/shape/text_block/test_formatter.rb +0 -28
  189. data/test/unit/core/shape/text_block/test_interface.rb +0 -63
  190. data/test/unit/core/shape/text_block/test_internal.rb +0 -128
  191. data/test/unit/core/test_shape.rb +0 -52
  192. data/test/unit/core/test_utils.rb +0 -68
  193. data/test/unit/generator/pdf/document/graphics/test_attributes.rb +0 -135
  194. data/test/unit/generator/pdf/document/graphics/test_basic.rb +0 -45
  195. data/test/unit/generator/pdf/document/graphics/test_image.rb +0 -150
  196. data/test/unit/generator/pdf/document/graphics/test_text.rb +0 -171
  197. data/test/unit/generator/pdf/document/test_font.rb +0 -84
  198. data/test/unit/generator/pdf/document/test_graphics.rb +0 -42
  199. data/test/unit/generator/pdf/document/test_page.rb +0 -122
  200. data/test/unit/generator/pdf/document/test_parse_color.rb +0 -30
  201. data/test/unit/generator/pdf/test_document.rb +0 -20
  202. data/test/unit/generator/test_base.rb +0 -40
  203. data/test/unit/generator/test_configuration.rb +0 -21
  204. data/test/unit/generator/test_pdf.rb +0 -24
  205. data/test/unit/layout/test_base.rb +0 -41
  206. data/test/unit/layout/test_format.rb +0 -100
  207. data/test/unit/layout/test_legacy_schema.rb +0 -574
  208. data/test/unit/layout/test_version.rb +0 -95
  209. data/test/unit/report/test_base.rb +0 -262
  210. data/test/unit/report/test_internal.rb +0 -206
  211. data/test/unit/test_config.rb +0 -51
  212. data/test/unit/test_layout.rb +0 -12
  213. data/test/unit/test_report.rb +0 -18
@@ -1,87 +0,0 @@
1
- # coding: utf-8
2
-
3
- require 'test_helper'
4
-
5
- class Thinreports::Core::Shape::Base::TestInternal < Minitest::Test
6
- include Thinreports::TestHelper
7
-
8
- def setup
9
- @report = Thinreports::Report.new layout: layout_file.path
10
- @report.start_new_page
11
- end
12
-
13
- def create_internal(format_config = {}, &block)
14
- format =
15
- unless format_config.empty?
16
- format_klass = Class.new(Thinreports::Core::Shape::Basic::Format) {
17
- config_reader(*format_config.keys.map {|k| k.to_sym })
18
- }
19
- format_klass.new(format_config)
20
- else
21
- Thinreports::Core::Shape::Basic::Format.new({})
22
- end
23
-
24
- klass = Class.new(Thinreports::Core::Shape::Base::Internal, &block)
25
- klass.new(@report.page, format)
26
- end
27
-
28
- def test_self_format_delegators_should_defines_method_delegated_from_format
29
- internal = create_internal('m1' => 'm1_value') {
30
- format_delegators :m1
31
- }
32
- assert_respond_to internal, :m1
33
- end
34
-
35
- def test_method_delegated_from_format_should_return_same_value_as_an_format
36
- internal = create_internal('m1' => 'm1 value') {
37
- format_delegators :m1
38
- }
39
- assert_same internal.m1, internal.format.m1
40
- end
41
-
42
- def test_copied_internal_should_have_the_new_value_specified_as_a_parent_property
43
- new_page = @report.start_new_page
44
- internal = create_internal {
45
- def style
46
- @style ||= Thinreports::Core::Shape::Style::Base.new(format)
47
- end
48
- }
49
-
50
- assert_same internal.copy(new_page).parent, new_page
51
- end
52
-
53
- def test_copied_internal_should_have_style_copied_from_original
54
- internal = create_internal {
55
- def style
56
- @style ||= Thinreports::Core::Shape::Style::Base.new(format)
57
- end
58
- }
59
- internal.style.write_internal_style(:foo, 'bar')
60
- new_internal = internal.copy(@report.start_new_page)
61
-
62
- assert_equal new_internal.style.read_internal_style(:foo), 'bar'
63
- end
64
-
65
- def test_copied_internal_should_have_states_property_copied_from_original
66
- internal = create_internal {
67
- def style
68
- @style ||= Thinreports::Core::Shape::Style::Base.new(format)
69
- end
70
- }
71
- internal.states[:foo] = 'bar'
72
- new_internal = internal.copy(@report.start_new_page)
73
-
74
- assert_equal new_internal.states[:foo], 'bar'
75
- end
76
-
77
- def test_copy_should_execute_block_with_new_internal_as_argument
78
- internal = create_internal {
79
- def style
80
- @style ||= Thinreports::Core::Shape::Style::Base.new(format)
81
- end
82
- }
83
- internal.copy(@report.start_new_page) do |new_internal|
84
- assert_equal new_internal.is_a?(Thinreports::Core::Shape::Base::Internal), true
85
- end
86
- end
87
- end
@@ -1,23 +0,0 @@
1
- # coding: utf-8
2
-
3
- require 'test_helper'
4
-
5
- class Thinreports::Core::Shape::Basic::TestBlockFormat < Minitest::Test
6
- include Thinreports::TestHelper
7
-
8
- BLOCK_FORMAT = {
9
- 'value' => 'default value',
10
- 'x' => 100.0,
11
- 'y' => 200.0,
12
- 'width' => 300.0,
13
- 'height' => 400.0
14
- }
15
-
16
- Basic = Thinreports::Core::Shape::Basic
17
-
18
- def test_attribute_readers
19
- format = Basic::BlockFormat.new(BLOCK_FORMAT)
20
-
21
- assert_equal 'default value', format.value
22
- end
23
- end
@@ -1,29 +0,0 @@
1
- # coding: utf-8
2
-
3
- require 'test_helper'
4
-
5
- class Thinreports::Core::Shape::Basic::TestBlockInterface < Minitest::Test
6
- include Thinreports::TestHelper
7
-
8
- Basic = Thinreports::Core::Shape::Basic
9
-
10
- def setup
11
- report = Thinreports::Report.new layout: layout_file.path
12
- parent = report.start_new_page
13
-
14
- format = Basic::BlockFormat.new({})
15
- internal = Basic::BlockInternal.new parent, format
16
-
17
- @interface = Basic::BlockInterface.new parent, format, internal
18
- end
19
-
20
- def test_value_should_work_as_reader_with_no_arguments
21
- @interface.internal.write_value('new value')
22
- assert_equal @interface.value, 'new value'
23
- end
24
-
25
- def test_value_should_work_as_writer_with_arguments
26
- @interface.value('new value')
27
- assert_equal @interface.internal.read_value, 'new value'
28
- end
29
- end
@@ -1,55 +0,0 @@
1
- # coding: utf-8
2
-
3
- require 'test_helper'
4
-
5
- class Thinreports::Core::Shape::Basic::TestBlockInternal < Minitest::Test
6
- include Thinreports::TestHelper
7
-
8
- Basic = Thinreports::Core::Shape::Basic
9
-
10
- def test_read_value_should_return_value_from_format
11
- internal = init_internal('value' => 'default value')
12
- assert_equal internal.read_value, 'default value'
13
- end
14
-
15
- def test_read_value_should_return_value_from_state_with_value_key
16
- internal = init_internal
17
- internal.states[:value] = 'new value'
18
- assert_equal internal.read_value, 'new value'
19
- end
20
-
21
- def test_real_value_should_return_the_same_value_as_a_read_value_method
22
- internal = init_internal
23
- internal.states[:value] = 'foo'
24
- assert_same internal.real_value, internal.read_value
25
- end
26
-
27
- def test_write_value_should_save_value_to_states_store_as_value
28
- internal = init_internal
29
- internal.write_value('new value')
30
- assert_equal internal.states[:value], 'new value'
31
- end
32
-
33
- def test_type_of_asker_should_return_true_when_given_the_block_value
34
- assert_equal init_internal.type_of?(:block), true
35
- end
36
-
37
- def test_value_should_works_the_same_as_read_value_method
38
- internal = init_internal
39
- internal.write_value('new value')
40
- assert_same internal.read_value, internal.value
41
- end
42
-
43
- def test_type_of_asker_should_return_false_otherwise
44
- assert_equal %w( image-block text-block text list ).all? {|t| !init_internal.type_of?(t)}, true
45
- end
46
-
47
- private
48
-
49
- def init_internal(format = {})
50
- report = Thinreports::Report.new layout: layout_file.path
51
- parent = report.start_new_page
52
-
53
- Basic::BlockInternal.new(parent, Basic::BlockFormat.new(format))
54
- end
55
- end
@@ -1,37 +0,0 @@
1
- # coding: utf-8
2
-
3
- require 'test_helper'
4
-
5
- class Thinreports::Core::Shape::Basic::TestFormat < Minitest::Test
6
- include Thinreports::TestHelper
7
-
8
- RECT_FORMAT = {
9
- "id" => "",
10
- "type" => "rect",
11
- "x" => 100.0,
12
- "y" => 200.0,
13
- "width" => 300.0,
14
- "height" => 400.0,
15
- "description" => "Description for rect",
16
- "display" => true,
17
- "rx" => 1.0,
18
- "ry" => 1.0,
19
- "style" => {
20
- "border-width" => 1,
21
- "border-color" => "#000000",
22
- "border-style" => "dashed",
23
- "fill-color" => "#ff0000"
24
- }
25
- }
26
-
27
- Basic = Thinreports::Core::Shape::Basic
28
-
29
- def test_attribute_readers
30
- format = Basic::Format.new(RECT_FORMAT)
31
-
32
- assert_equal '', format.id
33
- assert_equal 'rect', format.type
34
- assert_equal RECT_FORMAT['style'], format.style
35
- assert_equal true, format.display?
36
- end
37
- end
@@ -1,108 +0,0 @@
1
- # coding: utf-8
2
-
3
- require 'test_helper'
4
-
5
- class Thinreports::Core::Shape::Basic::TestInterface < Minitest::Test
6
- include Thinreports::TestHelper
7
-
8
- # Alias
9
- Basic = Thinreports::Core::Shape::Basic
10
-
11
- def create_interface(format_config = {})
12
- report = Thinreports::Report.new layout: layout_file.path
13
- parent = report.start_new_page
14
-
15
- Basic::Interface.new parent, Basic::Format.new(format_config)
16
- end
17
-
18
- def test_id_should_return_id_with_reference_to_internal
19
- basic = create_interface('id' => 'foo')
20
- assert_equal basic.id, basic.internal.id
21
- end
22
-
23
- def test_id_should_return_cloned_id
24
- basic = create_interface('id' => 'basic-id')
25
- refute_same basic.id, basic.internal.id
26
- end
27
-
28
- def test_type_should_operate_as_delegator_of_internal
29
- basic = create_interface('type' => 'rect')
30
- assert_same basic.type, basic.internal.type
31
- end
32
-
33
- def test_visible_asker_should_return_result_with_reference_to_style_of_internal
34
- basic = create_interface('display' => false)
35
- assert_equal basic.visible?, basic.internal.style.visible
36
- end
37
-
38
- def test_visible_should_properly_set_visibility_to_style_of_internal
39
- basic = create_interface('display' => false)
40
- basic.visible(true)
41
-
42
- assert_equal basic.internal.style.visible, true
43
- end
44
-
45
- def test_style_should_operate_as_reader_when_one_argument_is_given
46
- basic = create_interface('style' => { 'fill-color' => '#ff0000' })
47
-
48
- assert_equal basic.style(:fill_color), '#ff0000'
49
- end
50
-
51
- def test_style_should_operate_as_writer_when_two_arguments_are_given
52
- basic = create_interface
53
- basic.style(:border_color, '#000000')
54
-
55
- assert_equal basic.style(:border_color), '#000000'
56
- end
57
-
58
- def test_style_should_operate_as_writer_for_border_style_when_three_arguments_are_given
59
- basic = create_interface
60
- basic.style(:border, 1, '#ffffff')
61
-
62
- assert_equal basic.style(:border), [1, '#ffffff']
63
- end
64
-
65
- def test_style_should_return_self_when_two_arguments_are_given
66
- assert_instance_of Basic::Interface, create_interface.style(:border_width, 1)
67
- end
68
-
69
- def test_style_should_return_self_when_three_arguments_are_given
70
- assert_instance_of Basic::Interface, create_interface.style(:border, 1, '#000000')
71
- end
72
-
73
- def test_styles_should_properly_set_the_specified_styles_as_Hash
74
- basic = create_interface
75
- basic.styles(fill_color: '#ff0000',
76
- border_color: '#000000',
77
- border_width: 5,
78
- visible: false)
79
-
80
- assert_equal [basic.style(:fill_color),
81
- basic.style(:border_color),
82
- basic.style(:border_width),
83
- basic.style(:visible)],
84
- ['#ff0000', '#000000', 5, false]
85
- end
86
-
87
- def test_hide_should_properly_set_false_to_visibility
88
- basic = create_interface
89
- basic.hide
90
-
91
- assert_equal basic.visible?, false
92
- end
93
-
94
- def test_hide_should_return_self
95
- assert_instance_of Basic::Interface, create_interface.hide
96
- end
97
-
98
- def test_show_should_properly_set_true_to_visibility
99
- basic = create_interface
100
- basic.show
101
-
102
- assert_equal basic.visible?, true
103
- end
104
-
105
- def test_show_should_return_self
106
- assert_instance_of Basic::Interface, create_interface.show
107
- end
108
- end
@@ -1,55 +0,0 @@
1
- # coding: utf-8
2
-
3
- require 'test_helper'
4
-
5
- class Thinreports::Core::Shape::Basic::TestInternal < Minitest::Test
6
- include Thinreports::TestHelper
7
-
8
- # Alias
9
- Basic = Thinreports::Core::Shape::Basic
10
-
11
- def create_internal(format_config = {})
12
- report = Thinreports::Report.new layout: layout_file.path
13
-
14
- Basic::Internal.new report.page, Basic::Format.new(format_config)
15
- end
16
-
17
- def test_id_should_operate_as_delegator_of_format
18
- basic = create_internal('id' => 'basic-id')
19
- assert_same basic.id, basic.format.id
20
- end
21
-
22
- def test_type_should_operate_as_delegator_of_format
23
- basic = create_internal('type' => 'ellipse')
24
- assert_same basic.type, basic.format.type
25
- end
26
-
27
- def test_style_should_return_instance_of_StyleGraphic
28
- assert_instance_of Thinreports::Core::Shape::Style::Graphic,
29
- create_internal.style
30
- end
31
-
32
- def test_type_of_asker_should_already_return_true_when_the_specified_type_is_basic
33
- assert_equal create_internal.type_of?(:basic), true
34
- end
35
-
36
- def test_type_of_asker_should_return_true_when_the_specified_type_equal_self_type_name
37
- result = []
38
-
39
- result << create_internal('type' => 'rect').type_of?('rect')
40
- result << create_internal('type' => 'ellipse').type_of?('ellipse')
41
- result << create_internal('type' => 'line').type_of?('line')
42
- result << create_internal('type' => 'image').type_of?('image')
43
-
44
- assert_equal result.all?, true
45
- end
46
-
47
- def test_identifier
48
- basic = create_internal 'id' => 'basic-id'
49
-
50
- assert_equal 'basic-id', basic.identifier
51
-
52
- basic.style.stubs(identifier: 'style-identifier')
53
- assert_equal basic.identifier, 'basic-idstyle-identifier'
54
- end
55
- end
@@ -1,24 +0,0 @@
1
- # coding: utf-8
2
-
3
- require 'test_helper'
4
-
5
- class Thinreports::Core::Shape::ImageBlock::TestInterface < Minitest::Test
6
- include Thinreports::TestHelper
7
-
8
- ImageBlock = Thinreports::Core::Shape::ImageBlock
9
-
10
- def setup
11
- @report = Thinreports::Report.new layout: layout_file.path
12
- @page = @report.start_new_page
13
- end
14
-
15
- def test_src
16
- @page.item(:image_block).src('/path/to/image.png')
17
- assert_equal '/path/to/image.png', @page.item(:image_block).src
18
- end
19
-
20
- def test_src=
21
- @page.item(:image_block).src = '/path/to/image.png'
22
- assert_equal '/path/to/image.png', @page.item(:image_block).src
23
- end
24
- end
@@ -1,31 +0,0 @@
1
- # coding: utf-8
2
-
3
- require 'test_helper'
4
-
5
- class Thinreports::Core::Shape::ImageBlock::TestInternal < Minitest::Test
6
- include Thinreports::TestHelper
7
-
8
- ImageBlock = Thinreports::Core::Shape::ImageBlock
9
-
10
- def test_src_should_return_the_same_value_as_value_method
11
- internal = create_internal
12
- internal.write_value('/path/to/image.png')
13
-
14
- assert_same internal.src, internal.read_value
15
- end
16
-
17
- def test_type_of_asker_should_return_true_when_iblock_value_is_given
18
- assert_equal create_internal.type_of?('image-block'), true
19
- end
20
-
21
- def test_type_of_asker_should_return_true_when_block_value_is_given
22
- assert_equal create_internal.type_of?(:block), true
23
- end
24
-
25
- def create_internal
26
- report = Thinreports::Report.new layout: layout_file.path
27
- parent = report.start_new_page
28
-
29
- ImageBlock::Internal.new parent, ImageBlock::Format.new({})
30
- end
31
- end