thinreports 0.7.7 → 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 +4 -4
- data/.gitignore +3 -6
- data/.travis.yml +4 -10
- data/CHANGELOG.md +220 -0
- data/Gemfile +3 -3
- 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/{test/case → examples}/dynamic_image/img200x100.png +0 -0
- data/{test/case → examples}/dynamic_image/img50x50.png +0 -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/{test/case → examples}/dynamic_style/image.png +0 -0
- data/examples/eudc/eudc.rb +20 -0
- data/examples/eudc/eudc.tlf +1 -0
- data/{test/case → examples}/eudc/eudc.ttf +0 -0
- data/{test/case → examples}/helper.rb +14 -12
- 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/{test/case → examples}/list_manual_generation/list_manual_generation.rb +4 -4
- data/examples/list_manual_generation/list_manual_generation.tlf +1 -0
- data/{test/case → examples}/list_page_number/list_page_number.rb +3 -3
- 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/{test/case → examples}/single_line_tblock/single_line_tblock.rb +2 -2
- 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/{test/case → examples}/typeB_page_size/typeB_page_size.rb +3 -3
- data/examples/word_wrap/word_wrap.rb +26 -0
- data/examples/word_wrap/word_wrap.tlf +1 -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
- data/lib/thinreports.rb +14 -2
- 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 -20
- data/lib/thinreports/core/format/builder.rb +14 -22
- data/lib/thinreports/core/shape.rb +9 -13
- data/lib/thinreports/core/shape/base.rb +4 -5
- 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/basic.rb +1 -1
- 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 +4 -5
- data/lib/thinreports/core/shape/image_block.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/list.rb +1 -1
- data/lib/thinreports/core/shape/list/configuration.rb +30 -15
- 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 +128 -95
- data/lib/thinreports/core/shape/list/page.rb +54 -50
- data/lib/thinreports/core/shape/list/page_state.rb +15 -16
- 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/manager.rb +1 -1
- data/lib/thinreports/core/shape/manager/format.rb +10 -11
- data/lib/thinreports/core/shape/manager/internal.rb +21 -20
- data/lib/thinreports/core/shape/manager/target.rb +63 -34
- data/lib/thinreports/core/shape/page_number.rb +1 -1
- data/lib/thinreports/core/shape/page_number/format.rb +3 -3
- data/lib/thinreports/core/shape/page_number/interface.rb +2 -2
- data/lib/thinreports/core/shape/page_number/internal.rb +3 -3
- data/lib/thinreports/core/shape/style.rb +1 -1
- 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 +36 -30
- data/lib/thinreports/core/shape/text.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_block.rb +1 -1
- data/lib/thinreports/core/shape/text_block/format.rb +17 -18
- data/lib/thinreports/core/shape/text_block/formatter.rb +7 -8
- 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/interface.rb +2 -2
- data/lib/thinreports/core/shape/text_block/internal.rb +19 -20
- data/lib/thinreports/core/utils.rb +33 -32
- data/lib/thinreports/generator.rb +6 -8
- data/lib/thinreports/generator/base.rb +15 -24
- data/lib/thinreports/generator/configuration.rb +10 -9
- data/lib/thinreports/generator/pdf.rb +27 -30
- data/lib/thinreports/generator/pdf/configuration.rb +11 -6
- data/lib/thinreports/generator/pdf/document.rb +28 -28
- data/lib/thinreports/generator/pdf/document/draw_shape.rb +30 -31
- data/lib/thinreports/generator/pdf/document/font.rb +53 -44
- data/lib/thinreports/generator/pdf/document/graphics.rb +8 -9
- data/lib/thinreports/generator/pdf/document/graphics/attributes.rb +25 -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 +40 -41
- data/lib/thinreports/generator/pdf/document/page.rb +20 -21
- 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/drawer/base.rb +13 -14
- data/lib/thinreports/generator/pdf/drawer/list.rb +13 -14
- data/lib/thinreports/generator/pdf/drawer/list_section.rb +13 -14
- data/lib/thinreports/generator/pdf/drawer/page.rb +16 -17
- data/lib/thinreports/generator/pdf/prawn_ext.rb +17 -33
- data/lib/thinreports/layout.rb +2 -2
- data/lib/thinreports/layout/base.rb +22 -36
- data/lib/thinreports/layout/configuration.rb +11 -9
- data/lib/thinreports/layout/format.rb +26 -27
- data/lib/thinreports/layout/version.rb +8 -9
- data/lib/thinreports/report.rb +10 -14
- data/lib/thinreports/report/base.rb +104 -126
- data/lib/thinreports/report/events.rb +5 -5
- data/lib/thinreports/report/internal.rb +41 -33
- data/lib/thinreports/{core → report}/page.rb +38 -30
- data/lib/thinreports/version.rb +2 -3
- 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/{unit/tmp → tmp}/.gitkeep +0 -0
- data/test/unit/core/format/test_base.rb +14 -14
- data/test/unit/core/format/test_builder.rb +19 -23
- 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 +23 -20
- 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 +45 -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 +5 -5
- data/test/unit/core/shape/list/test_page.rb +80 -22
- data/test/unit/core/shape/list/test_page_state.rb +12 -12
- 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 +4 -4
- data/test/unit/core/shape/page_number/test_interface.rb +11 -8
- data/test/unit/core/shape/page_number/test_internal.rb +5 -5
- 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 +18 -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 +4 -4
- 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 +8 -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 +5 -5
- data/test/unit/core/test_shape.rb +6 -6
- data/test/unit/core/test_utils.rb +68 -0
- data/test/unit/generator/pdf/document/graphics/test_attributes.rb +4 -4
- data/test/unit/generator/pdf/document/graphics/test_text.rb +60 -53
- data/test/unit/generator/pdf/document/test_draw_shape.rb +9 -7
- 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 +44 -45
- 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 +17 -14
- 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 +134 -213
- data/test/unit/report/test_events.rb +4 -4
- data/test/unit/report/test_internal.rb +84 -86
- 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 +18 -22
- metadata +101 -200
- data/LICENSE +0 -1
- data/README.rdoc +0 -166
- data/doc/yardoc_templates/default/layout/html/footer.erb +0 -10
- data/lib/thinreports/core.rb +0 -20
- data/lib/thinreports/core/ext.rb +0 -5
- 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/format.rb +0 -14
- data/lib/thinreports/core/ordered_hash.rb +0 -39
- data/lib/thinreports/generator/pdf/drawer.rb +0 -16
- data/tasks/doc.rake +0 -12
- 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 -8
- 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/hidden_shapes/hidden_shapes.rb +0 -9
- 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_manual_generation/list_manual_generation.tlf +0 -1
- data/test/case/list_page_number/list_page_number.tlf +0 -1
- data/test/case/page_number/page_number.rb +0 -33
- data/test/case/page_number/page_number.tlf +0 -1
- data/test/case/password_setting/password_setting.rb +0 -10
- data/test/case/password_setting/password_setting.tlf +0 -1
- 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 -8
- data/test/case/text_align/text_align.tlf +0 -1
- data/test/case/typeB_page_size/B4_ISO.tlf +0 -1
- data/test/case/typeB_page_size/B4_JIS.tlf +0 -1
- data/test/case/word_wrap/word_wrap.rb +0 -26
- data/test/case/word_wrap/word_wrap.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 -87
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
# coding: utf-8
|
|
2
2
|
|
|
3
|
-
require '
|
|
3
|
+
require 'test_helper'
|
|
4
|
+
|
|
5
|
+
class Thinreports::Core::Format::TestBuilder < Minitest::Test
|
|
6
|
+
include Thinreports::TestHelper
|
|
4
7
|
|
|
5
|
-
class ThinReports::Core::Format::TestBuilder < MiniTest::Unit::TestCase
|
|
6
|
-
include ThinReports::TestHelpers
|
|
7
|
-
|
|
8
8
|
TEST_RAW_FORMAT = <<-'EOS'
|
|
9
9
|
{
|
|
10
|
-
"node1":"
|
|
11
|
-
"node2":{"node2_child":"node2_child value"},
|
|
10
|
+
"node1": "あ漢字@㈱Ⅰカナカナ",
|
|
11
|
+
"node2": { "node2_child":"node2_child value" },
|
|
12
12
|
"layout":
|
|
13
13
|
"<svg width=\"595.2\" height=\"841.8\">
|
|
14
14
|
<g class=\"canvas\">
|
|
@@ -19,22 +19,17 @@ class ThinReports::Core::Format::TestBuilder < MiniTest::Unit::TestCase
|
|
|
19
19
|
</svg>"
|
|
20
20
|
}
|
|
21
21
|
EOS
|
|
22
|
-
|
|
23
|
-
class TestFormat <
|
|
24
|
-
extend ::
|
|
25
|
-
|
|
22
|
+
|
|
23
|
+
class TestFormat < Thinreports::Core::Format::Base
|
|
24
|
+
extend ::Thinreports::Core::Format::Builder
|
|
26
25
|
config_reader :layout
|
|
27
26
|
config_accessor :shapes
|
|
28
|
-
|
|
29
|
-
# For test
|
|
30
|
-
public_class_method :parse_json, :build_layout, :clean,
|
|
31
|
-
:clean_with_attributes, :shape_tag
|
|
32
27
|
end
|
|
33
|
-
|
|
28
|
+
|
|
34
29
|
def setup
|
|
35
30
|
@raw_format = clean_whitespaces(TEST_RAW_FORMAT)
|
|
36
31
|
end
|
|
37
|
-
|
|
32
|
+
|
|
38
33
|
def test_parse_json
|
|
39
34
|
expected_format = {
|
|
40
35
|
"node1" => "あ漢字@㈱Ⅰカナカナ",
|
|
@@ -53,15 +48,15 @@ class ThinReports::Core::Format::TestBuilder < MiniTest::Unit::TestCase
|
|
|
53
48
|
}
|
|
54
49
|
assert_equal TestFormat.parse_json(@raw_format), expected_format
|
|
55
50
|
end
|
|
56
|
-
|
|
51
|
+
|
|
57
52
|
def test_build_layout
|
|
58
53
|
format = TestFormat.new(TestFormat.parse_json(@raw_format))
|
|
59
54
|
format.shapes = {}
|
|
60
55
|
|
|
61
56
|
TestFormat.build_layout(format) do |type, f|
|
|
62
|
-
|
|
57
|
+
Thinreports::Core::Shape::Format(type).build(f)
|
|
63
58
|
end
|
|
64
|
-
|
|
59
|
+
|
|
65
60
|
assert_equal format.layout, clean_whitespaces(<<-'EOS')
|
|
66
61
|
<svg width="595.2" height="841.8">
|
|
67
62
|
<g class="canvas">
|
|
@@ -72,7 +67,7 @@ class ThinReports::Core::Format::TestBuilder < MiniTest::Unit::TestCase
|
|
|
72
67
|
EOS
|
|
73
68
|
assert_includes format.shapes.keys, :t1
|
|
74
69
|
end
|
|
75
|
-
|
|
70
|
+
|
|
76
71
|
def test_clean
|
|
77
72
|
source = clean_whitespaces(<<-'EOS')
|
|
78
73
|
<svg width="595.2" height="841.8">
|
|
@@ -89,7 +84,7 @@ class ThinReports::Core::Format::TestBuilder < MiniTest::Unit::TestCase
|
|
|
89
84
|
</svg>
|
|
90
85
|
EOS
|
|
91
86
|
end
|
|
92
|
-
|
|
87
|
+
|
|
93
88
|
def test_clean_with_attributes
|
|
94
89
|
source = clean_whitespaces(<<-'EOS')
|
|
95
90
|
<svg width="595.2" height="841.8">
|
|
@@ -106,8 +101,9 @@ class ThinReports::Core::Format::TestBuilder < MiniTest::Unit::TestCase
|
|
|
106
101
|
</svg>
|
|
107
102
|
EOS
|
|
108
103
|
end
|
|
109
|
-
|
|
104
|
+
|
|
110
105
|
def test_shape_tag
|
|
111
|
-
|
|
106
|
+
shape_format = stub(id: :foo)
|
|
107
|
+
assert_equal TestFormat.shape_tag(shape_format), '<%= r(:"foo")%>'
|
|
112
108
|
end
|
|
113
109
|
end
|
|
@@ -1,89 +1,86 @@
|
|
|
1
1
|
# coding: utf-8
|
|
2
2
|
|
|
3
|
-
require '
|
|
3
|
+
require 'test_helper'
|
|
4
|
+
|
|
5
|
+
class Thinreports::Core::Shape::Base::TestInternal < Minitest::Test
|
|
6
|
+
include Thinreports::TestHelper
|
|
7
|
+
|
|
8
|
+
def setup
|
|
9
|
+
@report = Thinreports::Report.new layout: data_file('layout_text1.tlf')
|
|
10
|
+
@report.start_new_page
|
|
11
|
+
end
|
|
4
12
|
|
|
5
|
-
class ThinReports::Core::Shape::Base::TestInternal < MiniTest::Unit::TestCase
|
|
6
|
-
include ThinReports::TestHelpers
|
|
7
|
-
|
|
8
13
|
def create_internal(format_config = {}, &block)
|
|
9
14
|
format = unless format_config.empty?
|
|
10
|
-
format_klass =
|
|
15
|
+
format_klass = Class.new(Thinreports::Core::Shape::Basic::Format) {
|
|
11
16
|
config_reader(*format_config.keys.map {|k| k.to_sym })
|
|
12
17
|
}
|
|
13
18
|
format_klass.new(format_config)
|
|
14
19
|
else
|
|
15
|
-
|
|
20
|
+
Thinreports::Core::Shape::Basic::Format.new({})
|
|
16
21
|
end
|
|
17
|
-
|
|
18
|
-
klass =
|
|
19
|
-
klass.new(
|
|
22
|
+
|
|
23
|
+
klass = Class.new(Thinreports::Core::Shape::Base::Internal, &block)
|
|
24
|
+
klass.new(@report.page, format)
|
|
20
25
|
end
|
|
21
|
-
|
|
26
|
+
|
|
22
27
|
def test_self_format_delegators_should_defines_method_delegated_from_format
|
|
23
28
|
internal = create_internal('m1' => 'm1_value') {
|
|
24
29
|
format_delegators :m1
|
|
25
30
|
}
|
|
26
31
|
assert_respond_to internal, :m1
|
|
27
32
|
end
|
|
28
|
-
|
|
33
|
+
|
|
29
34
|
def test_method_delegated_from_format_should_return_same_value_as_an_format
|
|
30
35
|
internal = create_internal('m1' => 'm1 value') {
|
|
31
36
|
format_delegators :m1
|
|
32
37
|
}
|
|
33
38
|
assert_same internal.m1, internal.format.m1
|
|
34
39
|
end
|
|
35
|
-
|
|
36
|
-
def test_switch_parent_should_replace_a_parent_property_to_the_specified_new_parent
|
|
37
|
-
new_parent = flexmock('new_parent')
|
|
38
|
-
|
|
39
|
-
internal = create_internal
|
|
40
|
-
internal.switch_parent!(new_parent)
|
|
41
|
-
|
|
42
|
-
assert_same internal.parent, new_parent
|
|
43
|
-
end
|
|
44
|
-
|
|
40
|
+
|
|
45
41
|
def test_copied_internal_should_have_the_new_value_specified_as_a_parent_property
|
|
46
|
-
|
|
42
|
+
new_page = @report.start_new_page
|
|
47
43
|
internal = create_internal {
|
|
48
44
|
def style
|
|
49
|
-
@style ||=
|
|
45
|
+
@style ||= Thinreports::Core::Shape::Style::Base.new(format)
|
|
50
46
|
end
|
|
51
47
|
}
|
|
52
|
-
|
|
48
|
+
|
|
49
|
+
assert_same internal.copy(new_page).parent, new_page
|
|
53
50
|
end
|
|
54
|
-
|
|
51
|
+
|
|
55
52
|
def test_copied_internal_should_have_style_copied_from_original
|
|
56
53
|
internal = create_internal {
|
|
57
54
|
def style
|
|
58
|
-
@style ||=
|
|
55
|
+
@style ||= Thinreports::Core::Shape::Style::Base.new(format)
|
|
59
56
|
end
|
|
60
57
|
}
|
|
61
58
|
internal.style.write_internal_style(:foo, 'bar')
|
|
62
|
-
new_internal = internal.copy(
|
|
63
|
-
|
|
59
|
+
new_internal = internal.copy(@report.start_new_page)
|
|
60
|
+
|
|
64
61
|
assert_equal new_internal.style.read_internal_style(:foo), 'bar'
|
|
65
62
|
end
|
|
66
|
-
|
|
63
|
+
|
|
67
64
|
def test_copied_internal_should_have_states_property_copied_from_original
|
|
68
65
|
internal = create_internal {
|
|
69
66
|
def style
|
|
70
|
-
@style ||=
|
|
67
|
+
@style ||= Thinreports::Core::Shape::Style::Base.new(format)
|
|
71
68
|
end
|
|
72
69
|
}
|
|
73
70
|
internal.states[:foo] = 'bar'
|
|
74
|
-
new_internal = internal.copy(
|
|
75
|
-
|
|
71
|
+
new_internal = internal.copy(@report.start_new_page)
|
|
72
|
+
|
|
76
73
|
assert_equal new_internal.states[:foo], 'bar'
|
|
77
74
|
end
|
|
78
|
-
|
|
75
|
+
|
|
79
76
|
def test_copy_should_execute_block_with_new_internal_as_argument
|
|
80
77
|
internal = create_internal {
|
|
81
78
|
def style
|
|
82
|
-
@style ||=
|
|
79
|
+
@style ||= Thinreports::Core::Shape::Style::Base.new(format)
|
|
83
80
|
end
|
|
84
81
|
}
|
|
85
|
-
internal.copy(
|
|
86
|
-
assert_equal new_internal.is_a?(
|
|
82
|
+
internal.copy(@report.start_new_page) do |new_internal|
|
|
83
|
+
assert_equal new_internal.is_a?(Thinreports::Core::Shape::Base::Internal), true
|
|
87
84
|
end
|
|
88
85
|
end
|
|
89
|
-
end
|
|
86
|
+
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::Basic::TestBlockFormat < Minitest::Test
|
|
6
|
+
include Thinreports::TestHelper
|
|
7
7
|
|
|
8
8
|
TEST_BLOCK_FORMAT = {
|
|
9
9
|
"value" => "default value",
|
|
@@ -25,6 +25,6 @@ class ThinReports::Core::Shape::Basic::TestBlockFormat < MiniTest::Unit::TestCas
|
|
|
25
25
|
end
|
|
26
26
|
|
|
27
27
|
def format
|
|
28
|
-
|
|
28
|
+
Thinreports::Core::Shape::Basic::BlockFormat.new(TEST_BLOCK_FORMAT)
|
|
29
29
|
end
|
|
30
30
|
end
|
|
@@ -1,27 +1,29 @@
|
|
|
1
1
|
# coding: utf-8
|
|
2
2
|
|
|
3
|
-
require '
|
|
3
|
+
require 'test_helper'
|
|
4
|
+
|
|
5
|
+
class Thinreports::Core::Shape::Basic::TestBlockInterface < Minitest::Test
|
|
6
|
+
include Thinreports::TestHelper
|
|
7
|
+
|
|
8
|
+
Basic = Thinreports::Core::Shape::Basic
|
|
4
9
|
|
|
5
|
-
class ThinReports::Core::Shape::Basic::TestBlockInterface < MiniTest::Unit::TestCase
|
|
6
|
-
include ThinReports::TestHelpers
|
|
7
|
-
|
|
8
|
-
Basic = ThinReports::Core::Shape::Basic
|
|
9
|
-
|
|
10
10
|
def setup
|
|
11
|
-
|
|
11
|
+
report = Thinreports::Report.new layout: data_file('layout_text1')
|
|
12
|
+
parent = report.start_new_page
|
|
13
|
+
|
|
12
14
|
format = Basic::BlockFormat.new({})
|
|
13
|
-
internal = Basic::BlockInternal.new
|
|
14
|
-
|
|
15
|
-
@interface = Basic::BlockInterface.new
|
|
15
|
+
internal = Basic::BlockInternal.new parent, format
|
|
16
|
+
|
|
17
|
+
@interface = Basic::BlockInterface.new parent, format, internal
|
|
16
18
|
end
|
|
17
|
-
|
|
19
|
+
|
|
18
20
|
def test_value_should_work_as_reader_with_no_arguments
|
|
19
21
|
@interface.internal.write_value('new value')
|
|
20
22
|
assert_equal @interface.value, 'new value'
|
|
21
23
|
end
|
|
22
|
-
|
|
24
|
+
|
|
23
25
|
def test_value_should_work_as_writer_with_arguments
|
|
24
26
|
@interface.value('new value')
|
|
25
27
|
assert_equal @interface.internal.read_value, 'new value'
|
|
26
28
|
end
|
|
27
|
-
end
|
|
29
|
+
end
|
|
@@ -1,55 +1,58 @@
|
|
|
1
1
|
# coding: utf-8
|
|
2
2
|
|
|
3
|
-
require '
|
|
3
|
+
require 'test_helper'
|
|
4
|
+
|
|
5
|
+
class Thinreports::Core::Shape::Basic::TestBlockInternal < Minitest::Test
|
|
6
|
+
include Thinreports::TestHelper
|
|
7
|
+
|
|
8
|
+
Basic = Thinreports::Core::Shape::Basic
|
|
4
9
|
|
|
5
|
-
class ThinReports::Core::Shape::Basic::TestBlockInternal < MiniTest::Unit::TestCase
|
|
6
|
-
include ThinReports::TestHelpers
|
|
7
|
-
|
|
8
|
-
Basic = ThinReports::Core::Shape::Basic
|
|
9
|
-
|
|
10
10
|
def test_box_should_return_value_of_format
|
|
11
11
|
internal = init_internal('box' => 'box of format')
|
|
12
12
|
assert_equal internal.box, 'box of format'
|
|
13
13
|
end
|
|
14
|
-
|
|
14
|
+
|
|
15
15
|
def test_read_value_should_return_value_from_format
|
|
16
16
|
internal = init_internal('value' => 'default value')
|
|
17
17
|
assert_equal internal.read_value, 'default value'
|
|
18
18
|
end
|
|
19
|
-
|
|
19
|
+
|
|
20
20
|
def test_read_value_should_return_value_from_state_with_value_key
|
|
21
21
|
internal = init_internal
|
|
22
22
|
internal.states[:value] = 'new value'
|
|
23
23
|
assert_equal internal.read_value, 'new value'
|
|
24
24
|
end
|
|
25
|
-
|
|
25
|
+
|
|
26
26
|
def test_real_value_should_return_the_same_value_as_a_read_value_method
|
|
27
27
|
internal = init_internal
|
|
28
28
|
internal.states[:value] = 'foo'
|
|
29
29
|
assert_same internal.real_value, internal.read_value
|
|
30
30
|
end
|
|
31
|
-
|
|
31
|
+
|
|
32
32
|
def test_write_value_should_save_value_to_states_store_as_value
|
|
33
33
|
internal = init_internal
|
|
34
34
|
internal.write_value('new value')
|
|
35
35
|
assert_equal internal.states[:value], 'new value'
|
|
36
36
|
end
|
|
37
|
-
|
|
37
|
+
|
|
38
38
|
def test_type_of_asker_should_return_true_when_given_the_block_value
|
|
39
39
|
assert_equal init_internal.type_of?(:block), true
|
|
40
40
|
end
|
|
41
|
-
|
|
41
|
+
|
|
42
42
|
def test_value_should_works_the_same_as_read_value_method
|
|
43
43
|
internal = init_internal
|
|
44
44
|
internal.write_value('new value')
|
|
45
45
|
assert_same internal.read_value, internal.value
|
|
46
46
|
end
|
|
47
|
-
|
|
47
|
+
|
|
48
48
|
def test_type_of_asker_should_return_false_otherwise
|
|
49
49
|
assert_equal [:iblock, :tblock, :text, :list].all? {|t| !init_internal.type_of?(t)}, true
|
|
50
50
|
end
|
|
51
|
-
|
|
51
|
+
|
|
52
52
|
def init_internal(format = {})
|
|
53
|
-
|
|
53
|
+
report = Thinreports::Report.new layout: data_file('layout_text1')
|
|
54
|
+
parent = report.start_new_page
|
|
55
|
+
|
|
56
|
+
Basic::BlockInternal.new(parent, Basic::BlockFormat.new(format))
|
|
54
57
|
end
|
|
55
|
-
end
|
|
58
|
+
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::Basic::TestFormat < Minitest::Test
|
|
6
|
+
include Thinreports::TestHelper
|
|
7
7
|
|
|
8
8
|
TEST_BASIC_FORMAT = {
|
|
9
9
|
"type" => "s-rect",
|
|
@@ -28,7 +28,7 @@ class ThinReports::Core::Shape::Basic::TestFormat < MiniTest::Unit::TestCase
|
|
|
28
28
|
}
|
|
29
29
|
|
|
30
30
|
# Alias
|
|
31
|
-
Format =
|
|
31
|
+
Format = Thinreports::Core::Shape::Basic::Format
|
|
32
32
|
|
|
33
33
|
def test_build_basic_format
|
|
34
34
|
build_basic_format
|
|
@@ -1,118 +1,108 @@
|
|
|
1
1
|
# coding: utf-8
|
|
2
2
|
|
|
3
|
-
require '
|
|
3
|
+
require 'test_helper'
|
|
4
4
|
|
|
5
|
-
class
|
|
6
|
-
include
|
|
5
|
+
class Thinreports::Core::Shape::Basic::TestInterface < Minitest::Test
|
|
6
|
+
include Thinreports::TestHelper
|
|
7
7
|
|
|
8
8
|
# Alias
|
|
9
|
-
Basic =
|
|
10
|
-
|
|
9
|
+
Basic = Thinreports::Core::Shape::Basic
|
|
10
|
+
|
|
11
11
|
def create_interface(format_config = {})
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
def setup
|
|
17
|
-
format = flexmock('format')
|
|
18
|
-
format.should_receive(:display? => true)
|
|
19
|
-
|
|
20
|
-
@basic = Basic::Interface.new(flexmock('parent'), format)
|
|
12
|
+
report = Thinreports::Report.new layout: data_file('layout_text1')
|
|
13
|
+
parent = report.start_new_page
|
|
14
|
+
|
|
15
|
+
Basic::Interface.new parent, Basic::Format.new(format_config)
|
|
21
16
|
end
|
|
22
|
-
|
|
17
|
+
|
|
23
18
|
def test_id_should_return_id_with_reference_to_internal
|
|
24
19
|
basic = create_interface('id' => 'foo')
|
|
25
20
|
assert_equal basic.id, basic.internal.id
|
|
26
21
|
end
|
|
27
|
-
|
|
22
|
+
|
|
28
23
|
def test_id_should_return_cloned_id
|
|
29
24
|
basic = create_interface('id' => 'basic-id')
|
|
30
25
|
refute_same basic.id, basic.internal.id
|
|
31
26
|
end
|
|
32
|
-
|
|
27
|
+
|
|
33
28
|
def test_type_should_operate_as_delegator_of_internal
|
|
34
29
|
basic = create_interface('type' => 's-rect')
|
|
35
30
|
assert_same basic.type, basic.internal.type
|
|
36
31
|
end
|
|
37
|
-
|
|
32
|
+
|
|
38
33
|
def test_visible_asker_should_return_result_with_reference_to_style_of_internal
|
|
39
34
|
basic = create_interface('display' => 'false')
|
|
40
35
|
assert_equal basic.visible?, basic.internal.style.visible
|
|
41
36
|
end
|
|
42
|
-
|
|
37
|
+
|
|
43
38
|
def test_visible_should_properly_set_visibility_to_style_of_internal
|
|
44
39
|
basic = create_interface('display' => 'false')
|
|
45
40
|
basic.visible(true)
|
|
46
|
-
|
|
41
|
+
|
|
47
42
|
assert_equal basic.internal.style.visible, true
|
|
48
43
|
end
|
|
49
|
-
|
|
44
|
+
|
|
50
45
|
def test_style_should_operate_as_reader_when_one_argument_is_given
|
|
51
46
|
basic = create_interface('svg' => {'attrs' => {'fill' => '#ff0000'}})
|
|
52
|
-
|
|
47
|
+
|
|
53
48
|
assert_equal basic.style(:fill_color), '#ff0000'
|
|
54
49
|
end
|
|
55
|
-
|
|
50
|
+
|
|
56
51
|
def test_style_should_operate_as_writer_when_two_arguments_are_given
|
|
57
52
|
basic = create_interface
|
|
58
53
|
basic.style(:border_color, '#000000')
|
|
59
|
-
|
|
54
|
+
|
|
60
55
|
assert_equal basic.style(:border_color), '#000000'
|
|
61
56
|
end
|
|
62
|
-
|
|
57
|
+
|
|
63
58
|
def test_style_should_operate_as_writer_for_border_style_when_three_arguments_are_given
|
|
64
59
|
basic = create_interface
|
|
65
60
|
basic.style(:border, 1, '#ffffff')
|
|
66
|
-
|
|
61
|
+
|
|
67
62
|
assert_equal basic.style(:border), [1, '#ffffff']
|
|
68
63
|
end
|
|
69
|
-
|
|
64
|
+
|
|
70
65
|
def test_style_should_return_self_when_two_arguments_are_given
|
|
71
66
|
assert_instance_of Basic::Interface, create_interface.style(:border_width, 1)
|
|
72
67
|
end
|
|
73
|
-
|
|
68
|
+
|
|
74
69
|
def test_style_should_return_self_when_three_arguments_are_given
|
|
75
70
|
assert_instance_of Basic::Interface, create_interface.style(:border, 1, '#000000')
|
|
76
71
|
end
|
|
77
|
-
|
|
72
|
+
|
|
78
73
|
def test_styles_should_properly_set_the_specified_styles_as_Hash
|
|
79
74
|
basic = create_interface
|
|
80
|
-
basic.styles(:
|
|
81
|
-
:
|
|
82
|
-
:
|
|
83
|
-
:
|
|
84
|
-
|
|
75
|
+
basic.styles(fill_color: '#ff0000',
|
|
76
|
+
border_color: '#000000',
|
|
77
|
+
border_width: 5,
|
|
78
|
+
visible: false)
|
|
79
|
+
|
|
85
80
|
assert_equal [basic.style(:fill_color),
|
|
86
81
|
basic.style(:border_color),
|
|
87
82
|
basic.style(:border_width),
|
|
88
83
|
basic.style(:visible)],
|
|
89
84
|
['#ff0000', '#000000', 5, false]
|
|
90
85
|
end
|
|
91
|
-
|
|
92
|
-
def test_styles_should_return_self
|
|
93
|
-
basic = create_interface
|
|
94
|
-
assert_instance_of Basic::Interface, basic.styles(:fill => '#ff0000')
|
|
95
|
-
end
|
|
96
|
-
|
|
86
|
+
|
|
97
87
|
def test_hide_should_properly_set_false_to_visibility
|
|
98
88
|
basic = create_interface
|
|
99
89
|
basic.hide
|
|
100
|
-
|
|
90
|
+
|
|
101
91
|
assert_equal basic.visible?, false
|
|
102
92
|
end
|
|
103
|
-
|
|
93
|
+
|
|
104
94
|
def test_hide_should_return_self
|
|
105
95
|
assert_instance_of Basic::Interface, create_interface.hide
|
|
106
96
|
end
|
|
107
|
-
|
|
97
|
+
|
|
108
98
|
def test_show_should_properly_set_true_to_visibility
|
|
109
99
|
basic = create_interface
|
|
110
100
|
basic.show
|
|
111
|
-
|
|
101
|
+
|
|
112
102
|
assert_equal basic.visible?, true
|
|
113
103
|
end
|
|
114
|
-
|
|
104
|
+
|
|
115
105
|
def test_show_should_return_self
|
|
116
106
|
assert_instance_of Basic::Interface, create_interface.show
|
|
117
107
|
end
|
|
118
|
-
end
|
|
108
|
+
end
|