thinreports 0.10.3 → 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 (150) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/test.yml +39 -0
  3. data/CHANGELOG.md +20 -0
  4. data/Dockerfile +12 -0
  5. data/Gemfile +5 -0
  6. data/README.md +37 -13
  7. data/Rakefile +1 -0
  8. data/lib/thinreports/core/shape/image_block.rb +1 -1
  9. data/lib/thinreports/core/shape/list.rb +1 -1
  10. data/lib/thinreports/core/shape/page_number.rb +1 -1
  11. data/lib/thinreports/core/shape/text.rb +1 -1
  12. data/lib/thinreports/core/shape/text_block.rb +1 -1
  13. data/lib/thinreports/core/shape/text_block/formatter/number.rb +6 -1
  14. data/lib/thinreports/core/shape/text_block/internal.rb +0 -2
  15. data/lib/thinreports/generator/pdf/prawn_ext/width_of.rb +6 -0
  16. data/lib/thinreports/layout/base.rb +1 -1
  17. data/lib/thinreports/layout/version.rb +1 -1
  18. data/lib/thinreports/report/internal.rb +2 -0
  19. data/lib/thinreports/version.rb +1 -1
  20. data/thinreports.gemspec +5 -9
  21. metadata +6 -204
  22. data/.travis.yml +0 -32
  23. data/test/data/font.ttf +0 -0
  24. data/test/data/image_normal.jpg +0 -0
  25. data/test/data/image_normal.png +0 -0
  26. data/test/data/image_normal_jpg_noext +0 -0
  27. data/test/data/image_normal_png_noext +0 -0
  28. data/test/data/image_pallete_based.png +0 -0
  29. data/test/data/legacy_layout/all-items.tlf +0 -1
  30. data/test/features/dynamic_style/expect.pdf +0 -3714
  31. data/test/features/dynamic_style/image.png +0 -0
  32. data/test/features/dynamic_style/templates/styles.tlf +0 -1835
  33. data/test/features/dynamic_style/templates/styles_in_list.tlf +0 -344
  34. data/test/features/dynamic_style/test_dynamic_style.rb +0 -152
  35. data/test/features/eudc/eudc.ttf +0 -0
  36. data/test/features/eudc/expect.pdf +0 -0
  37. data/test/features/eudc/template.tlf +0 -180
  38. data/test/features/eudc/test_eudc.rb +0 -27
  39. data/test/features/feature_test.rb +0 -58
  40. data/test/features/graphics/expect.pdf +0 -475
  41. data/test/features/graphics/template.tlf +0 -309
  42. data/test/features/graphics/test_graphics.rb +0 -12
  43. data/test/features/hidden_item/expect.pdf +0 -0
  44. data/test/features/hidden_item/template.tlf +0 -449
  45. data/test/features/hidden_item/test_hidden_item.rb +0 -12
  46. data/test/features/image_block/expect.pdf +0 -0
  47. data/test/features/image_block/img200x100.png +0 -0
  48. data/test/features/image_block/img50x50.png +0 -0
  49. data/test/features/image_block/template.tlf +0 -661
  50. data/test/features/image_block/test_image_block.rb +0 -35
  51. data/test/features/list_events/expect.pdf +0 -659
  52. data/test/features/list_events/template.tlf +0 -361
  53. data/test/features/list_events/test_list_events.rb +0 -36
  54. data/test/features/list_manually/expect.pdf +0 -599
  55. data/test/features/list_manually/template.tlf +0 -132
  56. data/test/features/list_manually/test_list_manually.rb +0 -25
  57. data/test/features/page_number/expect.pdf +0 -400
  58. data/test/features/page_number/template.tlf +0 -215
  59. data/test/features/page_number/test_page_number.rb +0 -24
  60. data/test/features/page_number_with_list/expect.pdf +0 -721
  61. data/test/features/page_number_with_list/template.tlf +0 -254
  62. data/test/features/page_number_with_list/test_page_number_with_list.rb +0 -21
  63. data/test/features/palleted_png/expect.pdf +0 -0
  64. data/test/features/palleted_png/palleted_png.png +0 -0
  65. data/test/features/palleted_png/template.tlf +0 -47
  66. data/test/features/palleted_png/test_palleted_png.rb +0 -14
  67. data/test/features/report_callbacks/expect.pdf +0 -169
  68. data/test/features/report_callbacks/template.tlf +0 -147
  69. data/test/features/report_callbacks/test_report_callbacks.rb +0 -18
  70. data/test/features/text_align/expect.pdf +0 -0
  71. data/test/features/text_align/template.tlf +0 -241
  72. data/test/features/text_align/test_text_align.rb +0 -12
  73. data/test/features/text_block_overflow/expect.pdf +0 -0
  74. data/test/features/text_block_overflow/template.tlf +0 -538
  75. data/test/features/text_block_overflow/test_text_block_overflow.rb +0 -25
  76. data/test/features/text_block_singleline/expect.pdf +0 -0
  77. data/test/features/text_block_singleline/template.tlf +0 -170
  78. data/test/features/text_block_singleline/test_text_block_singleline.rb +0 -15
  79. data/test/features/text_block_style/expect.pdf +0 -1391
  80. data/test/features/text_block_style/templates/basic_styles.tlf +0 -889
  81. data/test/features/text_block_style/templates/font_size.tlf +0 -383
  82. data/test/features/text_block_style/test_text_block_style.rb +0 -47
  83. data/test/features/text_character_spacing/expect.pdf +0 -0
  84. data/test/features/text_character_spacing/template.tlf +0 -293
  85. data/test/features/text_character_spacing/test_text_character_spacing.rb +0 -12
  86. data/test/features/text_word_wrap/expect.pdf +0 -0
  87. data/test/features/text_word_wrap/template.tlf +0 -297
  88. data/test/features/text_word_wrap/test_text_word_wrap.rb +0 -30
  89. data/test/schema_helper.rb +0 -122
  90. data/test/test_helper.rb +0 -39
  91. data/test/units/core/format/test_base.rb +0 -152
  92. data/test/units/core/shape/base/test_internal.rb +0 -87
  93. data/test/units/core/shape/basic/test_block_format.rb +0 -23
  94. data/test/units/core/shape/basic/test_block_interface.rb +0 -29
  95. data/test/units/core/shape/basic/test_block_internal.rb +0 -55
  96. data/test/units/core/shape/basic/test_format.rb +0 -37
  97. data/test/units/core/shape/basic/test_interface.rb +0 -108
  98. data/test/units/core/shape/basic/test_internal.rb +0 -55
  99. data/test/units/core/shape/image_block/test_interface.rb +0 -24
  100. data/test/units/core/shape/image_block/test_internal.rb +0 -31
  101. data/test/units/core/shape/list/test_format.rb +0 -111
  102. data/test/units/core/shape/list/test_manager.rb +0 -67
  103. data/test/units/core/shape/list/test_page.rb +0 -156
  104. data/test/units/core/shape/list/test_page_state.rb +0 -31
  105. data/test/units/core/shape/list/test_section_format.rb +0 -36
  106. data/test/units/core/shape/list/test_section_interface.rb +0 -75
  107. data/test/units/core/shape/list/test_section_internal.rb +0 -50
  108. data/test/units/core/shape/manager/test_format.rb +0 -38
  109. data/test/units/core/shape/manager/test_internal.rb +0 -132
  110. data/test/units/core/shape/manager/test_target.rb +0 -140
  111. data/test/units/core/shape/page_number/test_format.rb +0 -55
  112. data/test/units/core/shape/page_number/test_interface.rb +0 -33
  113. data/test/units/core/shape/page_number/test_internal.rb +0 -81
  114. data/test/units/core/shape/styles/test_base.rb +0 -191
  115. data/test/units/core/shape/styles/test_basic.rb +0 -24
  116. data/test/units/core/shape/styles/test_graphic.rb +0 -50
  117. data/test/units/core/shape/styles/test_text.rb +0 -97
  118. data/test/units/core/shape/text/test_format.rb +0 -44
  119. data/test/units/core/shape/text/test_internal.rb +0 -20
  120. data/test/units/core/shape/text_block/formatter/test_basic.rb +0 -24
  121. data/test/units/core/shape/text_block/formatter/test_datetime.rb +0 -49
  122. data/test/units/core/shape/text_block/formatter/test_number.rb +0 -76
  123. data/test/units/core/shape/text_block/formatter/test_padding.rb +0 -77
  124. data/test/units/core/shape/text_block/test_format.rb +0 -169
  125. data/test/units/core/shape/text_block/test_formatter.rb +0 -28
  126. data/test/units/core/shape/text_block/test_interface.rb +0 -63
  127. data/test/units/core/shape/text_block/test_internal.rb +0 -128
  128. data/test/units/core/test_shape.rb +0 -52
  129. data/test/units/core/test_utils.rb +0 -68
  130. data/test/units/generator/pdf/document/graphics/test_attributes.rb +0 -135
  131. data/test/units/generator/pdf/document/graphics/test_basic.rb +0 -46
  132. data/test/units/generator/pdf/document/graphics/test_image.rb +0 -46
  133. data/test/units/generator/pdf/document/graphics/test_text.rb +0 -171
  134. data/test/units/generator/pdf/document/test_font.rb +0 -110
  135. data/test/units/generator/pdf/document/test_graphics.rb +0 -42
  136. data/test/units/generator/pdf/document/test_page.rb +0 -122
  137. data/test/units/generator/pdf/document/test_parse_color.rb +0 -30
  138. data/test/units/generator/pdf/prawn_ext/test_calc_image_dimensions.rb +0 -41
  139. data/test/units/generator/pdf/prawn_ext/test_width_of.rb +0 -22
  140. data/test/units/generator/pdf/test_document.rb +0 -22
  141. data/test/units/generator/test_pdf.rb +0 -26
  142. data/test/units/layout/test_base.rb +0 -41
  143. data/test/units/layout/test_format.rb +0 -100
  144. data/test/units/layout/test_legacy_schema.rb +0 -576
  145. data/test/units/layout/test_version.rb +0 -26
  146. data/test/units/report/test_base.rb +0 -248
  147. data/test/units/report/test_internal.rb +0 -206
  148. data/test/units/test_config.rb +0 -36
  149. data/test/units/test_layout.rb +0 -12
  150. data/test/units/test_report.rb +0 -18
@@ -1,28 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'test_helper'
4
-
5
- class Thinreports::Core::Shape::TextBlock::TestFormatter < Minitest::Test
6
- include Thinreports::TestHelper
7
-
8
- # Alias
9
- Formatter = Thinreports::Core::Shape::TextBlock::Formatter
10
-
11
- def test_initialize_formatter_by_type
12
- assert_instance_of Formatter::Basic,
13
- Formatter.setup( stub(format_type: '') )
14
-
15
- assert_instance_of Formatter::Number,
16
- Formatter.setup( stub(format_type: 'number') )
17
-
18
- assert_instance_of Formatter::Datetime,
19
- Formatter.setup( stub(format_type: 'datetime') )
20
-
21
- assert_instance_of Formatter::Padding,
22
- Formatter.setup( stub(format_type: 'padding') )
23
-
24
- assert_raises Thinreports::Errors::UnknownFormatterType do
25
- Formatter.setup( stub(format_type: 'unknown') )
26
- end
27
- end
28
- end
@@ -1,63 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'test_helper'
4
-
5
- class Thinreports::Core::Shape::TextBlock::TestInterface < Minitest::Test
6
- include Thinreports::TestHelper
7
-
8
- # Alias
9
- TextBlock = Thinreports::Core::Shape::TextBlock
10
-
11
- def create_interface(format_config = {})
12
- report = Thinreports::Report.new layout: layout_file.path
13
- parent = report.start_new_page
14
-
15
- TextBlock::Interface.new parent, TextBlock::Format.new(format_config)
16
- end
17
-
18
- def test_format_enabled_asker_should_operate_as_delegator_of_internal
19
- tblock = create_interface('format' => {'type' => 'datetime'})
20
- assert_equal tblock.format_enabled?, tblock.internal.format_enabled?
21
- end
22
-
23
- def test_format_enabled_should_properly_set_value_to_internal
24
- tblock = create_interface('format' => {'type' => 'number'})
25
- tblock.format_enabled(false)
26
-
27
- assert_equal tblock.internal.format_enabled?, false
28
- end
29
-
30
- def test_set_should_properly_set_a_value
31
- tblock = create_interface
32
- tblock.set(1000, visible: false)
33
-
34
- assert_equal tblock.value, 1000
35
- end
36
-
37
- def test_set_should_properly_set_styles
38
- tblock = create_interface
39
- tblock.set(1000, color: '#ff0000',
40
- bold: true,
41
- italic: true)
42
-
43
- assert_equal [tblock.style(:color),
44
- tblock.style(:bold),
45
- tblock.style(:italic)],
46
- ['#ff0000', true, true]
47
- end
48
-
49
- def test_value=
50
- report = Thinreports::Report.new layout: layout_file.path
51
- page = report.start_new_page
52
-
53
- page.item(:text_block).value = 'foo'
54
- assert_equal 'foo', page.item(:text_block).value
55
-
56
- page.item(:text_block).value += 'bar'
57
- assert_equal 'foobar', page.item(:text_block).value
58
-
59
- page.item(:text_block).value = 1000
60
- page.item(:text_block).value += 999
61
- assert_equal 1999, page.item(:text_block).value
62
- end
63
- end
@@ -1,128 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'test_helper'
4
-
5
- class Thinreports::Core::Shape::TextBlock::TestInternal < Minitest::Test
6
- include Thinreports::TestHelper
7
-
8
- # Alias
9
- TextBlock = Thinreports::Core::Shape::TextBlock
10
-
11
- def create_parent
12
- report = Thinreports::Report.new layout: layout_file.path
13
- report.start_new_page do |page|
14
- # Add to force TextBlock shape.
15
- page.manager.format.shapes[:foo] = TextBlock::Format.new('type' => 'text-block',
16
- 'id' => 'foo')
17
- # Set value to TextBlock.
18
- page.item(:foo).value('foo value')
19
- end
20
- end
21
-
22
- def create_internal(format_config = {})
23
- TextBlock::Internal.new(create_parent, TextBlock::Format.new(format_config))
24
- end
25
-
26
- def test_multiple_asker_should_operate_as_delegator_of_format
27
- tblock = create_internal('multiple-line' => true)
28
- assert_equal tblock.multiple?, tblock.format.multiple?
29
- end
30
-
31
- def test_style_should_return_the_instance_of_Style_Text
32
- assert_instance_of Thinreports::Core::Shape::Style::Text, create_internal.style
33
- end
34
-
35
- def test_read_value_should_return_the_format_value_as_default
36
- tblock = create_internal('value' => 'default value')
37
- assert_equal tblock.read_value, 'default value'
38
- end
39
-
40
- def test_read_value_should_return_the_value_of_referenced_shape
41
- tblock = create_internal('reference-id' => 'foo', 'value' => '')
42
- assert_equal tblock.read_value, 'foo value'
43
- end
44
-
45
- def test_read_value_should_return_the_value_stored_in_states
46
- tblock = create_internal
47
- tblock.states[:value] = 'value in states'
48
-
49
- assert_equal tblock.read_value, 'value in states'
50
- end
51
-
52
- def test_write_value_should_properly_set_the_specified_value_to_states
53
- tblock = create_internal
54
- tblock.write_value(1000)
55
-
56
- assert_equal tblock.states[:value], 1000
57
- end
58
-
59
- def test_write_value_should_show_warnings_when_tblock_has_reference
60
- tblock = create_internal('id' => 'bar', 'reference-id' => 'foo')
61
- _out, err = capture_io do
62
- tblock.write_value('value')
63
- end
64
- assert_equal err.chomp, 'The set value was not saved, ' +
65
- "Because 'bar' has reference to 'foo'."
66
- end
67
-
68
- def test_real_value_should_return_the_formatted_value_when_tblock_has_any_format
69
- tblock = create_internal('format' => {'type' => 'datetime',
70
- 'datetime' => {'format' => '%Y/%m/%d'}})
71
- tblock.write_value(value = Time.now)
72
-
73
- assert_equal tblock.real_value, value.strftime('%Y/%m/%d')
74
- end
75
-
76
- def test_real_value_should_return_the_raw_value_when_tblock_has_no_format
77
- tblock = create_internal
78
- tblock.write_value('any value')
79
-
80
- assert_equal tblock.real_value, 'any value'
81
- end
82
-
83
- def test_format_enabled_should_properly_set_value_to_states_as_format_enabled
84
- tblock = create_internal
85
- tblock.format_enabled(false)
86
-
87
- assert_equal tblock.states[:format_enabled], false
88
- end
89
-
90
- def test_format_enabled_asker_should_return_true_when_format_has_any_type
91
- tblock = create_internal('format' => {'type' => 'datetime'})
92
-
93
- assert_equal tblock.format_enabled?, true
94
- end
95
-
96
- def test_format_enabled_asker_should_return_true_when_base_of_format_has_any_value
97
- tblock = create_internal('format' => {'base' => '{value}'})
98
-
99
- assert_equal tblock.format_enabled?, true
100
- end
101
-
102
- def test_format_enabled_asker_should_return_false_when_format_has_no_type_and_base_has_not_value
103
- assert_equal create_internal.format_enabled?, false
104
- end
105
-
106
- def test_format_enabled_asker_should_return_false_constantly_when_tblock_is_multiple_mode
107
- tblock = create_internal('multiple-line' => true,
108
- 'format' => {'base' => '{value}',
109
- 'type' => 'number'})
110
- tblock.format_enabled(true)
111
-
112
- assert_equal tblock.format_enabled?, false
113
- end
114
-
115
- def test_type_of_asker_should_return_true_when_value_is_tblock
116
- assert_equal create_internal.type_of?('text-block'), true
117
- end
118
-
119
- def test_type_of_asker_should_return_true_when_value_is_block
120
- assert_equal create_internal.type_of?(:block), true
121
- end
122
-
123
- def test_formatter_should_return_instance_of_FormatterBasic_when_format_is_enable
124
- tblock = create_internal('format' => {'type' => 'datetime'})
125
-
126
- assert_kind_of TextBlock::Formatter::Basic, tblock.send(:formatter)
127
- end
128
- end
@@ -1,52 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'test_helper'
4
-
5
- class Thinreports::Core::TestShape < Minitest::Test
6
- include Thinreports::TestHelper
7
-
8
- # Alias
9
- ShapeModule = Thinreports::Core::Shape
10
-
11
- def test_find_by_type_should_return_PageNumber
12
- assert_same ShapeModule.find_by_type('page-number'), ShapeModule::PageNumber
13
- end
14
-
15
- def test_find_by_type_should_return_ImageBlock
16
- assert_same ShapeModule.find_by_type('image-block'), ShapeModule::ImageBlock
17
- end
18
-
19
- def test_find_by_type_should_return_TextBlock
20
- assert_same ShapeModule.find_by_type('text-block'), ShapeModule::TextBlock
21
- end
22
-
23
- def test_find_by_type_should_return_List
24
- assert_same ShapeModule.find_by_type('list'), ShapeModule::List
25
- end
26
-
27
- def test_find_by_type_should_return_Text
28
- assert_same ShapeModule.find_by_type('text'), ShapeModule::Text
29
- end
30
-
31
- def test_find_by_type_should_return_Basic_as_Image
32
- assert_same ShapeModule.find_by_type('image'), ShapeModule::Basic
33
- end
34
-
35
- def test_find_by_type_should_return_Basic_as_Line
36
- assert_same ShapeModule.find_by_type('line'), ShapeModule::Basic
37
- end
38
-
39
- def test_find_by_type_should_return_Basic_as_Rect
40
- assert_same ShapeModule.find_by_type('rect'), ShapeModule::Basic
41
- end
42
-
43
- def test_find_by_type_should_return_Basic_as_Ellipse
44
- assert_same ShapeModule.find_by_type('ellipse'), ShapeModule::Basic
45
- end
46
-
47
- def test_find_by_type_should_raise
48
- assert_raises Thinreports::Errors::UnknownShapeType do
49
- ShapeModule.find_by_type('unknown')
50
- end
51
- end
52
- end
@@ -1,68 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'test_helper'
4
-
5
- class Thinreports::Core::TestShape < Minitest::Test
6
- include Thinreports::TestHelper
7
- include Thinreports::Utils
8
-
9
- def test_call_block_in
10
- expected = '123'
11
- assert_same expected, call_block_in(expected)
12
-
13
- assert_equal [1, 2, 3], call_block_in([2, 1, 3], &proc { sort! })
14
- assert_equal [1, 2, 3], call_block_in([2, 1, 3], &proc { |a| a.sort! })
15
- end
16
-
17
- def test_deep_copy_in_unsupported_object
18
- [123, nil, Struct.new(:foo).new].each do |unsupported_value|
19
- assert_raises ArgumentError do
20
- deep_copy(unsupported_value)
21
- end
22
- end
23
- end
24
-
25
- def test_deep_copy_in_Array
26
- src = ['string', Time.now]
27
- dup = deep_copy(src)
28
-
29
- refute_same dup, src
30
-
31
- src.each_with_index do |e, i|
32
- assert_equal dup[i], e
33
- refute_same dup[i], e
34
- end
35
- end
36
-
37
- def test_deep_copy_in_Hash
38
- src = { a: 'string', b: Time.now }
39
- dup = deep_copy(src)
40
-
41
- refute_same dup, src
42
-
43
- src.each do |k, v|
44
- assert_equal dup[k], v
45
- refute_same dup[k], v
46
- end
47
- end
48
-
49
- def test_blank_value_in_String
50
- ["", ''].each do |val|
51
- assert_equal true, blank_value?(val)
52
- end
53
-
54
- [' ', ' ', 'abc', 'あいう'].each do |val|
55
- assert_equal false, blank_value?(val)
56
- end
57
- end
58
-
59
- def test_blank_value_in_NilClass
60
- assert_equal true, blank_value?(nil)
61
- end
62
-
63
- def test_blank_value_in_other_classes
64
- [0, 1, -1, 9.99, true, false, Time.now].each do |val|
65
- assert_equal false, blank_value?(val)
66
- end
67
- end
68
- end
@@ -1,135 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'test_helper'
4
-
5
- class Thinreports::Generator::PDF::Graphics::TestAttributes < Minitest::Test
6
- include Thinreports::TestHelper
7
-
8
- def setup
9
- @pdf = Thinreports::Generator::PDF::Document.new
10
- end
11
-
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)
98
- end
99
-
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)
106
- end
107
-
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)
112
- end
113
-
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)
118
- end
119
-
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)
126
- end
127
-
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)
134
- end
135
- end