thinreports 0.8.2 → 0.9.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 (170) hide show
  1. checksums.yaml +4 -4
  2. data/.github/CONTRIBUTING.md +2 -0
  3. data/.travis.yml +3 -3
  4. data/CHANGELOG.md +98 -1
  5. data/README.md +0 -9
  6. data/Rakefile +1 -2
  7. data/examples/character_spacing/character_spacing.tlf +293 -1
  8. data/examples/dynamic_image/dynamic_image.tlf +661 -1
  9. data/examples/dynamic_style/dynamic_style.rb +4 -4
  10. data/examples/dynamic_style/dynamic_style.tlf +1835 -1
  11. data/examples/dynamic_style/dynamic_style_in_list.tlf +344 -1
  12. data/examples/eudc/eudc.tlf +180 -1
  13. data/examples/hidden_shapes/hidden_shapes.tlf +449 -1
  14. data/examples/list_events/list_events.rb +1 -28
  15. data/examples/list_events/list_events.tlf +361 -0
  16. data/examples/list_manual_generation/list_manual_generation.tlf +132 -1
  17. data/examples/list_page_number/list_page_number.tlf +254 -1
  18. data/examples/page_number/page_number.tlf +215 -1
  19. data/examples/palleted_png/palleted_png.rb +2 -0
  20. data/examples/palleted_png/palleted_png.tlf +47 -1
  21. data/examples/password_setting/password_setting.tlf +45 -1
  22. data/examples/report_callbacks/report_callbacks.rb +1 -18
  23. data/examples/report_callbacks/report_callbacks.tlf +147 -1
  24. data/examples/single_line_tblock/single_line_tblock.tlf +170 -1
  25. data/examples/tblock_overflow/tblock_overflow.tlf +538 -1
  26. data/examples/tblock_styles/font_size.tlf +383 -1
  27. data/examples/tblock_styles/tblock_styles.tlf +889 -1
  28. data/examples/text_align/text_align.tlf +241 -1
  29. data/examples/typeB_page_size/B4_ISO.tlf +45 -1
  30. data/examples/typeB_page_size/B4_JIS.tlf +45 -1
  31. data/examples/word_wrap/word_wrap.tlf +297 -1
  32. data/lib/thinreports.rb +0 -1
  33. data/lib/thinreports/config.rb +3 -0
  34. data/lib/thinreports/core/errors.rb +0 -3
  35. data/lib/thinreports/core/format/base.rb +4 -4
  36. data/lib/thinreports/core/shape.rb +1 -9
  37. data/lib/thinreports/core/shape/basic.rb +3 -3
  38. data/lib/thinreports/core/shape/basic/block_format.rb +1 -1
  39. data/lib/thinreports/core/shape/basic/format.rb +2 -14
  40. data/lib/thinreports/core/shape/basic/internal.rb +2 -2
  41. data/lib/thinreports/core/shape/image_block.rb +3 -3
  42. data/lib/thinreports/core/shape/image_block/format.rb +0 -2
  43. data/lib/thinreports/core/shape/image_block/internal.rb +1 -1
  44. data/lib/thinreports/core/shape/list.rb +3 -7
  45. data/lib/thinreports/core/shape/list/format.rb +37 -24
  46. data/lib/thinreports/core/shape/list/manager.rb +1 -36
  47. data/lib/thinreports/core/shape/list/page.rb +0 -15
  48. data/lib/thinreports/core/shape/list/page_state.rb +1 -1
  49. data/lib/thinreports/core/shape/list/section_format.rb +14 -12
  50. data/lib/thinreports/core/shape/list/section_internal.rb +4 -7
  51. data/lib/thinreports/core/shape/manager/format.rb +0 -2
  52. data/lib/thinreports/core/shape/manager/internal.rb +1 -1
  53. data/lib/thinreports/core/shape/page_number.rb +1 -1
  54. data/lib/thinreports/core/shape/page_number/format.rb +9 -6
  55. data/lib/thinreports/core/shape/page_number/interface.rb +1 -1
  56. data/lib/thinreports/core/shape/page_number/internal.rb +2 -6
  57. data/lib/thinreports/core/shape/style/base.rb +11 -13
  58. data/lib/thinreports/core/shape/style/basic.rb +4 -4
  59. data/lib/thinreports/core/shape/style/graphic.rb +4 -10
  60. data/lib/thinreports/core/shape/style/text.rb +36 -69
  61. data/lib/thinreports/core/shape/text.rb +3 -3
  62. data/lib/thinreports/core/shape/text/format.rb +3 -13
  63. data/lib/thinreports/core/shape/text/internal.rb +2 -2
  64. data/lib/thinreports/core/shape/text_block.rb +3 -3
  65. data/lib/thinreports/core/shape/text_block/format.rb +9 -6
  66. data/lib/thinreports/core/shape/text_block/interface.rb +7 -7
  67. data/lib/thinreports/core/shape/text_block/internal.rb +1 -1
  68. data/lib/thinreports/generator/pdf.rb +0 -1
  69. data/lib/thinreports/generator/pdf/document.rb +2 -2
  70. data/lib/thinreports/generator/pdf/document/draw_shape.rb +25 -51
  71. data/lib/thinreports/generator/pdf/document/draw_template_items.rb +66 -0
  72. data/lib/thinreports/generator/pdf/document/font.rb +3 -8
  73. data/lib/thinreports/generator/pdf/document/graphics/attributes.rb +97 -77
  74. data/lib/thinreports/generator/pdf/document/graphics/basic.rb +18 -13
  75. data/lib/thinreports/generator/pdf/document/graphics/image.rb +17 -12
  76. data/lib/thinreports/generator/pdf/document/page.rb +1 -1
  77. data/lib/thinreports/generator/pdf/drawer/list.rb +5 -1
  78. data/lib/thinreports/generator/pdf/drawer/list_section.rb +1 -4
  79. data/lib/thinreports/generator/pdf/drawer/page.rb +9 -9
  80. data/lib/thinreports/layout.rb +3 -3
  81. data/lib/thinreports/layout/base.rb +0 -16
  82. data/lib/thinreports/layout/format.rb +38 -57
  83. data/lib/thinreports/layout/legacy_schema.rb +354 -0
  84. data/lib/thinreports/layout/version.rb +1 -1
  85. data/lib/thinreports/report.rb +0 -1
  86. data/lib/thinreports/report/base.rb +3 -17
  87. data/lib/thinreports/report/internal.rb +13 -55
  88. data/lib/thinreports/report/page.rb +1 -1
  89. data/lib/thinreports/version.rb +1 -1
  90. data/test/data/legacy_layout/all-items.tlf +1 -0
  91. data/test/schema_helper.rb +121 -0
  92. data/test/test_helper.rb +13 -50
  93. data/test/unit/core/format/test_base.rb +35 -31
  94. data/test/unit/core/shape/base/test_internal.rb +1 -1
  95. data/test/unit/core/shape/basic/test_block_format.rb +23 -0
  96. data/test/unit/core/shape/basic/{test_basic_interface.rb → test_block_interface.rb} +1 -1
  97. data/test/unit/core/shape/basic/{test_basic_internal.rb → test_block_internal.rb} +4 -7
  98. data/test/unit/core/shape/basic/test_format.rb +25 -47
  99. data/test/unit/core/shape/basic/test_interface.rb +5 -5
  100. data/test/unit/core/shape/basic/test_internal.rb +6 -11
  101. data/test/unit/core/shape/image_block/test_interface.rb +5 -5
  102. data/test/unit/core/shape/image_block/test_internal.rb +2 -2
  103. data/test/unit/core/shape/list/test_format.rb +86 -44
  104. data/test/unit/core/shape/list/test_manager.rb +10 -65
  105. data/test/unit/core/shape/list/test_page.rb +10 -61
  106. data/test/unit/core/shape/list/test_page_state.rb +1 -1
  107. data/test/unit/core/shape/list/test_section_format.rb +19 -28
  108. data/test/unit/core/shape/list/test_section_interface.rb +14 -6
  109. data/test/unit/core/shape/list/test_section_internal.rb +17 -23
  110. data/test/unit/core/shape/manager/test_format.rb +1 -1
  111. data/test/unit/core/shape/manager/test_internal.rb +59 -98
  112. data/test/unit/core/shape/manager/test_target.rb +21 -30
  113. data/test/unit/core/shape/page_number/test_format.rb +34 -52
  114. data/test/unit/core/shape/page_number/test_interface.rb +1 -1
  115. data/test/unit/core/shape/page_number/test_internal.rb +2 -2
  116. data/test/unit/core/shape/styles/test_base.rb +16 -41
  117. data/test/unit/core/shape/styles/test_basic.rb +7 -7
  118. data/test/unit/core/shape/styles/test_graphic.rb +27 -32
  119. data/test/unit/core/shape/styles/test_text.rb +68 -311
  120. data/test/unit/core/shape/text/test_format.rb +30 -59
  121. data/test/unit/core/shape/text/test_internal.rb +5 -5
  122. data/test/unit/core/shape/text_block/formatter/test_datetime.rb +13 -13
  123. data/test/unit/core/shape/text_block/test_format.rb +145 -146
  124. data/test/unit/core/shape/text_block/test_interface.rb +9 -9
  125. data/test/unit/core/shape/text_block/test_internal.rb +9 -9
  126. data/test/unit/core/test_shape.rb +19 -31
  127. data/test/unit/generator/pdf/document/graphics/test_attributes.rb +112 -122
  128. data/test/unit/generator/pdf/document/graphics/test_basic.rb +45 -0
  129. data/test/unit/generator/pdf/document/graphics/test_image.rb +5 -5
  130. data/test/unit/generator/pdf/document/test_font.rb +4 -10
  131. data/test/unit/generator/pdf/document/test_page.rb +13 -11
  132. data/test/unit/generator/pdf/document/test_parse_color.rb +5 -5
  133. data/test/unit/generator/test_base.rb +5 -5
  134. data/test/unit/generator/test_configuration.rb +4 -8
  135. data/test/unit/generator/test_pdf.rb +3 -2
  136. data/test/unit/layout/test_base.rb +16 -22
  137. data/test/unit/layout/test_format.rb +66 -86
  138. data/test/unit/layout/test_legacy_schema.rb +587 -0
  139. data/test/unit/layout/test_version.rb +20 -20
  140. data/test/unit/report/test_base.rb +32 -45
  141. data/test/unit/report/test_internal.rb +43 -99
  142. data/test/unit/test_config.rb +4 -2
  143. data/test/unit/test_layout.rb +1 -1
  144. metadata +20 -48
  145. data/examples/list_events/list_events_0_7_7.tlf +0 -1
  146. data/examples/list_events/list_events_0_8.tlf +0 -1
  147. data/lib/thinreports/core/events.rb +0 -69
  148. data/lib/thinreports/core/format/builder.rb +0 -62
  149. data/lib/thinreports/core/shape/list/configuration.rb +0 -54
  150. data/lib/thinreports/core/shape/list/events.rb +0 -47
  151. data/lib/thinreports/core/shape/list/store.rb +0 -33
  152. data/lib/thinreports/generator/pdf/configuration.rb +0 -33
  153. data/lib/thinreports/generator/pdf/document/parse_svg.rb +0 -104
  154. data/lib/thinreports/layout/configuration.rb +0 -29
  155. data/test/data/layout_block.tlf +0 -1
  156. data/test/data/layout_list.tlf +0 -1
  157. data/test/data/layout_list_noheader.tlf +0 -1
  158. data/test/data/layout_text1.tlf +0 -1
  159. data/test/data/layout_text2.tlf +0 -1
  160. data/test/unit/core/format/test_builder.rb +0 -109
  161. data/test/unit/core/shape/basic/test_basic_format.rb +0 -30
  162. data/test/unit/core/shape/image_block/test_format.rb +0 -58
  163. data/test/unit/core/shape/list/test_configuration.rb +0 -69
  164. data/test/unit/core/shape/list/test_events.rb +0 -36
  165. data/test/unit/core/shape/list/test_store.rb +0 -41
  166. data/test/unit/core/test_events.rb +0 -93
  167. data/test/unit/generator/pdf/document/test_draw_shape.rb +0 -44
  168. data/test/unit/generator/pdf/test_configuration.rb +0 -31
  169. data/test/unit/layout/test_configuration.rb +0 -21
  170. data/test/unit/report/test_events.rb +0 -22
@@ -4,61 +4,49 @@ require 'test_helper'
4
4
 
5
5
  class Thinreports::Core::TestShape < Minitest::Test
6
6
  include Thinreports::TestHelper
7
-
7
+
8
8
  # Alias
9
9
  ShapeModule = Thinreports::Core::Shape
10
-
10
+
11
11
  def test_find_by_type_should_return_PageNumber
12
- assert_same ShapeModule.find_by_type('s-pageno'), ShapeModule::PageNumber
12
+ assert_same ShapeModule.find_by_type('page-number'), ShapeModule::PageNumber
13
13
  end
14
14
 
15
15
  def test_find_by_type_should_return_ImageBlock
16
- assert_same ShapeModule.find_by_type('s-iblock'), ShapeModule::ImageBlock
16
+ assert_same ShapeModule.find_by_type('image-block'), ShapeModule::ImageBlock
17
17
  end
18
-
18
+
19
19
  def test_find_by_type_should_return_TextBlock
20
- assert_same ShapeModule.find_by_type('s-tblock'), ShapeModule::TextBlock
20
+ assert_same ShapeModule.find_by_type('text-block'), ShapeModule::TextBlock
21
21
  end
22
-
22
+
23
23
  def test_find_by_type_should_return_List
24
- assert_same ShapeModule.find_by_type('s-list'), ShapeModule::List
24
+ assert_same ShapeModule.find_by_type('list'), ShapeModule::List
25
25
  end
26
-
26
+
27
27
  def test_find_by_type_should_return_Text
28
- assert_same ShapeModule.find_by_type('s-text'), ShapeModule::Text
28
+ assert_same ShapeModule.find_by_type('text'), ShapeModule::Text
29
29
  end
30
-
30
+
31
31
  def test_find_by_type_should_return_Basic_as_Image
32
- assert_same ShapeModule.find_by_type('s-image'), ShapeModule::Basic
32
+ assert_same ShapeModule.find_by_type('image'), ShapeModule::Basic
33
33
  end
34
-
34
+
35
35
  def test_find_by_type_should_return_Basic_as_Line
36
- assert_same ShapeModule.find_by_type('s-line'), ShapeModule::Basic
36
+ assert_same ShapeModule.find_by_type('line'), ShapeModule::Basic
37
37
  end
38
-
38
+
39
39
  def test_find_by_type_should_return_Basic_as_Rect
40
- assert_same ShapeModule.find_by_type('s-rect'), ShapeModule::Basic
40
+ assert_same ShapeModule.find_by_type('rect'), ShapeModule::Basic
41
41
  end
42
-
42
+
43
43
  def test_find_by_type_should_return_Basic_as_Ellipse
44
- assert_same ShapeModule.find_by_type('s-ellipse'), ShapeModule::Basic
44
+ assert_same ShapeModule.find_by_type('ellipse'), ShapeModule::Basic
45
45
  end
46
-
46
+
47
47
  def test_find_by_type_should_raise
48
48
  assert_raises Thinreports::Errors::UnknownShapeType do
49
49
  ShapeModule.find_by_type('unknown')
50
50
  end
51
51
  end
52
-
53
- def test_Configuration_should_return_Configuration_of_List
54
- assert_same ShapeModule::Configuration('s-list'),
55
- ShapeModule::List::Configuration
56
- end
57
-
58
- def test_Configuration_should_raise
59
- # When shape don't have a Configuration
60
- assert_raises Thinreports::Errors::NoConfigurationFound do
61
- ShapeModule::Configuration('s-line')
62
- end
63
- end
64
52
  end
@@ -9,137 +9,127 @@ class Thinreports::Generator::PDF::Graphics::TestAttributes < Minitest::Test
9
9
  @pdf = Thinreports::Generator::PDF::Document.new
10
10
  end
11
11
 
12
- def test_common_graphic_attrs_should_return_converted_Hash_as_attributes
13
- result = @pdf.common_graphic_attrs('stroke' => '#ff0000',
14
- 'stroke-width' => '1',
15
- 'fill' => '#0000ff')
16
- assert_equal result.values_at(:stroke, :stroke_width, :fill),
17
- ['#ff0000', '1', '#0000ff']
12
+ def test_build_graphic_attributes
13
+ graphic_styles = {
14
+ 'border-color' => '#ff0000',
15
+ 'border-width' => 2.0,
16
+ 'border-style' => 'solid',
17
+ 'fill-color' => '#000000'
18
+ }
19
+
20
+ assert_equal(
21
+ {
22
+ stroke: '#ff0000',
23
+ stroke_width: 2.0,
24
+ stroke_type: 'solid',
25
+ fill: '#000000'
26
+ },
27
+ @pdf.build_graphic_attributes(graphic_styles)
28
+ )
29
+
30
+ customized_attributes = @pdf.build_graphic_attributes(graphic_styles) { |attrs| attrs[:stroke] = 'blue' }
31
+ assert_equal 'blue', customized_attributes[:stroke]
32
+ end
33
+
34
+ def test_build_text_attributes
35
+ text_styles = {
36
+ 'font-family' => %w( Helvetica IPAMincho ),
37
+ 'font-size' => 18.0,
38
+ 'color' => 'red',
39
+ 'text-align' => 'right',
40
+ 'vertical-align' => 'bottom',
41
+ 'font-style' => %w( bold italic ),
42
+ 'letter-spacing' => 2.0,
43
+ 'line-height' => 20.0,
44
+ 'overflow' => 'expand',
45
+ 'word-wrap' => 'break-word'
46
+ }
47
+
48
+ assert_equal(
49
+ {
50
+ font: 'Helvetica',
51
+ size: 18.0,
52
+ color: 'red',
53
+ align: :right,
54
+ valign: :bottom,
55
+ styles: [:bold, :italic],
56
+ letter_spacing: 2.0,
57
+ line_height: 20.0,
58
+ overflow: :expand,
59
+ word_wrap: :break_word
60
+ },
61
+ @pdf.build_text_attributes(text_styles)
62
+ )
63
+
64
+ customized_attributes = @pdf.build_text_attributes(text_styles) { |attrs| attrs[:color] = 'blue' }
65
+ assert_equal 'blue', customized_attributes[:color]
66
+ end
67
+
68
+ def test_font_family
69
+ assert_equal 'IPAGothic', @pdf.font_family(%w( IPAGothic Helvetica ))
70
+ assert_equal 'Helvetica', @pdf.font_family(%w( Unknown IPAMincho ))
71
+ end
72
+
73
+ def test_font_styles
74
+ assert_equal [:bold, :italic, :underline, :strikethrough],
75
+ @pdf.font_styles(%w( bold italic underline linethrough ))
76
+ end
77
+
78
+ def test_letter_spacing
79
+ assert_equal 2.0, @pdf.letter_spacing(2.0)
80
+ assert_nil @pdf.letter_spacing('')
81
+ assert_nil @pdf.letter_spacing(nil)
82
+ end
83
+
84
+ def test_text_align
85
+ assert_equal :left, @pdf.text_align('left')
86
+ assert_equal :center, @pdf.text_align('center')
87
+ assert_equal :right, @pdf.text_align('right')
88
+ assert_equal :left, @pdf.text_align('')
89
+ assert_equal :left, @pdf.text_align(nil)
90
+ end
91
+
92
+ def test_text_valign
93
+ assert_equal :top, @pdf.text_valign('top')
94
+ assert_equal :center, @pdf.text_valign('middle')
95
+ assert_equal :bottom, @pdf.text_valign('bottom')
96
+ assert_equal :top, @pdf.text_valign('')
97
+ assert_equal :top, @pdf.text_valign(nil)
18
98
  end
19
99
 
20
- def test_common_graphic_attrs_should_return_the_stroke_dash_attribute_into_an_array
21
- result = @pdf.common_graphic_attrs('stroke-dasharray' => '3,5')
22
- assert_equal result[:stroke_dash], %w( 3 5 )
23
- end
24
-
25
- def test_common_graphic_attrs_should_return_nil_as_a_value_of_stroke_dash_attribute_when_value_is_none
26
- result = @pdf.common_graphic_attrs('stroke-dasharray' => 'none')
27
- assert_nil result[:stroke_dash]
28
- end
29
-
30
- def test_common_graphic_attrs_should_return_nil_as_a_value_of_stroke_dash_attribute_when_value_is_empty
31
- result = @pdf.common_graphic_attrs({})
32
- assert_nil result[:stroke_dash]
33
- end
34
-
35
- def test_common_graphic_attrs_should_set_0_as_a_value_of_stroke_width_attribute_when_opacity_is_0
36
- result = @pdf.common_graphic_attrs('stroke-width' => '1',
37
- 'stroke-opacity' => '0')
38
- assert_equal result[:stroke_width], 0
39
- end
40
-
41
- def test_common_graphic_attrs_with_block
42
- result = @pdf.common_graphic_attrs('stroke' => '#ff0000') do |attrs|
43
- attrs[:stroke].gsub!(/0/, 'f')
44
- end
45
- assert_equal result[:stroke], '#ffffff'
46
- end
47
-
48
- def test_text_align_should_return_converted_value_type_of_Symbol
49
- aligns = ['start', 'middle', 'end', nil]
50
- assert_equal aligns.map {|a| @pdf.text_align(a) },
51
- [:left, :center, :right, :left]
52
- end
53
-
54
- def test_text_valign_should_return_converted_value_type_of_Symbol
55
- valigns = ['top', 'center', 'bottom', nil]
56
- assert_equal valigns.map {|a| @pdf.text_valign(a) },
57
- [:top, :center, :bottom, :top]
58
- end
59
-
60
- def test_text_word_wrap
61
- assert_equal @pdf.text_word_wrap('break-word'), :break_word
62
- assert_equal @pdf.text_word_wrap('none'), :none
63
- assert_equal @pdf.text_word_wrap(''), :none
64
- end
65
-
66
- def test_extract_base64_string
67
- base64 = 'data:image/png;base64,iVBORw0KGg1+/AAy/plYlzil'
68
- assert_equal @pdf.extract_base64_string(base64),
69
- ['image/png', 'iVBORw0KGg1+/AAy/plYlzil']
70
- end
71
-
72
- def test_font_styles_should_return_bold_style_when_font_weight_is_bold
73
- assert_equal @pdf.font_styles('font-weight' => 'bold'), [:bold]
74
- end
75
-
76
- def test_font_styles_should_return_italic_style_when_font_style_is_italic
77
- assert_equal @pdf.font_styles('font-style' => 'italic'), [:italic]
78
- end
79
-
80
- def test_font_styles_should_return_underline_and_strikethrough_style_via_text_decoration
81
- assert_equal @pdf.font_styles('text-decoration' => 'underline line-through'),
82
- [:underline, :strikethrough]
83
- end
84
-
85
- def test_common_text_attrs_should_return_the_value_of_font_family_as_font
86
- result = @pdf.common_text_attrs('font-family' => 'IPAMincho')
87
- assert_equal result[:font], 'IPAMincho'
88
- end
89
-
90
- def test_common_text_attrs_should_return_the_value_of_font_size_as_size
91
- result = @pdf.common_text_attrs('font-size' => '12')
92
- assert_equal result[:size], '12'
93
- end
94
-
95
- def test_common_text_attrs_should_return_the_value_of_fill_color_as_color
96
- result = @pdf.common_text_attrs('fill' => '#000000')
97
- assert_equal result[:color], '#000000'
98
- end
99
-
100
- def test_common_text_attrs_should_return_the_value_of_text_anchor_as_align
101
- result = @pdf.common_text_attrs('text-anchor' => 'middle')
102
- assert_equal result[:align], :center
103
- end
104
-
105
- def test_common_text_attrs_should_return_the_value_of_text_styles_as_styles
106
- result = @pdf.common_text_attrs('font-weight' => 'bold')
107
- assert_equal result[:styles], [:bold]
108
- end
109
-
110
- def test_common_text_attrs_should_return_the_value_of_letter_spacing_as_letter_spacing
111
- result = @pdf.common_text_attrs('letter-spacing' => '5')
112
- assert_equal result[:letter_spacing], '5'
113
- end
114
-
115
- def test_common_text_attrs_should_return_the_value_of_kerning_as_letter_spacing
116
- result = @pdf.common_text_attrs('kerning' => '10')
117
- assert_equal result[:letter_spacing], '10'
118
- end
119
-
120
- def test_common_text_attrs_with_block
121
- result = @pdf.common_text_attrs('fill' => '#000000') do |attrs|
122
- attrs[:color].gsub!(/0/, 'f')
123
- end
124
- assert_equal result[:color], '#ffffff'
100
+ def test_text_overflow
101
+ assert_equal :truncate, @pdf.text_overflow('truncate')
102
+ assert_equal :shrink_to_fit, @pdf.text_overflow('fit')
103
+ assert_equal :expand, @pdf.text_overflow('expand')
104
+ assert_equal :truncate, @pdf.text_overflow('')
105
+ assert_equal :truncate, @pdf.text_overflow(nil)
125
106
  end
126
107
 
127
- def test_text_letter_spacing_should_return_raw_value
128
- assert_equal @pdf.text_letter_spacing('10'), '10'
108
+ def test_word_wrap
109
+ assert_equal :break_word, @pdf.word_wrap('break-word')
110
+ assert_equal :none, @pdf.word_wrap('none')
111
+ assert_equal :none, @pdf.word_wrap(nil)
129
112
  end
130
113
 
131
- def test_text_letter_spacing_should_return_nil_when_value_is_normal
132
- assert_nil @pdf.text_letter_spacing('normal')
114
+ def test_line_height
115
+ assert_equal 20.9, @pdf.line_height(20.9)
116
+ assert_nil @pdf.line_height('')
117
+ assert_nil @pdf.line_height(nil)
133
118
  end
134
119
 
135
- def test_text_letter_spacing_should_return_nil_when_value_is_auto
136
- assert_nil @pdf.text_letter_spacing('auto')
120
+ def test_image_position_x
121
+ assert_equal :left, @pdf.image_position_x('left')
122
+ assert_equal :center, @pdf.image_position_x('center')
123
+ assert_equal :right, @pdf.image_position_x('right')
124
+ assert_equal :left, @pdf.image_position_x('')
125
+ assert_equal :left, @pdf.image_position_x(nil)
137
126
  end
138
127
 
139
- def test_text_overflow
140
- assert_equal @pdf.text_overflow('truncate'), :truncate
141
- assert_equal @pdf.text_overflow('fit'), :shrink_to_fit
142
- assert_equal @pdf.text_overflow('expand'), :expand
143
- assert_equal @pdf.text_overflow(''), :truncate
128
+ def test_image_position_y
129
+ assert_equal :top, @pdf.image_position_y('top')
130
+ assert_equal :center, @pdf.image_position_y('middle')
131
+ assert_equal :bottom, @pdf.image_position_y('bottom')
132
+ assert_equal :top, @pdf.image_position_y('')
133
+ assert_equal :top, @pdf.image_position_y(nil)
144
134
  end
145
135
  end
@@ -0,0 +1,45 @@
1
+ # coding: utf-8
2
+ require 'test_helper'
3
+
4
+ class Thinreports::Generator::PDF::Graphics::TestBasic < Minitest::Test
5
+ include Thinreports::TestHelper
6
+
7
+ def setup
8
+ @pdf = Thinreports::Generator::PDF::Document.new
9
+ end
10
+
11
+ def test_build_stroke_styles
12
+ style = {
13
+ stroke: 'red',
14
+ stroke_width: 2.0,
15
+ stroke_type: 'solid'
16
+ }
17
+
18
+ assert_equal(
19
+ {
20
+ color: 'ff0000',
21
+ width: 2.0,
22
+ dash: nil
23
+ },
24
+ @pdf.build_stroke_styles(style)
25
+ )
26
+
27
+ style_stroke_dashed = style.merge(stroke_type: 'dashed')
28
+ assert_equal [2, 2], @pdf.build_stroke_styles(style_stroke_dashed)[:dash]
29
+
30
+ style_stroke_dotted = style.merge(stroke_type: 'dotted')
31
+ assert_equal [1, 2], @pdf.build_stroke_styles(style_stroke_dotted)[:dash]
32
+
33
+ assert_nil @pdf.build_stroke_styles(stroke: nil, stroke_width: 1)
34
+ assert_nil @pdf.build_stroke_styles(stroke: 'none', stroke_width: 1)
35
+
36
+ assert_nil @pdf.build_stroke_styles(stroke_width: nil, stroke: 'red')
37
+ assert_nil @pdf.build_stroke_styles(stroke_width: 0, stroke: 'red')
38
+ end
39
+
40
+ def test_build_fill_styles
41
+ assert_equal({ color: 'ff0000' }, @pdf.build_fill_styles(fill: 'red'))
42
+ assert_nil @pdf.build_fill_styles(fill: nil)
43
+ assert_nil @pdf.build_fill_styles(fill: 'none')
44
+ end
45
+ end
@@ -58,11 +58,11 @@ class Thinreports::Generator::PDF::Graphics::TestImage < Minitest::Test
58
58
 
59
59
  image_id = Digest::MD5.hexdigest(base64_normal_image)
60
60
  assert_includes image_registry.keys, image_id
61
- assert_equal normalized_image_path, image_registry[image_id]
61
+ assert_equal normalized_image_path, image_registry[image_id].path
62
62
 
63
63
  assert equal_image(data_file(image_file), normalized_image_path)
64
64
 
65
- assert_same normalized_image_path,
65
+ assert_equal normalized_image_path,
66
66
  test_image.normalize_image_from_base64(image_type, base64_normal_image)
67
67
  end
68
68
  end
@@ -81,14 +81,14 @@ class Thinreports::Generator::PDF::Graphics::TestImage < Minitest::Test
81
81
 
82
82
  image_id = Digest::MD5.hexdigest(base64_palleted_png)
83
83
  assert_includes image_registry.keys, image_id
84
- assert_equal normalized_image_path, image_registry[image_id]
84
+ assert_equal normalized_image_path, image_registry[image_id].path
85
85
 
86
86
  refute equal_image(data_file('image_pallete_based.png'), normalized_image_path)
87
87
 
88
88
  assert_not_palette_based_transparency_png File.read(normalized_image_path)
89
89
 
90
90
  # 2nd time
91
- assert_same normalized_image_path,
91
+ assert_equal normalized_image_path,
92
92
  test_image.normalize_image_from_base64('image/png', base64_palleted_png)
93
93
  assert_equal 1, test_image.temp_image_registry.count
94
94
  end
@@ -130,7 +130,7 @@ class Thinreports::Generator::PDF::Graphics::TestImage < Minitest::Test
130
130
 
131
131
  # It should never called in 2nd time or subsequent.
132
132
  TestImage::PNGNormalizer.stubs(:load_file).never
133
- assert_same normalized_image_path,
133
+ assert_equal normalized_image_path,
134
134
  test_image.normalize_image_from_file(original_image_path)
135
135
  end
136
136
 
@@ -11,7 +11,6 @@ class Thinreports::Generator::PDF::TestFont < Minitest::Test
11
11
  # Reset font settings
12
12
  Thinreports.configure do |c|
13
13
  c.fallback_fonts = []
14
- c.generator.pdf.eudc_fonts = []
15
14
  end
16
15
  end
17
16
 
@@ -22,7 +21,7 @@ class Thinreports::Generator::PDF::TestFont < Minitest::Test
22
21
  assert_equal font, pdf.font_families[name]
23
22
  end
24
23
 
25
- Font::PRAWN_BUINTIN_FONT_ARIASES.each do |alias_font, original_font|
24
+ Font::PRAWN_BUINTIN_FONT_ALIASES.each do |alias_font, original_font|
26
25
  assert_equal pdf.font_families[alias_font],
27
26
  pdf.font_families[original_font]
28
27
  end
@@ -33,37 +32,32 @@ class Thinreports::Generator::PDF::TestFont < Minitest::Test
33
32
  def test_setup_fonts_with_custom_fallback_fonts
34
33
  Thinreports.configure do |c|
35
34
  c.fallback_fonts = []
36
- c.generator.pdf.eudc_fonts = []
37
35
  end
38
36
  assert_equal Font::DEFAULT_FALLBACK_FONTS,
39
37
  document.pdf.fallback_fonts
40
38
 
41
39
  Thinreports.configure do |c|
42
40
  c.fallback_fonts = 'IPAGothic'
43
- c.generator.pdf.eudc_fonts = []
44
41
  end
45
42
  assert_equal ['IPAGothic'] + Font::DEFAULT_FALLBACK_FONTS,
46
43
  document.pdf.fallback_fonts
47
44
 
48
45
  Thinreports.configure do |c|
49
46
  c.fallback_fonts = ['IPAMincho']
50
- c.generator.pdf.eudc_fonts = [data_file('font.ttf')]
51
47
  end
52
- assert_equal ['Custom-fallback-font0', 'IPAMincho'] + Font::DEFAULT_FALLBACK_FONTS,
48
+ assert_equal ['IPAMincho'] + Font::DEFAULT_FALLBACK_FONTS,
53
49
  document.pdf.fallback_fonts
54
50
 
55
51
  Thinreports.configure do |c|
56
- c.generator.pdf.eudc_fonts = [data_file('font.ttf')]
57
- c.fallback_fonts = ['IPAMincho', 'IPAMincho', data_file('font.ttf')]
52
+ c.fallback_fonts = ['IPAMincho', data_file('font.ttf')]
58
53
  end
59
- assert_equal ['Custom-fallback-font0', 'IPAMincho'] + Font::DEFAULT_FALLBACK_FONTS,
54
+ assert_equal ['IPAMincho', 'Custom-fallback-font1'] + Font::DEFAULT_FALLBACK_FONTS,
60
55
  document.pdf.fallback_fonts
61
56
  end
62
57
 
63
58
  def test_setup_fonts_with_unknown_custom_fallback_fonts
64
59
  Thinreports.configure do |c|
65
60
  c.fallback_fonts = ['/path/to/unknown.ttf']
66
- c.generator.pdf.eudc_fonts = []
67
61
  end
68
62
 
69
63
  assert_raises Thinreports::Errors::FontFileNotFound do