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.
- checksums.yaml +7 -0
- data/.gitignore +3 -5
- data/.travis.yml +8 -4
- data/CHANGELOG.md +220 -0
- data/Gemfile +2 -9
- data/MIT-LICENSE +1 -1
- data/README.md +286 -0
- data/Rakefile +38 -8
- data/examples/character_spacing/character_spacing.rb +8 -0
- data/examples/character_spacing/character_spacing.tlf +1 -0
- data/examples/dynamic_image/dynamic_image.rb +31 -0
- data/examples/dynamic_image/dynamic_image.tlf +1 -0
- data/examples/dynamic_style/dynamic_style.rb +150 -0
- data/examples/dynamic_style/dynamic_style.tlf +1 -0
- data/examples/dynamic_style/dynamic_style_in_list.tlf +1 -0
- data/examples/eudc/eudc.rb +20 -0
- data/examples/eudc/eudc.tlf +1 -0
- data/examples/helper.rb +50 -0
- data/examples/hidden_shapes/hidden_shapes.rb +9 -0
- data/examples/hidden_shapes/hidden_shapes.tlf +1 -0
- data/examples/list_events/list_events.rb +59 -0
- data/examples/list_events/list_events_0_7_7.tlf +1 -0
- data/examples/list_events/list_events_0_8.tlf +1 -0
- data/examples/list_manual_generation/list_manual_generation.rb +22 -0
- data/examples/list_manual_generation/list_manual_generation.tlf +1 -0
- data/examples/list_page_number/list_page_number.rb +17 -0
- data/examples/list_page_number/list_page_number.tlf +1 -0
- data/examples/page_number/page_number.rb +33 -0
- data/examples/page_number/page_number.tlf +1 -0
- data/examples/password_setting/password_setting.rb +10 -0
- data/examples/password_setting/password_setting.tlf +1 -0
- data/examples/report_callbacks/report_callbacks.rb +31 -0
- data/examples/report_callbacks/report_callbacks.tlf +1 -0
- data/examples/single_line_tblock/single_line_tblock.rb +13 -0
- data/examples/single_line_tblock/single_line_tblock.tlf +1 -0
- data/examples/tblock_overflow/tblock_overflow.rb +20 -0
- data/examples/tblock_overflow/tblock_overflow.tlf +1 -0
- data/examples/tblock_styles/font_size.tlf +1 -0
- data/examples/tblock_styles/tblock_styles.rb +43 -0
- data/examples/tblock_styles/tblock_styles.tlf +1 -0
- data/examples/text_align/text_align.rb +8 -0
- data/examples/text_align/text_align.tlf +1 -0
- data/examples/typeB_page_size/B4_ISO.tlf +1 -0
- data/examples/typeB_page_size/B4_JIS.tlf +1 -0
- data/examples/typeB_page_size/typeB_page_size.rb +17 -0
- data/examples/word_wrap/word_wrap.rb +26 -0
- data/examples/word_wrap/word_wrap.tlf +1 -0
- data/lib/thinreports/config.rb +30 -10
- data/lib/thinreports/core/errors.rb +23 -20
- data/lib/thinreports/core/events.rb +18 -19
- data/lib/thinreports/core/format/base.rb +20 -25
- data/lib/thinreports/core/format/builder.rb +19 -27
- data/lib/thinreports/core/shape/base/interface.rb +15 -15
- data/lib/thinreports/core/shape/base/internal.rb +15 -20
- data/lib/thinreports/core/shape/base.rb +4 -5
- data/lib/thinreports/core/shape/basic/block_format.rb +3 -4
- data/lib/thinreports/core/shape/basic/block_interface.rb +9 -4
- data/lib/thinreports/core/shape/basic/block_internal.rb +9 -10
- data/lib/thinreports/core/shape/basic/format.rb +11 -10
- data/lib/thinreports/core/shape/basic/interface.rb +3 -3
- data/lib/thinreports/core/shape/basic/internal.rb +9 -6
- data/lib/thinreports/core/shape/basic.rb +1 -1
- data/lib/thinreports/core/shape/image_block/format.rb +5 -6
- data/lib/thinreports/core/shape/image_block/interface.rb +9 -7
- data/lib/thinreports/core/shape/image_block/internal.rb +5 -6
- data/lib/thinreports/core/shape/image_block.rb +1 -1
- data/lib/thinreports/core/shape/list/configuration.rb +37 -16
- data/lib/thinreports/core/shape/list/events.rb +11 -11
- data/lib/thinreports/core/shape/list/format.rb +27 -28
- data/lib/thinreports/core/shape/list/manager.rb +135 -95
- data/lib/thinreports/core/shape/list/page.rb +57 -51
- data/lib/thinreports/core/shape/list/page_state.rb +19 -17
- data/lib/thinreports/core/shape/list/section_format.rb +14 -15
- data/lib/thinreports/core/shape/list/section_interface.rb +15 -16
- data/lib/thinreports/core/shape/list/section_internal.rb +7 -8
- data/lib/thinreports/core/shape/list/store.rb +10 -11
- data/lib/thinreports/core/shape/list.rb +1 -1
- data/lib/thinreports/core/shape/manager/format.rb +10 -11
- data/lib/thinreports/core/shape/manager/internal.rb +22 -21
- data/lib/thinreports/core/shape/manager/target.rb +63 -34
- data/lib/thinreports/core/shape/manager.rb +1 -1
- data/lib/thinreports/core/shape/page_number/format.rb +25 -0
- data/lib/thinreports/core/shape/page_number/interface.rb +27 -0
- data/lib/thinreports/core/shape/page_number/internal.rb +57 -0
- data/lib/thinreports/core/shape/page_number.rb +15 -0
- data/lib/thinreports/core/shape/style/base.rb +29 -29
- data/lib/thinreports/core/shape/style/basic.rb +1 -1
- data/lib/thinreports/core/shape/style/graphic.rb +10 -25
- data/lib/thinreports/core/shape/style/text.rb +41 -31
- data/lib/thinreports/core/shape/style.rb +1 -1
- data/lib/thinreports/core/shape/text/format.rb +8 -9
- data/lib/thinreports/core/shape/text/interface.rb +2 -2
- data/lib/thinreports/core/shape/text/internal.rb +6 -7
- data/lib/thinreports/core/shape/text.rb +1 -1
- data/lib/thinreports/core/shape/text_block/format.rb +17 -17
- data/lib/thinreports/core/shape/text_block/formatter/basic.rb +13 -12
- data/lib/thinreports/core/shape/text_block/formatter/datetime.rb +8 -9
- data/lib/thinreports/core/shape/text_block/formatter/number.rb +11 -12
- data/lib/thinreports/core/shape/text_block/formatter/padding.rb +9 -32
- data/lib/thinreports/core/shape/text_block/formatter.rb +7 -8
- data/lib/thinreports/core/shape/text_block/interface.rb +2 -2
- data/lib/thinreports/core/shape/text_block/internal.rb +19 -20
- data/lib/thinreports/core/shape/text_block.rb +1 -1
- data/lib/thinreports/core/shape.rb +11 -13
- data/lib/thinreports/core/utils.rb +33 -32
- data/lib/thinreports/generator/base.rb +15 -24
- data/lib/thinreports/generator/configuration.rb +10 -9
- data/lib/thinreports/generator/pdf/configuration.rb +11 -6
- data/lib/thinreports/generator/pdf/document/draw_shape.rb +41 -32
- data/lib/thinreports/generator/pdf/document/font.rb +53 -44
- data/lib/thinreports/generator/pdf/document/graphics/attributes.rb +34 -25
- data/lib/thinreports/generator/pdf/document/graphics/basic.rb +25 -25
- data/lib/thinreports/generator/pdf/document/graphics/image.rb +15 -15
- data/lib/thinreports/generator/pdf/document/graphics/text.rb +43 -41
- data/lib/thinreports/generator/pdf/document/graphics.rb +8 -9
- data/lib/thinreports/generator/pdf/document/page.rb +37 -23
- data/lib/thinreports/generator/pdf/document/parse_color.rb +9 -10
- data/lib/thinreports/generator/pdf/document/parse_svg.rb +14 -15
- data/lib/thinreports/generator/pdf/document.rb +28 -28
- data/lib/thinreports/generator/pdf/drawer/base.rb +16 -22
- data/lib/thinreports/generator/pdf/drawer/list.rb +39 -21
- data/lib/thinreports/generator/pdf/drawer/list_section.rb +17 -18
- data/lib/thinreports/generator/pdf/drawer/page.rb +37 -26
- data/lib/thinreports/generator/pdf/prawn_ext.rb +18 -17
- data/lib/thinreports/generator/pdf.rb +28 -31
- data/lib/thinreports/generator.rb +6 -8
- data/lib/thinreports/layout/base.rb +24 -36
- data/lib/thinreports/layout/configuration.rb +11 -9
- data/lib/thinreports/layout/format.rb +26 -31
- data/lib/thinreports/layout/version.rb +8 -9
- data/lib/thinreports/layout.rb +2 -2
- data/lib/thinreports/report/base.rb +117 -109
- data/lib/thinreports/report/events.rb +5 -5
- data/lib/thinreports/report/internal.rb +48 -38
- data/lib/thinreports/{core → report}/page.rb +42 -32
- data/lib/thinreports/report.rb +10 -14
- data/lib/thinreports/version.rb +2 -3
- data/lib/thinreports.rb +14 -2
- data/test/data/font.ttf +0 -0
- data/test/data/layout_block.tlf +1 -0
- data/test/data/layout_list.tlf +1 -0
- data/test/data/layout_list_noheader.tlf +1 -0
- data/test/data/layout_text1.tlf +1 -0
- data/test/data/layout_text2.tlf +1 -0
- data/test/test_helper.rb +74 -0
- data/test/tmp/.gitkeep +0 -0
- data/test/unit/core/format/test_base.rb +14 -14
- data/test/unit/core/format/test_builder.rb +20 -25
- data/test/unit/core/shape/base/test_internal.rb +34 -37
- data/test/unit/core/shape/basic/test_basic_format.rb +4 -4
- data/test/unit/core/shape/basic/test_basic_interface.rb +15 -13
- data/test/unit/core/shape/basic/test_basic_internal.rb +19 -16
- data/test/unit/core/shape/basic/test_format.rb +4 -4
- data/test/unit/core/shape/basic/test_interface.rb +36 -46
- data/test/unit/core/shape/basic/test_internal.rb +29 -18
- data/test/unit/core/shape/image_block/test_format.rb +5 -5
- data/test/unit/core/shape/image_block/test_interface.rb +17 -16
- data/test/unit/core/shape/image_block/test_internal.rb +19 -16
- data/test/unit/core/shape/list/test_configuration.rb +50 -33
- data/test/unit/core/shape/list/test_events.rb +7 -7
- data/test/unit/core/shape/list/test_format.rb +16 -18
- data/test/unit/core/shape/list/test_manager.rb +15 -5
- data/test/unit/core/shape/list/test_page.rb +80 -22
- data/test/unit/core/shape/list/test_page_state.rb +13 -13
- data/test/unit/core/shape/list/test_section_format.rb +16 -17
- data/test/unit/core/shape/list/test_section_interface.rb +30 -22
- data/test/unit/core/shape/list/test_section_internal.rb +21 -19
- data/test/unit/core/shape/list/test_store.rb +7 -7
- data/test/unit/core/shape/manager/test_format.rb +11 -15
- data/test/unit/core/shape/manager/test_internal.rb +9 -9
- data/test/unit/core/shape/manager/test_target.rb +85 -57
- data/test/unit/core/shape/page_number/test_format.rb +73 -0
- data/test/unit/core/shape/page_number/test_interface.rb +33 -0
- data/test/unit/core/shape/page_number/test_internal.rb +81 -0
- data/test/unit/core/shape/styles/test_base.rb +9 -9
- data/test/unit/core/shape/styles/test_basic.rb +5 -5
- data/test/unit/core/shape/styles/test_graphic.rb +19 -33
- data/test/unit/core/shape/styles/test_text.rb +29 -7
- data/test/unit/core/shape/text/test_format.rb +6 -6
- data/test/unit/core/shape/text/test_internal.rb +11 -12
- data/test/unit/core/shape/text_block/formatter/test_basic.rb +16 -16
- data/test/unit/core/shape/text_block/formatter/test_datetime.rb +22 -20
- data/test/unit/core/shape/text_block/formatter/test_number.rb +34 -34
- data/test/unit/core/shape/text_block/formatter/test_padding.rb +44 -44
- data/test/unit/core/shape/text_block/test_format.rb +13 -8
- data/test/unit/core/shape/text_block/test_formatter.rb +17 -17
- data/test/unit/core/shape/text_block/test_interface.rb +37 -20
- data/test/unit/core/shape/text_block/test_internal.rb +38 -38
- data/test/unit/core/test_events.rb +10 -8
- data/test/unit/core/test_shape.rb +11 -7
- data/test/unit/core/test_utils.rb +68 -0
- data/test/unit/generator/pdf/document/graphics/test_attributes.rb +10 -4
- data/test/unit/generator/pdf/document/graphics/test_text.rb +60 -53
- data/test/unit/generator/pdf/document/test_draw_shape.rb +14 -6
- data/test/unit/generator/pdf/document/test_font.rb +79 -58
- data/test/unit/generator/pdf/document/test_graphics.rb +18 -19
- data/test/unit/generator/pdf/document/test_page.rb +68 -43
- data/test/unit/generator/pdf/document/test_parse_color.rb +5 -5
- data/test/unit/generator/pdf/test_configuration.rb +16 -9
- data/test/unit/generator/pdf/test_document.rb +8 -16
- data/test/unit/generator/test_base.rb +31 -42
- data/test/unit/generator/test_configuration.rb +6 -6
- data/test/unit/generator/test_pdf.rb +15 -21
- data/test/unit/layout/test_base.rb +34 -79
- data/test/unit/layout/test_configuration.rb +12 -37
- data/test/unit/layout/test_format.rb +36 -39
- data/test/unit/layout/test_version.rb +4 -4
- data/test/unit/report/test_base.rb +160 -192
- data/test/unit/report/test_events.rb +4 -4
- data/test/unit/report/test_internal.rb +102 -82
- data/test/unit/test_config.rb +31 -12
- data/test/unit/test_layout.rb +7 -7
- data/test/unit/test_report.rb +12 -24
- data/thinreports.gemspec +23 -26
- metadata +118 -181
- data/.yardopts +0 -1
- data/LICENSE +0 -1
- data/README.rdoc +0 -167
- data/doc/yardoc_templates/default/layout/html/footer.erb +0 -10
- data/lib/thinreports/core/ext/array.rb +0 -19
- data/lib/thinreports/core/ext/hash.rb +0 -19
- data/lib/thinreports/core/ext/object.rb +0 -25
- data/lib/thinreports/core/ext.rb +0 -5
- data/lib/thinreports/core/format.rb +0 -14
- data/lib/thinreports/core/ordered_hash.rb +0 -39
- data/lib/thinreports/core.rb +0 -20
- data/lib/thinreports/generator/pdf/drawer.rb +0 -16
- data/tasks/doc.rake +0 -13
- data/tasks/test.rake +0 -56
- data/test/benchmark/basic_estimate.tlf +0 -1
- data/test/benchmark/bench_basic_estimate.rb +0 -95
- data/test/case/character_spacing/character_spacing.rb +0 -7
- data/test/case/character_spacing/character_spacing.tlf +0 -1
- data/test/case/dynamic_image/dynamic_image.rb +0 -41
- data/test/case/dynamic_image/dynamic_image.tlf +0 -1
- data/test/case/dynamic_style/dynamic_style.rb +0 -154
- data/test/case/dynamic_style/dynamic_style.tlf +0 -1
- data/test/case/dynamic_style/dynamic_style_in_list.tlf +0 -1
- data/test/case/eudc/eudc.rb +0 -20
- data/test/case/eudc/eudc.tlf +0 -1
- data/test/case/helper.rb +0 -29
- data/test/case/hidden_shapes/hidden_shapes.rb +0 -13
- data/test/case/hidden_shapes/hidden_shapes.tlf +0 -1
- data/test/case/list_events/list_events.rb +0 -32
- data/test/case/list_events/list_events.tlf +0 -1
- data/test/case/list_header_inheriting/list_header_inheriting.rb +0 -17
- data/test/case/list_header_inheriting/list_header_inheriting.tlf +0 -1
- data/test/case/list_manual_generation/list_manual_generation.rb +0 -22
- data/test/case/list_manual_generation/list_manual_generation.tlf +0 -1
- data/test/case/single_line_tblock/single_line_tblock.rb +0 -15
- data/test/case/single_line_tblock/single_line_tblock.tlf +0 -1
- data/test/case/tblock_overflow/tblock_overflow.rb +0 -20
- data/test/case/tblock_overflow/tblock_overflow.tlf +0 -1
- data/test/case/tblock_styles/tblock_styles.rb +0 -27
- data/test/case/tblock_styles/tblock_styles.tlf +0 -1
- data/test/case/text_align/text_align.rb +0 -9
- data/test/case/text_align/text_align.tlf +0 -1
- data/test/unit/core/ext/array_spec.rb +0 -29
- data/test/unit/core/ext/hash_spec.rb +0 -29
- data/test/unit/core/ext/object_spec.rb +0 -30
- data/test/unit/core/ordered_hash_spec.rb +0 -51
- data/test/unit/core/shape/base/test_interface.rb +0 -52
- data/test/unit/core/utils_spec.rb +0 -56
- data/test/unit/data/basic_layout1.tlf +0 -1
- data/test/unit/data/basic_layout2.tlf +0 -1
- data/test/unit/data/basic_list_layout.tlf +0 -1
- data/test/unit/data/basic_list_noheader_layout.tlf +0 -1
- data/test/unit/helper.rb +0 -65
- /data/{test/case → examples}/dynamic_image/img200x100.png +0 -0
- /data/{test/case → examples}/dynamic_image/img50x50.png +0 -0
- /data/{test/case → examples}/dynamic_style/image.png +0 -0
- /data/{test/case → examples}/eudc/eudc.ttf +0 -0
- /data/{resources/fonts → fonts}/IPA_Font_License_Agreement_v1.0.txt +0 -0
- /data/{resources/fonts → fonts}/ipag.ttf +0 -0
- /data/{resources/fonts → fonts}/ipagp.ttf +0 -0
- /data/{resources/fonts → fonts}/ipam.ttf +0 -0
- /data/{resources/fonts → fonts}/ipamp.ttf +0 -0
|
@@ -1,24 +1,24 @@
|
|
|
1
1
|
# coding: utf-8
|
|
2
2
|
|
|
3
|
-
require '
|
|
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 =
|
|
10
|
-
|
|
9
|
+
Formatter = Thinreports::Core::Shape::TextBlock::Formatter::Basic
|
|
10
|
+
|
|
11
11
|
def test_apply_simple_format
|
|
12
|
-
format =
|
|
13
|
-
|
|
14
|
-
assert_equal Formatter.new(format).apply('
|
|
15
|
-
'Hello
|
|
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 =
|
|
20
|
-
|
|
21
|
-
assert_equal Formatter.new(format).apply('
|
|
22
|
-
'Hello
|
|
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 '
|
|
3
|
+
require 'test_helper'
|
|
4
4
|
|
|
5
|
-
class
|
|
6
|
-
include
|
|
5
|
+
class Thinreports::Core::Shape::TextBlock::Formatter::TestDatetime < Minitest::Test
|
|
6
|
+
include Thinreports::TestHelper
|
|
7
7
|
|
|
8
|
-
#
|
|
9
|
-
|
|
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
|
|
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(
|
|
23
|
+
formatter = Formatter.new(text_block_format)
|
|
21
24
|
|
|
22
|
-
assert_equal
|
|
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
|
-
|
|
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
|
|
32
|
-
|
|
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(
|
|
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
|
-
|
|
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 '
|
|
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 =
|
|
10
|
-
|
|
9
|
+
Formatter = Thinreports::Core::Shape::TextBlock::Formatter::Number
|
|
10
|
+
|
|
11
11
|
def init_formatter(expect_formats)
|
|
12
|
-
format =
|
|
13
|
-
|
|
14
|
-
|
|
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(:
|
|
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(:
|
|
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(:
|
|
40
|
-
:
|
|
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(:
|
|
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(:
|
|
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(:
|
|
64
|
-
:
|
|
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(:
|
|
71
|
-
:
|
|
72
|
-
:
|
|
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 '
|
|
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 =
|
|
10
|
-
|
|
9
|
+
Formatter = Thinreports::Core::Shape::TextBlock::Formatter::Padding
|
|
10
|
+
|
|
11
11
|
def init_formatter(expect_formats)
|
|
12
|
-
format =
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
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(:
|
|
21
|
-
:
|
|
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(:
|
|
29
|
-
:
|
|
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(:
|
|
36
|
-
:
|
|
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(:
|
|
44
|
-
:
|
|
45
|
-
:
|
|
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(:
|
|
52
|
-
:
|
|
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(:
|
|
58
|
-
:
|
|
59
|
-
:
|
|
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(:
|
|
66
|
-
:
|
|
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(:
|
|
72
|
-
:
|
|
73
|
-
:
|
|
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 '
|
|
3
|
+
require 'test_helper'
|
|
4
4
|
|
|
5
|
-
class
|
|
6
|
-
include
|
|
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" => "
|
|
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
|
-
|
|
164
|
+
Thinreports::Core::Shape::TextBlock::Format.build(TEST_TBLOCK_FORMAT)
|
|
160
165
|
end
|
|
161
166
|
|
|
162
167
|
def format(data)
|
|
163
|
-
|
|
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 '
|
|
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 =
|
|
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(
|
|
14
|
-
|
|
13
|
+
Formatter.setup( stub(format_type: '') )
|
|
14
|
+
|
|
15
15
|
assert_instance_of Formatter::Number,
|
|
16
|
-
Formatter.setup(
|
|
17
|
-
|
|
16
|
+
Formatter.setup( stub(format_type: 'number') )
|
|
17
|
+
|
|
18
18
|
assert_instance_of Formatter::Datetime,
|
|
19
|
-
Formatter.setup(
|
|
20
|
-
|
|
19
|
+
Formatter.setup( stub(format_type: 'datetime') )
|
|
20
|
+
|
|
21
21
|
assert_instance_of Formatter::Padding,
|
|
22
|
-
Formatter.setup(
|
|
23
|
-
|
|
24
|
-
assert_raises
|
|
25
|
-
Formatter.setup(
|
|
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 '
|
|
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 =
|
|
10
|
-
|
|
9
|
+
TextBlock = Thinreports::Core::Shape::TextBlock
|
|
10
|
+
|
|
11
11
|
def create_interface(format_config = {})
|
|
12
|
-
|
|
13
|
-
|
|
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, :
|
|
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, :
|
|
38
|
-
:
|
|
39
|
-
:
|
|
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
|
-
|
|
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
|