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,191 +0,0 @@
1
- # coding: utf-8
2
-
3
- require 'test_helper'
4
-
5
- class Thinreports::Core::Shape::Style::TestBase < Minitest::Test
6
- include Thinreports::TestHelper
7
-
8
- # Alias
9
- Style = Thinreports::Core::Shape::Style::Base
10
-
11
- def create_basic_format(base_style = {})
12
- Thinreports::Core::Shape::Basic::Format.new('style' => base_style)
13
- end
14
-
15
- def create_style(base_style = {})
16
- Style.new(create_basic_format(base_style))
17
- end
18
-
19
- def create_new_style(base_style = {}, &block)
20
- klass = ::Class.new(Style, &block)
21
- klass.new(create_basic_format(base_style))
22
- end
23
-
24
- def test_self_style_reader_should_properly_define_a_reading_method
25
- style = create_new_style {
26
- style_reader :hoge, 'foo'
27
- }
28
- assert_respond_to style, :hoge
29
- end
30
-
31
- def test_self_style_writer_should_properly_define_a_writing_method
32
- style = create_new_style {
33
- style_writer :hoge, 'foo'
34
- }
35
- assert_respond_to style, :hoge=
36
- end
37
-
38
- def test_self_style_accessor_should_properly_defines_reading_and_writing_methods
39
- style = create_new_style {
40
- style_accessor :hoge, 'foo'
41
- }
42
- assert_respond_to style, :hoge
43
- assert_respond_to style, :hoge=
44
- end
45
-
46
- def test_self_style_accessible_should_add_specified_styles_to_the_accessible_styles_variable
47
- style = create_new_style {
48
- style_accessible :hoge
49
- style_accessible :foo, :bar
50
- }
51
- assert_equal style.class.accessible_styles, [:hoge, :foo, :bar]
52
- end
53
-
54
- def test_self_accessible_styles_variable_should_not_be_shared_each_SubClasses
55
- style1 = create_new_style {
56
- style_accessible :hoge, :foo
57
- }
58
- assert_equal style1.class.accessible_styles, [:hoge, :foo]
59
- end
60
-
61
- def test_self_accessible_styles_variable_should_be_inherited_to_SubClass
62
- super_klass = ::Class.new(Style) {
63
- style_accessible :hoge, :foo
64
- }
65
- sub_klass = ::Class.new(super_klass)
66
-
67
- assert_equal sub_klass.accessible_styles, super_klass.accessible_styles
68
- end
69
-
70
- def test_self_accessible_styles_variables_of_SubClass_should_not_interfere_mutually
71
- super_klass = ::Class.new(Style) {
72
- style_accessible :foo, :bar
73
- }
74
- sub_klass1 = ::Class.new(super_klass)
75
- sub_klass2 = ::Class.new(super_klass)
76
-
77
- refute_same sub_klass1.accessible_styles, sub_klass2.accessible_styles
78
- end
79
-
80
- def test_read_internal_style_should_return_style_of_styles_when_style_is_found_in_styles
81
- style = create_style('hoge' => 'base_style')
82
- style.write_internal_style('hoge', 'new_style')
83
-
84
- assert_equal style.read_internal_style('hoge'), 'new_style'
85
- end
86
-
87
- def test_read_internal_style_should_return_style_of_base_when_style_is_not_found_in_styles
88
- style = create_style('hoge' => 'base_style')
89
- assert_equal style.read_internal_style('hoge'), 'base_style'
90
- end
91
-
92
- def test_write_internal_style_should_properly_set_style_to_the_styles
93
- style = create_style({})
94
- style.write_internal_style('hoge', 'hoge_style')
95
-
96
- assert_equal style.styles['hoge'], 'hoge_style'
97
- end
98
-
99
- def test_has_style_asker_should_return_true_when_specified_style_method_is_accessible
100
- style = create_new_style {
101
- style_accessible :hoge, :foo
102
- }
103
- assert_equal style.has_style?(:foo), true
104
- end
105
-
106
- def test_has_style_asker_should_return_false_when_specified_style_method_is_not_accessible
107
- style = create_new_style {
108
- style_accessible :foo
109
- }
110
- assert_equal style.has_style?(:hoge), false
111
- end
112
-
113
- def test_verify_style_value_should_raise_when_value_is_not_included_in_list
114
- assert_raises ArgumentError do
115
- create_style.send(:verify_style_value, :invalid, [:hoge, :foo, :bar])
116
- end
117
- end
118
-
119
- def test_verify_style_value_should_not_raise_when_value_is_found_in_list
120
- create_style.send(:verify_style_value, :valid, [:hoge, :valid, :foo])
121
- rescue ArgumentError
122
- flunk
123
- end
124
-
125
- def test_reader_method_caller_should_properly_delegate_to_real_method
126
- style = create_new_style('hoge_style' => 'hoge_style_value') {
127
- style_accessible :hoge
128
- style_reader :hoge, 'hoge_style'
129
- }
130
- assert_equal style[:hoge], 'hoge_style_value'
131
- end
132
-
133
- def test_writer_method_caller_should_properly_delegate_to_real_method
134
- style = create_new_style {
135
- style_accessible :hoge
136
- style_accessor :hoge, 'hoge_style'
137
- }
138
- style[:hoge] = 'hoge_style_value'
139
- assert_equal style.hoge, 'hoge_style_value'
140
- end
141
-
142
- def test_reader_method_caller_should_raise_when_style_is_not_accessible
143
- assert_raises Thinreports::Errors::UnknownShapeStyleName do
144
- create_new_style[:unknown]
145
- end
146
- end
147
-
148
- def test_writer_method_caller_should_raise_when_style_is_not_accessible
149
- assert_raises Thinreports::Errors::UnknownShapeStyleName do
150
- create_new_style[:unknown] = 'value'
151
- end
152
- end
153
-
154
- def test_copy_should_return_the_instance_of_the_same_class_as_itself
155
- style = create_style
156
- assert_instance_of Style, style.copy
157
- end
158
-
159
- def test_styles_of_copied_style_should_not_same_the_styles_of_original
160
- style = create_style
161
- refute_same style.styles, style.copy.styles
162
- end
163
-
164
- def test_styles_of_copied_style_should_equal_the_style_of_original
165
- style = create_style
166
- style.write_internal_style('foo', 'foo_value')
167
- assert_equal style.styles['foo'], style.copy.styles['foo']
168
- end
169
-
170
- def test_identifier_should_return_empty_string_when_the_style_is_not_set
171
- style = create_style
172
- assert_equal style.identifier, ''
173
- end
174
-
175
- def test_identifier_should_return_the_same_as_hash_value_of_styles_when_style_is_set_something
176
- style = create_style
177
- style.write_internal_style('foo', 'foo_value')
178
-
179
- assert_equal style.identifier, style.styles.hash.to_s
180
- end
181
-
182
- def test_finalized_styles
183
- base_styles = { 'foo' => 'default foo', 'bar' => 'default bar' }
184
-
185
- style = create_style(base_styles)
186
- style.write_internal_style('foo', 'new foo')
187
-
188
- assert_equal({ 'foo' => 'new foo', 'bar' => 'default bar' }, style.finalized_styles)
189
- assert_same style.finalized_styles, style.finalized_styles
190
- end
191
- end
@@ -1,24 +0,0 @@
1
- # coding: utf-8
2
-
3
- require 'test_helper'
4
-
5
- class Thinreports::Core::Shape::Style::TestBasic < Minitest::Test
6
- include Thinreports::TestHelper
7
-
8
- def create_basic_style(format_config = {})
9
- format = Thinreports::Core::Shape::Basic::Format.new(format_config)
10
- Thinreports::Core::Shape::Style::Basic.new(format)
11
- end
12
-
13
- def test_visible_should_return_visibility_of_format_as_default
14
- style = create_basic_style('display' => false)
15
- assert_equal style.visible, false
16
- end
17
-
18
- def test_visible_should_properly_set_visibility
19
- style = create_basic_style('display' => false)
20
- style.visible = true
21
-
22
- assert_equal style.visible, true
23
- end
24
- end
@@ -1,50 +0,0 @@
1
- # coding: utf-8
2
-
3
- require 'test_helper'
4
-
5
- class Thinreports::Core::Shape::Style::TestGraphic < Minitest::Test
6
- include Thinreports::TestHelper
7
-
8
- def test_border_color
9
- style = create_graphic_style('border-color' => 'red')
10
- assert_equal 'red', style.border_color
11
-
12
- style.border_color = '#ff0000'
13
- assert_equal '#ff0000', style.styles['border-color']
14
- assert_equal '#ff0000', style.border_color
15
- end
16
-
17
- def test_border_width
18
- style = create_graphic_style('border-width' => 2.0)
19
- assert_equal 2.0, style.border_width
20
-
21
- style.border_width = 10.9
22
- assert_equal 10.9, style.styles['border-width']
23
- assert_equal 10.9, style.border_width
24
- end
25
-
26
- def test_fill_color
27
- style = create_graphic_style('fill-color' => '#0000ff')
28
- assert_equal '#0000ff', style.fill_color
29
-
30
- style.fill_color = 'blue'
31
- assert_equal 'blue', style.styles['fill-color']
32
- assert_equal 'blue', style.fill_color
33
- end
34
-
35
- def test_border
36
- style = create_graphic_style('border-color' => 'red', 'border-width' => 1)
37
- assert_equal [1, 'red'], style.border
38
-
39
- style.border = [2.0, '#ff0000']
40
- assert_equal 2.0, style.styles['border-width']
41
- assert_equal '#ff0000', style.styles['border-color']
42
- end
43
-
44
- private
45
-
46
- def create_graphic_style(default_style = {})
47
- format = Thinreports::Core::Shape::Basic::Format.new('style' => default_style)
48
- Thinreports::Core::Shape::Style::Graphic.new(format)
49
- end
50
- end
@@ -1,97 +0,0 @@
1
- # coding: utf-8
2
-
3
- require 'test_helper'
4
-
5
- class Thinreports::Core::Shape::Style::TestText < Minitest::Test
6
- include Thinreports::TestHelper
7
-
8
- def test_color
9
- style = create_text_style('color' => 'red')
10
- assert_equal 'red', style.color
11
-
12
- style.color = 'blue'
13
- assert_equal 'blue', style.styles['color']
14
- assert_equal 'blue', style.color
15
- end
16
-
17
- def test_font_size
18
- style = create_text_style('font-size' => 18.0)
19
- assert_equal 18.0, style.font_size
20
-
21
- style.font_size = 19
22
- assert_equal 19, style.styles['font-size']
23
- assert_equal 19, style.font_size
24
- end
25
-
26
- def test_initialize_font_style
27
- default_font_style = ['bold', 'italic']
28
- style = create_text_style('font-style' => default_font_style)
29
-
30
- refute_same default_font_style, style.styles['font-style']
31
- assert_equal default_font_style, style.styles['font-style']
32
- end
33
-
34
- def test_bold
35
- style = create_text_style('font-style' => ['bold'])
36
- assert_equal true, style.bold
37
-
38
- style.bold = false
39
- assert_equal [], style.styles['font-style']
40
- assert_equal false, style.bold
41
- end
42
-
43
- def test_italic
44
- style = create_text_style('font-style' => ['italic'])
45
- assert_equal true, style.italic
46
-
47
- style.italic = false
48
- assert_equal [], style.styles['font-style']
49
- assert_equal false, style.italic
50
- end
51
-
52
- def test_underline
53
- style = create_text_style('font-style' => ['underline'])
54
- assert_equal true, style.underline
55
-
56
- style.underline = false
57
- assert_equal [], style.styles['font-style']
58
- assert_equal false, style.underline
59
- end
60
-
61
- def test_linethrough
62
- style = create_text_style('font-style' => ['linethrough'])
63
- assert_equal true, style.linethrough
64
-
65
- style.linethrough = false
66
- assert_equal [], style.styles['font-style']
67
- assert_equal false, style.linethrough
68
- end
69
-
70
- def test_align
71
- style = create_text_style('text-align' => 'center')
72
- assert_equal :center, style.align
73
-
74
- style.align = :right
75
- assert_equal 'right', style.styles['text-align']
76
- assert_equal :right, style.align
77
- end
78
-
79
- def test_valign
80
- style = create_text_style('vertical-align' => '')
81
- assert_equal :top, style.valign
82
-
83
- style.valign = :middle
84
- assert_equal 'middle', style.styles['vertical-align']
85
- assert_equal :middle, style.valign
86
-
87
- assert_deprecated { style.valign = :center }
88
- assert_equal :middle, style.valign
89
- end
90
-
91
- private
92
-
93
- def create_text_style(default_style = {})
94
- format = Thinreports::Core::Shape::Text::Format.new('style' => default_style)
95
- Thinreports::Core::Shape::Style::Text.new(format)
96
- end
97
- end
@@ -1,44 +0,0 @@
1
- # coding: utf-8
2
-
3
- require 'test_helper'
4
-
5
- class Thinreports::Core::Shape::Text::TestFormat < Minitest::Test
6
- include Thinreports::TestHelper
7
-
8
- TEXT_FORMAT = {
9
- 'id' => 'text_1',
10
- 'type' => 'text',
11
- 'x' => 100.0,
12
- 'y' => 200.0,
13
- 'width' => 300.0,
14
- 'height' => 400.0,
15
- 'description' => 'Description for item',
16
- 'display' => true,
17
- 'texts' => [
18
- '1st text line',
19
- '2nd text line'
20
- ],
21
- 'valign' => 'top',
22
- 'style' => {
23
- 'font-family' => ['Arial'],
24
- 'font-size' => 12,
25
- 'color' => '#000000',
26
- 'font-style' => ['bold', 'italic', 'linethrough', 'underline'],
27
- 'text-align' => 'left',
28
- 'vertical-align' => 'top',
29
- 'line-height' => 60,
30
- 'line-height-ratio' => 1.5,
31
- 'letter-spacing' => 'normal'
32
- }
33
- }
34
-
35
- Text = Thinreports::Core::Shape::Text
36
-
37
- def test_attribute_readers
38
- format = Text::Format.new(TEXT_FORMAT)
39
-
40
- assert_equal TEXT_FORMAT['texts'], format.texts
41
- assert_equal 'top', format.valign
42
- assert_equal 60, format.line_height
43
- end
44
- end
@@ -1,20 +0,0 @@
1
- # coding: utf-8
2
-
3
- require 'test_helper'
4
-
5
- class Thinreports::Core::Shape::Text::TestInternal < Minitest::Test
6
- include Thinreports::TestHelper
7
-
8
- Text = Thinreports::Core::Shape::Text
9
-
10
- def create_internal(format_config = {})
11
- report = Thinreports::Report.new layout: layout_file.path
12
- Text::Internal.new(report.start_new_page, Text::Format.new(format_config))
13
- end
14
-
15
- def test_type_of?
16
- assert create_internal.type_of?('text'), true
17
- refute create_internal.type_of?(:basic), false
18
- end
19
-
20
- end
@@ -1,24 +0,0 @@
1
- # coding: utf-8
2
-
3
- require 'test_helper'
4
-
5
- class Thinreports::Core::Shape::TextBlock::Formatter::TestBasic < Minitest::Test
6
- include Thinreports::TestHelper
7
-
8
- # Alias
9
- Formatter = Thinreports::Core::Shape::TextBlock::Formatter::Basic
10
-
11
- def test_apply_simple_format
12
- format = stub(format_base: 'Hello {value}!')
13
-
14
- assert_equal Formatter.new(format).apply('Thinreports'),
15
- 'Hello Thinreports!'
16
- end
17
-
18
- def test_apply_multiple_format
19
- format = stub(format_base: 'Hello {value}! And good bye {value}.')
20
-
21
- assert_equal Formatter.new(format).apply('Thinreports'),
22
- 'Hello Thinreports! And good bye Thinreports.'
23
- end
24
- end