thinreports 0.7.6 → 0.8.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 (277) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +3 -5
  3. data/.travis.yml +8 -4
  4. data/CHANGELOG.md +220 -0
  5. data/Gemfile +2 -9
  6. data/MIT-LICENSE +1 -1
  7. data/README.md +286 -0
  8. data/Rakefile +38 -8
  9. data/examples/character_spacing/character_spacing.rb +8 -0
  10. data/examples/character_spacing/character_spacing.tlf +1 -0
  11. data/examples/dynamic_image/dynamic_image.rb +31 -0
  12. data/examples/dynamic_image/dynamic_image.tlf +1 -0
  13. data/examples/dynamic_style/dynamic_style.rb +150 -0
  14. data/examples/dynamic_style/dynamic_style.tlf +1 -0
  15. data/examples/dynamic_style/dynamic_style_in_list.tlf +1 -0
  16. data/examples/eudc/eudc.rb +20 -0
  17. data/examples/eudc/eudc.tlf +1 -0
  18. data/examples/helper.rb +50 -0
  19. data/examples/hidden_shapes/hidden_shapes.rb +9 -0
  20. data/examples/hidden_shapes/hidden_shapes.tlf +1 -0
  21. data/examples/list_events/list_events.rb +59 -0
  22. data/examples/list_events/list_events_0_7_7.tlf +1 -0
  23. data/examples/list_events/list_events_0_8.tlf +1 -0
  24. data/examples/list_manual_generation/list_manual_generation.rb +22 -0
  25. data/examples/list_manual_generation/list_manual_generation.tlf +1 -0
  26. data/examples/list_page_number/list_page_number.rb +17 -0
  27. data/examples/list_page_number/list_page_number.tlf +1 -0
  28. data/examples/page_number/page_number.rb +33 -0
  29. data/examples/page_number/page_number.tlf +1 -0
  30. data/examples/password_setting/password_setting.rb +10 -0
  31. data/examples/password_setting/password_setting.tlf +1 -0
  32. data/examples/report_callbacks/report_callbacks.rb +31 -0
  33. data/examples/report_callbacks/report_callbacks.tlf +1 -0
  34. data/examples/single_line_tblock/single_line_tblock.rb +13 -0
  35. data/examples/single_line_tblock/single_line_tblock.tlf +1 -0
  36. data/examples/tblock_overflow/tblock_overflow.rb +20 -0
  37. data/examples/tblock_overflow/tblock_overflow.tlf +1 -0
  38. data/examples/tblock_styles/font_size.tlf +1 -0
  39. data/examples/tblock_styles/tblock_styles.rb +43 -0
  40. data/examples/tblock_styles/tblock_styles.tlf +1 -0
  41. data/examples/text_align/text_align.rb +8 -0
  42. data/examples/text_align/text_align.tlf +1 -0
  43. data/examples/typeB_page_size/B4_ISO.tlf +1 -0
  44. data/examples/typeB_page_size/B4_JIS.tlf +1 -0
  45. data/examples/typeB_page_size/typeB_page_size.rb +17 -0
  46. data/examples/word_wrap/word_wrap.rb +26 -0
  47. data/examples/word_wrap/word_wrap.tlf +1 -0
  48. data/lib/thinreports/config.rb +30 -10
  49. data/lib/thinreports/core/errors.rb +23 -20
  50. data/lib/thinreports/core/events.rb +18 -19
  51. data/lib/thinreports/core/format/base.rb +20 -25
  52. data/lib/thinreports/core/format/builder.rb +19 -27
  53. data/lib/thinreports/core/shape/base/interface.rb +15 -15
  54. data/lib/thinreports/core/shape/base/internal.rb +15 -20
  55. data/lib/thinreports/core/shape/base.rb +4 -5
  56. data/lib/thinreports/core/shape/basic/block_format.rb +3 -4
  57. data/lib/thinreports/core/shape/basic/block_interface.rb +9 -4
  58. data/lib/thinreports/core/shape/basic/block_internal.rb +9 -10
  59. data/lib/thinreports/core/shape/basic/format.rb +11 -10
  60. data/lib/thinreports/core/shape/basic/interface.rb +3 -3
  61. data/lib/thinreports/core/shape/basic/internal.rb +9 -6
  62. data/lib/thinreports/core/shape/basic.rb +1 -1
  63. data/lib/thinreports/core/shape/image_block/format.rb +5 -6
  64. data/lib/thinreports/core/shape/image_block/interface.rb +9 -7
  65. data/lib/thinreports/core/shape/image_block/internal.rb +5 -6
  66. data/lib/thinreports/core/shape/image_block.rb +1 -1
  67. data/lib/thinreports/core/shape/list/configuration.rb +37 -16
  68. data/lib/thinreports/core/shape/list/events.rb +11 -11
  69. data/lib/thinreports/core/shape/list/format.rb +27 -28
  70. data/lib/thinreports/core/shape/list/manager.rb +135 -95
  71. data/lib/thinreports/core/shape/list/page.rb +57 -51
  72. data/lib/thinreports/core/shape/list/page_state.rb +19 -17
  73. data/lib/thinreports/core/shape/list/section_format.rb +14 -15
  74. data/lib/thinreports/core/shape/list/section_interface.rb +15 -16
  75. data/lib/thinreports/core/shape/list/section_internal.rb +7 -8
  76. data/lib/thinreports/core/shape/list/store.rb +10 -11
  77. data/lib/thinreports/core/shape/list.rb +1 -1
  78. data/lib/thinreports/core/shape/manager/format.rb +10 -11
  79. data/lib/thinreports/core/shape/manager/internal.rb +22 -21
  80. data/lib/thinreports/core/shape/manager/target.rb +63 -34
  81. data/lib/thinreports/core/shape/manager.rb +1 -1
  82. data/lib/thinreports/core/shape/page_number/format.rb +25 -0
  83. data/lib/thinreports/core/shape/page_number/interface.rb +27 -0
  84. data/lib/thinreports/core/shape/page_number/internal.rb +57 -0
  85. data/lib/thinreports/core/shape/page_number.rb +15 -0
  86. data/lib/thinreports/core/shape/style/base.rb +29 -29
  87. data/lib/thinreports/core/shape/style/basic.rb +1 -1
  88. data/lib/thinreports/core/shape/style/graphic.rb +10 -25
  89. data/lib/thinreports/core/shape/style/text.rb +41 -31
  90. data/lib/thinreports/core/shape/style.rb +1 -1
  91. data/lib/thinreports/core/shape/text/format.rb +8 -9
  92. data/lib/thinreports/core/shape/text/interface.rb +2 -2
  93. data/lib/thinreports/core/shape/text/internal.rb +6 -7
  94. data/lib/thinreports/core/shape/text.rb +1 -1
  95. data/lib/thinreports/core/shape/text_block/format.rb +17 -17
  96. data/lib/thinreports/core/shape/text_block/formatter/basic.rb +13 -12
  97. data/lib/thinreports/core/shape/text_block/formatter/datetime.rb +8 -9
  98. data/lib/thinreports/core/shape/text_block/formatter/number.rb +11 -12
  99. data/lib/thinreports/core/shape/text_block/formatter/padding.rb +9 -32
  100. data/lib/thinreports/core/shape/text_block/formatter.rb +7 -8
  101. data/lib/thinreports/core/shape/text_block/interface.rb +2 -2
  102. data/lib/thinreports/core/shape/text_block/internal.rb +19 -20
  103. data/lib/thinreports/core/shape/text_block.rb +1 -1
  104. data/lib/thinreports/core/shape.rb +11 -13
  105. data/lib/thinreports/core/utils.rb +33 -32
  106. data/lib/thinreports/generator/base.rb +15 -24
  107. data/lib/thinreports/generator/configuration.rb +10 -9
  108. data/lib/thinreports/generator/pdf/configuration.rb +11 -6
  109. data/lib/thinreports/generator/pdf/document/draw_shape.rb +41 -32
  110. data/lib/thinreports/generator/pdf/document/font.rb +53 -44
  111. data/lib/thinreports/generator/pdf/document/graphics/attributes.rb +34 -25
  112. data/lib/thinreports/generator/pdf/document/graphics/basic.rb +25 -25
  113. data/lib/thinreports/generator/pdf/document/graphics/image.rb +15 -15
  114. data/lib/thinreports/generator/pdf/document/graphics/text.rb +43 -41
  115. data/lib/thinreports/generator/pdf/document/graphics.rb +8 -9
  116. data/lib/thinreports/generator/pdf/document/page.rb +37 -23
  117. data/lib/thinreports/generator/pdf/document/parse_color.rb +9 -10
  118. data/lib/thinreports/generator/pdf/document/parse_svg.rb +14 -15
  119. data/lib/thinreports/generator/pdf/document.rb +28 -28
  120. data/lib/thinreports/generator/pdf/drawer/base.rb +16 -22
  121. data/lib/thinreports/generator/pdf/drawer/list.rb +39 -21
  122. data/lib/thinreports/generator/pdf/drawer/list_section.rb +17 -18
  123. data/lib/thinreports/generator/pdf/drawer/page.rb +37 -26
  124. data/lib/thinreports/generator/pdf/prawn_ext.rb +18 -17
  125. data/lib/thinreports/generator/pdf.rb +28 -31
  126. data/lib/thinreports/generator.rb +6 -8
  127. data/lib/thinreports/layout/base.rb +24 -36
  128. data/lib/thinreports/layout/configuration.rb +11 -9
  129. data/lib/thinreports/layout/format.rb +26 -31
  130. data/lib/thinreports/layout/version.rb +8 -9
  131. data/lib/thinreports/layout.rb +2 -2
  132. data/lib/thinreports/report/base.rb +117 -109
  133. data/lib/thinreports/report/events.rb +5 -5
  134. data/lib/thinreports/report/internal.rb +48 -38
  135. data/lib/thinreports/{core → report}/page.rb +42 -32
  136. data/lib/thinreports/report.rb +10 -14
  137. data/lib/thinreports/version.rb +2 -3
  138. data/lib/thinreports.rb +14 -2
  139. data/test/data/font.ttf +0 -0
  140. data/test/data/layout_block.tlf +1 -0
  141. data/test/data/layout_list.tlf +1 -0
  142. data/test/data/layout_list_noheader.tlf +1 -0
  143. data/test/data/layout_text1.tlf +1 -0
  144. data/test/data/layout_text2.tlf +1 -0
  145. data/test/test_helper.rb +74 -0
  146. data/test/tmp/.gitkeep +0 -0
  147. data/test/unit/core/format/test_base.rb +14 -14
  148. data/test/unit/core/format/test_builder.rb +20 -25
  149. data/test/unit/core/shape/base/test_internal.rb +34 -37
  150. data/test/unit/core/shape/basic/test_basic_format.rb +4 -4
  151. data/test/unit/core/shape/basic/test_basic_interface.rb +15 -13
  152. data/test/unit/core/shape/basic/test_basic_internal.rb +19 -16
  153. data/test/unit/core/shape/basic/test_format.rb +4 -4
  154. data/test/unit/core/shape/basic/test_interface.rb +36 -46
  155. data/test/unit/core/shape/basic/test_internal.rb +29 -18
  156. data/test/unit/core/shape/image_block/test_format.rb +5 -5
  157. data/test/unit/core/shape/image_block/test_interface.rb +17 -16
  158. data/test/unit/core/shape/image_block/test_internal.rb +19 -16
  159. data/test/unit/core/shape/list/test_configuration.rb +50 -33
  160. data/test/unit/core/shape/list/test_events.rb +7 -7
  161. data/test/unit/core/shape/list/test_format.rb +16 -18
  162. data/test/unit/core/shape/list/test_manager.rb +15 -5
  163. data/test/unit/core/shape/list/test_page.rb +80 -22
  164. data/test/unit/core/shape/list/test_page_state.rb +13 -13
  165. data/test/unit/core/shape/list/test_section_format.rb +16 -17
  166. data/test/unit/core/shape/list/test_section_interface.rb +30 -22
  167. data/test/unit/core/shape/list/test_section_internal.rb +21 -19
  168. data/test/unit/core/shape/list/test_store.rb +7 -7
  169. data/test/unit/core/shape/manager/test_format.rb +11 -15
  170. data/test/unit/core/shape/manager/test_internal.rb +9 -9
  171. data/test/unit/core/shape/manager/test_target.rb +85 -57
  172. data/test/unit/core/shape/page_number/test_format.rb +73 -0
  173. data/test/unit/core/shape/page_number/test_interface.rb +33 -0
  174. data/test/unit/core/shape/page_number/test_internal.rb +81 -0
  175. data/test/unit/core/shape/styles/test_base.rb +9 -9
  176. data/test/unit/core/shape/styles/test_basic.rb +5 -5
  177. data/test/unit/core/shape/styles/test_graphic.rb +19 -33
  178. data/test/unit/core/shape/styles/test_text.rb +29 -7
  179. data/test/unit/core/shape/text/test_format.rb +6 -6
  180. data/test/unit/core/shape/text/test_internal.rb +11 -12
  181. data/test/unit/core/shape/text_block/formatter/test_basic.rb +16 -16
  182. data/test/unit/core/shape/text_block/formatter/test_datetime.rb +22 -20
  183. data/test/unit/core/shape/text_block/formatter/test_number.rb +34 -34
  184. data/test/unit/core/shape/text_block/formatter/test_padding.rb +44 -44
  185. data/test/unit/core/shape/text_block/test_format.rb +13 -8
  186. data/test/unit/core/shape/text_block/test_formatter.rb +17 -17
  187. data/test/unit/core/shape/text_block/test_interface.rb +37 -20
  188. data/test/unit/core/shape/text_block/test_internal.rb +38 -38
  189. data/test/unit/core/test_events.rb +10 -8
  190. data/test/unit/core/test_shape.rb +11 -7
  191. data/test/unit/core/test_utils.rb +68 -0
  192. data/test/unit/generator/pdf/document/graphics/test_attributes.rb +10 -4
  193. data/test/unit/generator/pdf/document/graphics/test_text.rb +60 -53
  194. data/test/unit/generator/pdf/document/test_draw_shape.rb +14 -6
  195. data/test/unit/generator/pdf/document/test_font.rb +79 -58
  196. data/test/unit/generator/pdf/document/test_graphics.rb +18 -19
  197. data/test/unit/generator/pdf/document/test_page.rb +68 -43
  198. data/test/unit/generator/pdf/document/test_parse_color.rb +5 -5
  199. data/test/unit/generator/pdf/test_configuration.rb +16 -9
  200. data/test/unit/generator/pdf/test_document.rb +8 -16
  201. data/test/unit/generator/test_base.rb +31 -42
  202. data/test/unit/generator/test_configuration.rb +6 -6
  203. data/test/unit/generator/test_pdf.rb +15 -21
  204. data/test/unit/layout/test_base.rb +34 -79
  205. data/test/unit/layout/test_configuration.rb +12 -37
  206. data/test/unit/layout/test_format.rb +36 -39
  207. data/test/unit/layout/test_version.rb +4 -4
  208. data/test/unit/report/test_base.rb +160 -192
  209. data/test/unit/report/test_events.rb +4 -4
  210. data/test/unit/report/test_internal.rb +102 -82
  211. data/test/unit/test_config.rb +31 -12
  212. data/test/unit/test_layout.rb +7 -7
  213. data/test/unit/test_report.rb +12 -24
  214. data/thinreports.gemspec +23 -26
  215. metadata +118 -181
  216. data/.yardopts +0 -1
  217. data/LICENSE +0 -1
  218. data/README.rdoc +0 -167
  219. data/doc/yardoc_templates/default/layout/html/footer.erb +0 -10
  220. data/lib/thinreports/core/ext/array.rb +0 -19
  221. data/lib/thinreports/core/ext/hash.rb +0 -19
  222. data/lib/thinreports/core/ext/object.rb +0 -25
  223. data/lib/thinreports/core/ext.rb +0 -5
  224. data/lib/thinreports/core/format.rb +0 -14
  225. data/lib/thinreports/core/ordered_hash.rb +0 -39
  226. data/lib/thinreports/core.rb +0 -20
  227. data/lib/thinreports/generator/pdf/drawer.rb +0 -16
  228. data/tasks/doc.rake +0 -13
  229. data/tasks/test.rake +0 -56
  230. data/test/benchmark/basic_estimate.tlf +0 -1
  231. data/test/benchmark/bench_basic_estimate.rb +0 -95
  232. data/test/case/character_spacing/character_spacing.rb +0 -7
  233. data/test/case/character_spacing/character_spacing.tlf +0 -1
  234. data/test/case/dynamic_image/dynamic_image.rb +0 -41
  235. data/test/case/dynamic_image/dynamic_image.tlf +0 -1
  236. data/test/case/dynamic_style/dynamic_style.rb +0 -154
  237. data/test/case/dynamic_style/dynamic_style.tlf +0 -1
  238. data/test/case/dynamic_style/dynamic_style_in_list.tlf +0 -1
  239. data/test/case/eudc/eudc.rb +0 -20
  240. data/test/case/eudc/eudc.tlf +0 -1
  241. data/test/case/helper.rb +0 -29
  242. data/test/case/hidden_shapes/hidden_shapes.rb +0 -13
  243. data/test/case/hidden_shapes/hidden_shapes.tlf +0 -1
  244. data/test/case/list_events/list_events.rb +0 -32
  245. data/test/case/list_events/list_events.tlf +0 -1
  246. data/test/case/list_header_inheriting/list_header_inheriting.rb +0 -17
  247. data/test/case/list_header_inheriting/list_header_inheriting.tlf +0 -1
  248. data/test/case/list_manual_generation/list_manual_generation.rb +0 -22
  249. data/test/case/list_manual_generation/list_manual_generation.tlf +0 -1
  250. data/test/case/single_line_tblock/single_line_tblock.rb +0 -15
  251. data/test/case/single_line_tblock/single_line_tblock.tlf +0 -1
  252. data/test/case/tblock_overflow/tblock_overflow.rb +0 -20
  253. data/test/case/tblock_overflow/tblock_overflow.tlf +0 -1
  254. data/test/case/tblock_styles/tblock_styles.rb +0 -27
  255. data/test/case/tblock_styles/tblock_styles.tlf +0 -1
  256. data/test/case/text_align/text_align.rb +0 -9
  257. data/test/case/text_align/text_align.tlf +0 -1
  258. data/test/unit/core/ext/array_spec.rb +0 -29
  259. data/test/unit/core/ext/hash_spec.rb +0 -29
  260. data/test/unit/core/ext/object_spec.rb +0 -30
  261. data/test/unit/core/ordered_hash_spec.rb +0 -51
  262. data/test/unit/core/shape/base/test_interface.rb +0 -52
  263. data/test/unit/core/utils_spec.rb +0 -56
  264. data/test/unit/data/basic_layout1.tlf +0 -1
  265. data/test/unit/data/basic_layout2.tlf +0 -1
  266. data/test/unit/data/basic_list_layout.tlf +0 -1
  267. data/test/unit/data/basic_list_noheader_layout.tlf +0 -1
  268. data/test/unit/helper.rb +0 -65
  269. /data/{test/case → examples}/dynamic_image/img200x100.png +0 -0
  270. /data/{test/case → examples}/dynamic_image/img50x50.png +0 -0
  271. /data/{test/case → examples}/dynamic_style/image.png +0 -0
  272. /data/{test/case → examples}/eudc/eudc.ttf +0 -0
  273. /data/{resources/fonts → fonts}/IPA_Font_License_Agreement_v1.0.txt +0 -0
  274. /data/{resources/fonts → fonts}/ipag.ttf +0 -0
  275. /data/{resources/fonts → fonts}/ipagp.ttf +0 -0
  276. /data/{resources/fonts → fonts}/ipam.ttf +0 -0
  277. /data/{resources/fonts → fonts}/ipamp.ttf +0 -0
@@ -1,24 +1,24 @@
1
1
  # coding: utf-8
2
2
 
3
- require 'test/unit/helper'
3
+ require 'test_helper'
4
+
5
+ class Thinreports::Core::Shape::TextBlock::Formatter::TestBasic < Minitest::Test
6
+ include Thinreports::TestHelper
4
7
 
5
- class ThinReports::Core::Shape::TextBlock::Formatter::TestBasic < MiniTest::Unit::TestCase
6
- include ThinReports::TestHelpers
7
-
8
8
  # Alias
9
- Formatter = ThinReports::Core::Shape::TextBlock::Formatter::Basic
10
-
9
+ Formatter = Thinreports::Core::Shape::TextBlock::Formatter::Basic
10
+
11
11
  def test_apply_simple_format
12
- format = flexmock(:format_base => 'Hello {value}!')
13
-
14
- assert_equal Formatter.new(format).apply('ThinReports'),
15
- 'Hello ThinReports!'
12
+ format = stub(format_base: 'Hello {value}!')
13
+
14
+ assert_equal Formatter.new(format).apply('Thinreports'),
15
+ 'Hello Thinreports!'
16
16
  end
17
-
17
+
18
18
  def test_apply_multiple_format
19
- format = flexmock(:format_base => 'Hello {value}! And good bye {value}.')
20
-
21
- assert_equal Formatter.new(format).apply('ThinReports'),
22
- 'Hello ThinReports! And good bye ThinReports.'
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
23
  end
24
- end
24
+ end
@@ -1,47 +1,49 @@
1
1
  # coding: utf-8
2
2
 
3
- require 'test/unit/helper'
3
+ require 'test_helper'
4
4
 
5
- class ThinReports::Core::Shape::TextBlock::Formatter::TestDatetime < MiniTest::Unit::TestCase
6
- include ThinReports::TestHelpers
5
+ class Thinreports::Core::Shape::TextBlock::Formatter::TestDatetime < Minitest::Test
6
+ include Thinreports::TestHelper
7
7
 
8
- # Alias
9
- Formatter = ThinReports::Core::Shape::TextBlock::Formatter::Datetime
8
+ # Aliases
9
+ TextBlock = Thinreports::Core::Shape::TextBlock
10
+ Formatter = TextBlock::Formatter::Datetime
10
11
 
11
12
  def setup
12
13
  @datetime_format = '%Y/%m/%d %H:%M:%S'
13
- @time = Time.now
14
-
15
- @format = flexmock(:format_base => '',
16
- :format_datetime_format => @datetime_format)
14
+ @time = Time.now
17
15
  end
18
16
 
17
+ def text_block_format(format = {})
18
+ default = {'base' => '', 'datetime' => {'format' => '%Y/%m/%d %H:%M:%S'}}
19
+ TextBlock::Format.new('format' => default.merge(format))
20
+ end
21
+
19
22
  def test_apply_datetime_format_without_basic_format
20
- formatter = Formatter.new(@format)
23
+ formatter = Formatter.new(text_block_format)
21
24
 
22
- assert_equal formatter.apply(@time), @time.strftime(@datetime_format)
25
+ assert_equal @time.strftime(@datetime_format),
26
+ formatter.apply(@time)
23
27
  end
24
28
 
25
29
  def test_apply_datetime_format_with_basic_format
26
- # Partial mock
27
- format = flexmock(@format, :format_base => 'Now: {value}')
28
-
29
- formatter = Formatter.new(format)
30
+ formatter = Formatter.new(text_block_format('base' => 'Now: {value}'))
30
31
 
31
- assert_equal formatter.apply(@time),
32
- "Now: #{@time.strftime(@datetime_format)}"
32
+ assert_equal "Now: #{@time.strftime(@datetime_format)}",
33
+ formatter.apply(@time)
34
+
33
35
  end
34
36
 
35
37
  def test_not_apply_datetime_format_and_return_raw_value
36
38
  # When value is invalid
37
- formatter = Formatter.new(@format)
39
+ formatter = Formatter.new(text_block_format)
38
40
 
39
41
  assert_same formatter.apply(val = 'invalid value'), val
40
42
  assert_same formatter.apply(val = 123456), val
41
43
 
42
44
  # When format is empty
43
- format = flexmock(@format, :format_datetime_format => '')
45
+ formatter = Formatter.new(text_block_format('datetime' => {'format' => ''}))
44
46
 
45
47
  assert_same formatter.apply(@time), @time
46
48
  end
47
- end
49
+ end
@@ -1,24 +1,24 @@
1
1
  # coding: utf-8
2
2
 
3
- require 'test/unit/helper'
3
+ require 'test_helper'
4
+
5
+ class Thinreports::Core::Shape::TextBlock::Formatter::TestNumber < Minitest::Test
6
+ include Thinreports::TestHelper
4
7
 
5
- class ThinReports::Core::Shape::TextBlock::Formatter::TestNumber < MiniTest::Unit::TestCase
6
- include ThinReports::TestHelpers
7
-
8
8
  # Alias
9
- Formatter = ThinReports::Core::Shape::TextBlock::Formatter::Number
10
-
9
+ Formatter = Thinreports::Core::Shape::TextBlock::Formatter::Number
10
+
11
11
  def init_formatter(expect_formats)
12
- format = flexmock({:format_base => '',
13
- :format_number_precision => nil,
14
- :format_number_delimiter => nil}.merge(expect_formats))
12
+ format = stub({ format_base: '',
13
+ format_number_precision: nil,
14
+ format_number_delimiter: nil }.merge(expect_formats))
15
15
  Formatter.new(format)
16
16
  end
17
-
17
+
18
18
  def test_apply_precision_formats
19
19
  # When precision is 2
20
- formatter = init_formatter(:format_number_precision => 2)
21
-
20
+ formatter = init_formatter(format_number_precision: 2)
21
+
22
22
  assert_equal formatter.apply(1.005), '1.01'
23
23
  assert_equal formatter.apply(1.004), '1.00'
24
24
  assert_equal formatter.apply(1), '1.00'
@@ -28,49 +28,49 @@ class ThinReports::Core::Shape::TextBlock::Formatter::TestNumber < MiniTest::Uni
28
28
  assert_equal formatter.apply('9'), '9.00'
29
29
  # Cannot apply, Return the raw value
30
30
  assert_equal formatter.apply('invalid value'), 'invalid value'
31
-
31
+
32
32
  # When precision is 0
33
- formatter = init_formatter(:format_number_precision => 0)
34
-
33
+ formatter = init_formatter(format_number_precision: 0)
34
+
35
35
  assert_equal formatter.apply(1.5), '2'
36
36
  end
37
-
37
+
38
38
  def test_apply_precision_format_with_basic_format
39
- formatter = init_formatter(:format_base => '$ {value}',
40
- :format_number_precision => 0)
41
-
39
+ formatter = init_formatter(format_base: '$ {value}',
40
+ format_number_precision: 0)
41
+
42
42
  assert_equal formatter.apply(199.5), '$ 200'
43
43
  end
44
-
44
+
45
45
  def test_apply_delimiter_formats
46
46
  # When delimiter is ','
47
- formatter = init_formatter(:format_number_delimiter => ',')
48
-
47
+ formatter = init_formatter(format_number_delimiter: ',')
48
+
49
49
  assert_equal formatter.apply(1000000), '1,000,000'
50
50
  assert_equal formatter.apply(-1000000), '-1,000,000'
51
51
  assert_equal formatter.apply('1000.0'), '1,000.0'
52
52
  assert_equal formatter.apply('-1000.0'), '-1,000.0'
53
53
  # Cannot apply, Return the raw value
54
54
  assert_equal formatter.apply('invalid value'), 'invalid value'
55
-
55
+
56
56
  # When delimiter is whitespace
57
- formatter = init_formatter(:format_number_delimiter => ' ')
58
-
57
+ formatter = init_formatter(format_number_delimiter: ' ')
58
+
59
59
  assert_equal formatter.apply(99999), '99 999'
60
60
  end
61
-
61
+
62
62
  def test_apply_delimiter_format_with_basic_format
63
- formatter = init_formatter(:format_base => '¥{value}',
64
- :format_number_delimiter => ',')
65
-
63
+ formatter = init_formatter(format_base: '¥{value}',
64
+ format_number_delimiter: ',')
65
+
66
66
  assert_equal formatter.apply(199800), '¥199,800'
67
67
  end
68
-
68
+
69
69
  def test_apply_all_format
70
- formatter = init_formatter(:format_base => '-- {value} --',
71
- :format_number_delimiter => ',',
72
- :format_number_precision => 2)
70
+ formatter = init_formatter(format_base: '-- {value} --',
71
+ format_number_delimiter: ',',
72
+ format_number_precision: 2)
73
73
 
74
74
  assert_equal formatter.apply(95618.88567), '-- 95,618.89 --'
75
75
  end
76
- end
76
+ end
@@ -1,77 +1,77 @@
1
1
  # coding: utf-8
2
2
 
3
- require 'test/unit/helper'
3
+ require 'test_helper'
4
+
5
+ class Thinreports::Core::Shape::TextBlock::Formatter::TestPadding < Minitest::Test
6
+ include Thinreports::TestHelper
4
7
 
5
- class ThinReports::Core::Shape::TextBlock::Formatter::TestPadding < MiniTest::Unit::TestCase
6
- include ThinReports::TestHelpers
7
-
8
8
  # Alias
9
- Formatter = ThinReports::Core::Shape::TextBlock::Formatter::Padding
10
-
9
+ Formatter = Thinreports::Core::Shape::TextBlock::Formatter::Padding
10
+
11
11
  def init_formatter(expect_formats)
12
- format = flexmock({:format_base => nil,
13
- :format_padding_length => 0,
14
- :format_padding_char => nil,
15
- :format_padding_rdir? => false}.merge(expect_formats))
12
+ format = stub({ format_base: nil,
13
+ format_padding_length: 0,
14
+ format_padding_char: nil,
15
+ format_padding_rdir?: false }.merge(expect_formats))
16
16
  Formatter.new(format)
17
17
  end
18
-
18
+
19
19
  def test_apply_padding_formats_with_left_direction
20
- formatter = init_formatter(:format_padding_length => 5,
21
- :format_padding_char => '0')
22
-
20
+ formatter = init_formatter(format_padding_length: 5,
21
+ format_padding_char: '0')
22
+
23
23
  assert_equal formatter.apply(1), '00001'
24
24
  assert_equal formatter.apply('日本語'), '00日本語'
25
25
  end
26
-
26
+
27
27
  def test_apply_padding_formats_should_not_apply_when_character_length_is_short
28
- formatter = init_formatter(:format_padding_length => 5,
29
- :format_padding_char => '0')
30
-
28
+ formatter = init_formatter(format_padding_length: 5,
29
+ format_padding_char: '0')
30
+
31
31
  assert_equal formatter.apply('1234567'), '1234567'
32
32
  end
33
-
33
+
34
34
  def test_apply_padding_formats_with_right_direction
35
- formatter = init_formatter(:format_padding_length => 5,
36
- :format_padding_char => '0',
35
+ formatter = init_formatter(format_padding_length: 5,
36
+ format_padding_char: '0',
37
37
  :format_padding_rdir? => true)
38
-
38
+
39
39
  assert_equal formatter.apply(123), '12300'
40
40
  end
41
-
41
+
42
42
  def test_apply_padding_format_with_basic_format
43
- formatter = init_formatter(:format_base => '[{value}]',
44
- :format_padding_length => 10,
45
- :format_padding_char => ' ')
43
+ formatter = init_formatter(format_base: '[{value}]',
44
+ format_padding_length: 10,
45
+ format_padding_char: ' ')
46
46
 
47
47
  assert_equal formatter.apply('ABC'), '[ ABC]'
48
48
  end
49
-
49
+
50
50
  def test_return_raw_value_when_length_is_0
51
- formatter = init_formatter(:format_padding_length => 0,
52
- :format_padding_char => '0')
53
-
51
+ formatter = init_formatter(format_padding_length: 0,
52
+ format_padding_char: '0')
53
+
54
54
  assert_same formatter.apply(v = 123), v
55
-
55
+
56
56
  # But apply only basic format if have basic-format.
57
- formatter = init_formatter(:format_base => '<{value}>',
58
- :format_padding_length => 0,
59
- :format_padding_char => '0')
60
-
57
+ formatter = init_formatter(format_base: '<{value}>',
58
+ format_padding_length: 0,
59
+ format_padding_char: '0')
60
+
61
61
  assert_equal formatter.apply(123), '<123>'
62
62
  end
63
-
63
+
64
64
  def test_return_raw_value_when_char_is_empty
65
- formatter = init_formatter(:format_padding_length => 10,
66
- :format_padding_char => '')
67
-
65
+ formatter = init_formatter(format_padding_length: 10,
66
+ format_padding_char: '')
67
+
68
68
  assert_same formatter.apply(v = '1'), v
69
69
 
70
70
  # But apply only basic format if have basic-format.
71
- formatter = init_formatter(:format_base => '<{value}>',
72
- :format_padding_length => 0,
73
- :format_padding_char => '0')
74
-
71
+ formatter = init_formatter(format_base: '<{value}>',
72
+ format_padding_length: 0,
73
+ format_padding_char: '0')
74
+
75
75
  assert_equal formatter.apply('1'), '<1>'
76
76
  end
77
- end
77
+ end
@@ -1,9 +1,9 @@
1
1
  # coding: utf-8
2
2
 
3
- require 'test/unit/helper'
3
+ require 'test_helper'
4
4
 
5
- class ThinReports::Core::Shape::TextBlock::TestFormat < MiniTest::Unit::TestCase
6
- include ThinReports::TestHelpers
5
+ class Thinreports::Core::Shape::TextBlock::TestFormat < Minitest::Test
6
+ include Thinreports::TestHelper
7
7
 
8
8
  TEST_TBLOCK_FORMAT = {
9
9
  "type" => "s-tblock",
@@ -11,6 +11,7 @@ class ThinReports::Core::Shape::TextBlock::TestFormat < MiniTest::Unit::TestCase
11
11
  "display" => "true",
12
12
  "multiple" => "false",
13
13
  "overflow" => "truncate",
14
+ "word-wrap" => "break-word",
14
15
  "box" => {
15
16
  "x" => 100.0,
16
17
  "y" => 100.0,
@@ -24,7 +25,7 @@ class ThinReports::Core::Shape::TextBlock::TestFormat < MiniTest::Unit::TestCase
24
25
  "delimiter" => ",",
25
26
  "precision" => 1
26
27
  }
27
- },
28
+ },
28
29
  "value" => "",
29
30
  "ref-id" => "",
30
31
  "svg" => {
@@ -37,7 +38,7 @@ class ThinReports::Core::Shape::TextBlock::TestFormat < MiniTest::Unit::TestCase
37
38
  "fill" => "#000000",
38
39
  "fill-opacity" => "1",
39
40
  "font-size" => "12",
40
- "font-family" => "\uFF2D\uFF33 \u30B4\u30B7\u30C3\u30AF",
41
+ "font-family" => "Helvetica",
41
42
  "font-weight" => "bold",
42
43
  "font-style" => "normal",
43
44
  "text-decoration" => "none",
@@ -51,10 +52,14 @@ class ThinReports::Core::Shape::TextBlock::TestFormat < MiniTest::Unit::TestCase
51
52
  rescue => e
52
53
  flunk exception_details(e, 'Building failed.')
53
54
  end
54
-
55
+
55
56
  def test_value_reader_via_TEST_TBLOCK_FORMAT
56
57
  assert_equal format(TEST_TBLOCK_FORMAT).value, ''
57
58
  end
59
+
60
+ def test_word_wrap_reader_via_TEST_TBLOCK_FORMAT
61
+ assert_equal format(TEST_TBLOCK_FORMAT).word_wrap, 'break-word'
62
+ end
58
63
 
59
64
  def test_ref_id_reader_via_TEST_TBLOCK_FORMAT
60
65
  assert_equal format(TEST_TBLOCK_FORMAT).ref_id, ''
@@ -156,10 +161,10 @@ class ThinReports::Core::Shape::TextBlock::TestFormat < MiniTest::Unit::TestCase
156
161
  end
157
162
 
158
163
  def build_format
159
- ThinReports::Core::Shape::TextBlock::Format.build(TEST_TBLOCK_FORMAT)
164
+ Thinreports::Core::Shape::TextBlock::Format.build(TEST_TBLOCK_FORMAT)
160
165
  end
161
166
 
162
167
  def format(data)
163
- ThinReports::Core::Shape::TextBlock::Format.new(data)
168
+ Thinreports::Core::Shape::TextBlock::Format.new(data)
164
169
  end
165
170
  end
@@ -1,28 +1,28 @@
1
1
  # coding: utf-8
2
2
 
3
- require 'test/unit/helper'
3
+ require 'test_helper'
4
+
5
+ class Thinreports::Core::Shape::TextBlock::TestFormatter < Minitest::Test
6
+ include Thinreports::TestHelper
4
7
 
5
- class ThinReports::Core::Shape::TextBlock::TestFormatter < MiniTest::Unit::TestCase
6
- include ThinReports::TestHelpers
7
-
8
8
  # Alias
9
- Formatter = ThinReports::Core::Shape::TextBlock::Formatter
10
-
9
+ Formatter = Thinreports::Core::Shape::TextBlock::Formatter
10
+
11
11
  def test_initialize_formatter_by_type
12
12
  assert_instance_of Formatter::Basic,
13
- Formatter.setup( flexmock(:format_type => '') )
14
-
13
+ Formatter.setup( stub(format_type: '') )
14
+
15
15
  assert_instance_of Formatter::Number,
16
- Formatter.setup( flexmock(:format_type => 'number') )
17
-
16
+ Formatter.setup( stub(format_type: 'number') )
17
+
18
18
  assert_instance_of Formatter::Datetime,
19
- Formatter.setup( flexmock(:format_type => 'datetime') )
20
-
19
+ Formatter.setup( stub(format_type: 'datetime') )
20
+
21
21
  assert_instance_of Formatter::Padding,
22
- Formatter.setup( flexmock(:format_type => 'padding') )
23
-
24
- assert_raises ThinReports::Errors::UnknownFormatterType do
25
- Formatter.setup( flexmock(:format_type => 'unknown') )
22
+ Formatter.setup( stub(format_type: 'padding') )
23
+
24
+ assert_raises Thinreports::Errors::UnknownFormatterType do
25
+ Formatter.setup( stub(format_type: 'unknown') )
26
26
  end
27
27
  end
28
- end
28
+ end
@@ -1,46 +1,63 @@
1
1
  # coding: utf-8
2
2
 
3
- require 'test/unit/helper'
3
+ require 'test_helper'
4
+
5
+ class Thinreports::Core::Shape::TextBlock::TestInterface < Minitest::Test
6
+ include Thinreports::TestHelper
4
7
 
5
- class ThinReports::Core::Shape::TextBlock::TestInterface < MiniTest::Unit::TestCase
6
- include ThinReports::TestHelpers
7
-
8
8
  # Alias
9
- TextBlock = ThinReports::Core::Shape::TextBlock
10
-
9
+ TextBlock = Thinreports::Core::Shape::TextBlock
10
+
11
11
  def create_interface(format_config = {})
12
- TextBlock::Interface.new(flexmock('parent'),
13
- TextBlock::Format.new(format_config))
12
+ report = new_report 'layout_text1'
13
+ parent = report.start_new_page
14
+
15
+ TextBlock::Interface.new parent, TextBlock::Format.new(format_config)
14
16
  end
15
-
17
+
16
18
  def test_format_enabled_asker_should_operate_as_delegator_of_internal
17
19
  tblock = create_interface('format' => {'type' => 'datetime'})
18
20
  assert_equal tblock.format_enabled?, tblock.internal.format_enabled?
19
21
  end
20
-
22
+
21
23
  def test_format_enabled_should_properly_set_value_to_internal
22
24
  tblock = create_interface('format' => {'type' => 'number'})
23
25
  tblock.format_enabled(false)
24
-
26
+
25
27
  assert_equal tblock.internal.format_enabled?, false
26
28
  end
27
-
29
+
28
30
  def test_set_should_properly_set_a_value
29
31
  tblock = create_interface
30
- tblock.set(1000, :visible => false)
31
-
32
+ tblock.set(1000, visible: false)
33
+
32
34
  assert_equal tblock.value, 1000
33
35
  end
34
-
36
+
35
37
  def test_set_should_properly_set_styles
36
38
  tblock = create_interface
37
- tblock.set(1000, :color => '#ff0000',
38
- :bold => true,
39
- :italic => true)
40
-
39
+ tblock.set(1000, color: '#ff0000',
40
+ bold: true,
41
+ italic: true)
42
+
41
43
  assert_equal [tblock.style(:color),
42
44
  tblock.style(:bold),
43
45
  tblock.style(:italic)],
44
46
  ['#ff0000', true, true]
45
47
  end
46
- end
48
+
49
+ def test_value=
50
+ report = new_report 'layout_block.tlf'
51
+ page = report.start_new_page
52
+
53
+ page.item(:text_block1).value = 'foo'
54
+ assert_equal 'foo', page.item(:text_block1).value
55
+
56
+ page.item(:text_block1).value += 'bar'
57
+ assert_equal 'foobar', page.item(:text_block1).value
58
+
59
+ page.item(:text_block1).value = 1000
60
+ page.item(:text_block1).value += 999
61
+ assert_equal 1999, page.item(:text_block1).value
62
+ end
63
+ end