thinreports 0.6.0.pre3 → 0.7.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.
- data/README.rdoc +37 -32
- data/doc/yardoc_templates/default/layout/html/footer.erb +1 -1
- data/lib/thinreports.rb +2 -1
- data/lib/thinreports/config.rb +21 -0
- data/lib/thinreports/core/errors.rb +14 -1
- data/lib/thinreports/core/format/builder.rb +6 -1
- data/lib/thinreports/core/page.rb +6 -6
- data/lib/thinreports/core/shape.rb +8 -9
- data/lib/thinreports/core/shape/base/internal.rb +6 -12
- data/lib/thinreports/core/shape/basic.rb +3 -0
- data/lib/thinreports/core/shape/basic/block_format.rb +12 -0
- data/lib/thinreports/core/shape/basic/block_interface.rb +25 -0
- data/lib/thinreports/core/shape/basic/block_internal.rb +33 -0
- data/lib/thinreports/core/shape/basic/interface.rb +37 -11
- data/lib/thinreports/core/shape/basic/internal.rb +3 -12
- data/lib/thinreports/core/shape/image_block.rb +15 -0
- data/lib/thinreports/core/shape/image_block/format.rb +13 -0
- data/lib/thinreports/core/shape/image_block/interface.rb +19 -0
- data/lib/thinreports/core/shape/image_block/internal.rb +16 -0
- data/lib/thinreports/core/shape/list/events.rb +19 -2
- data/lib/thinreports/core/shape/list/manager.rb +17 -4
- data/lib/thinreports/core/shape/list/page.rb +2 -2
- data/lib/thinreports/core/shape/list/page_state.rb +4 -0
- data/lib/thinreports/core/shape/list/section_internal.rb +4 -0
- data/lib/thinreports/core/shape/manager/format.rb +1 -1
- data/lib/thinreports/core/shape/manager/internal.rb +24 -11
- data/lib/thinreports/core/shape/manager/target.rb +2 -2
- data/lib/thinreports/core/shape/style.rb +15 -0
- data/lib/thinreports/core/shape/style/base.rb +149 -0
- data/lib/thinreports/core/shape/style/basic.rb +17 -0
- data/lib/thinreports/core/shape/style/graphic.rb +60 -0
- data/lib/thinreports/core/shape/style/text.rb +138 -0
- data/lib/thinreports/core/shape/text/internal.rb +4 -0
- data/lib/thinreports/core/shape/text_block.rb +16 -0
- data/lib/thinreports/core/shape/{tblock → text_block}/format.rb +3 -3
- data/lib/thinreports/core/shape/{tblock → text_block}/formatter.rb +7 -7
- data/lib/thinreports/core/shape/{tblock → text_block}/formatter/basic.rb +1 -1
- data/lib/thinreports/core/shape/{tblock → text_block}/formatter/datetime.rb +1 -1
- data/lib/thinreports/core/shape/{tblock → text_block}/formatter/number.rb +1 -1
- data/lib/thinreports/core/shape/{tblock → text_block}/formatter/padding.rb +10 -8
- data/lib/thinreports/core/shape/{tblock → text_block}/interface.rb +2 -21
- data/lib/thinreports/core/shape/{tblock → text_block}/internal.rb +16 -10
- data/lib/thinreports/core/utils.rb +0 -8
- data/lib/thinreports/generator.rb +2 -2
- data/lib/thinreports/generator/configuration.rb +30 -0
- data/lib/thinreports/generator/pdf.rb +13 -10
- data/lib/thinreports/generator/pdf/configuration.rb +28 -0
- data/lib/thinreports/generator/pdf/document.rb +16 -56
- data/lib/thinreports/generator/pdf/document/draw_shape.rb +35 -17
- data/lib/thinreports/generator/pdf/document/font.rb +25 -9
- data/lib/thinreports/generator/pdf/document/graphics.rb +1 -1
- data/lib/thinreports/generator/pdf/document/graphics/attributes.rb +18 -4
- data/lib/thinreports/generator/pdf/document/graphics/basic.rb +1 -1
- data/lib/thinreports/generator/pdf/document/graphics/image.rb +18 -1
- data/lib/thinreports/generator/pdf/document/graphics/text.rb +29 -6
- data/lib/thinreports/generator/pdf/document/page.rb +70 -0
- data/lib/thinreports/generator/pdf/document/parse_color.rb +1 -1
- data/lib/thinreports/generator/pdf/document/parse_svg.rb +1 -1
- data/lib/thinreports/generator/pdf/drawer.rb +1 -1
- data/lib/thinreports/generator/pdf/drawer/base.rb +5 -7
- data/lib/thinreports/generator/pdf/drawer/list.rb +4 -4
- data/lib/thinreports/generator/pdf/drawer/list_section.rb +8 -3
- data/lib/thinreports/generator/pdf/drawer/page.rb +10 -3
- data/lib/thinreports/generator/pdf/prawn_ext.rb +16 -21
- data/lib/thinreports/layout/format.rb +2 -2
- data/lib/thinreports/layout/version.rb +2 -2
- data/lib/thinreports/report/base.rb +68 -31
- data/tasks/test.rake +48 -4
- data/test/benchmark/basic_estimate.tlf +1 -0
- data/test/benchmark/bench_basic_estimate.rb +95 -0
- data/test/case/character_spacing/character_spacing.rb +7 -0
- data/test/case/character_spacing/character_spacing.tlf +1 -0
- data/test/case/dynamic_image/dynamic_image.rb +41 -0
- data/test/case/dynamic_image/dynamic_image.tlf +1 -0
- data/test/case/dynamic_image/img200x100.png +0 -0
- data/test/case/dynamic_image/img50x50.png +0 -0
- data/test/case/dynamic_style/dynamic_style.rb +154 -0
- data/test/case/dynamic_style/dynamic_style.tlf +1 -0
- data/test/case/dynamic_style/dynamic_style_in_list.tlf +1 -0
- data/test/case/dynamic_style/image.png +0 -0
- data/test/case/eudc/eudc.rb +20 -0
- data/test/case/eudc/eudc.tlf +1 -0
- data/test/case/eudc/eudc.ttf +0 -0
- data/test/case/helper.rb +27 -0
- data/test/case/hidden_shapes/hidden_shapes.rb +13 -0
- data/test/case/hidden_shapes/hidden_shapes.tlf +1 -0
- data/test/case/list_events/list_events.rb +32 -0
- data/test/case/list_events/list_events.tlf +1 -0
- data/test/case/list_header_inheriting/list_header_inheriting.rb +19 -0
- data/test/case/list_header_inheriting/list_header_inheriting.tlf +1 -0
- data/test/case/list_manual_generation/list_manual_generation.rb +24 -0
- data/test/case/list_manual_generation/list_manual_generation.tlf +1 -0
- data/test/case/single_line_tblock/single_line_tblock.rb +15 -0
- data/test/case/single_line_tblock/single_line_tblock.tlf +1 -0
- data/test/case/tblock_styles/tblock_styles.rb +27 -0
- data/test/case/tblock_styles/tblock_styles.tlf +1 -0
- data/test/case/text_align/text_align.rb +9 -0
- data/test/case/text_align/text_align.tlf +1 -0
- data/test/unit/core/shape/base/test_internal.rb +65 -85
- data/test/unit/core/shape/basic/test_basic_format.rb +30 -0
- data/test/unit/core/shape/basic/test_basic_interface.rb +27 -0
- data/test/unit/core/shape/basic/test_basic_internal.rb +55 -0
- data/test/unit/core/shape/basic/test_interface.rb +84 -36
- data/test/unit/core/shape/basic/test_internal.rb +32 -24
- data/test/unit/core/shape/image_block/test_format.rb +58 -0
- data/test/unit/core/shape/image_block/test_interface.rb +23 -0
- data/test/unit/core/shape/image_block/test_internal.rb +28 -0
- data/test/unit/core/shape/list/test_events.rb +19 -11
- data/test/unit/core/shape/list/test_manager.rb +112 -0
- data/test/unit/core/shape/list/test_page.rb +57 -0
- data/test/unit/core/shape/list/test_section_format.rb +1 -1
- data/test/unit/core/shape/list/test_section_interface.rb +37 -30
- data/test/unit/core/shape/list/test_section_internal.rb +39 -14
- data/test/unit/core/shape/manager/test_format.rb +12 -18
- data/test/unit/core/shape/manager/test_internal.rb +127 -93
- data/test/unit/core/shape/manager/test_target.rb +63 -56
- data/test/unit/core/shape/styles/test_base.rb +219 -0
- data/test/unit/core/shape/styles/test_basic.rb +24 -0
- data/test/unit/core/shape/styles/test_graphic.rb +69 -0
- data/test/unit/core/shape/styles/test_text.rb +318 -0
- data/test/unit/core/shape/{tblock → text_block}/formatter/test_basic.rb +2 -2
- data/test/unit/core/shape/{tblock → text_block}/formatter/test_datetime.rb +2 -2
- data/test/unit/core/shape/{tblock → text_block}/formatter/test_number.rb +2 -2
- data/test/unit/core/shape/{tblock → text_block}/formatter/test_padding.rb +11 -6
- data/test/unit/core/shape/text_block/test_format.rb +160 -0
- data/test/unit/core/shape/{tblock → text_block}/test_formatter.rb +2 -2
- data/test/unit/core/shape/text_block/test_interface.rb +46 -0
- data/test/unit/core/shape/text_block/test_internal.rb +128 -0
- data/test/unit/core/test_shape.rb +31 -6
- data/test/unit/data/basic_layout1.tlf +1 -0
- data/test/unit/data/basic_layout2.tlf +1 -0
- data/test/unit/data/basic_list_layout.tlf +1 -0
- data/test/unit/generator/pdf/document/graphics/test_attributes.rb +81 -52
- data/test/unit/generator/pdf/document/graphics/test_text.rb +159 -0
- data/test/unit/generator/pdf/document/test_font.rb +21 -6
- data/test/unit/generator/pdf/document/test_graphics.rb +2 -2
- data/test/unit/generator/pdf/document/test_page.rb +95 -0
- data/test/unit/generator/pdf/document/test_parse_color.rb +2 -2
- data/test/unit/generator/pdf/test_configuration.rb +24 -0
- data/test/unit/generator/pdf/test_document.rb +28 -0
- data/test/unit/generator/test_configuration.rb +25 -0
- data/test/unit/generator/test_pdf.rb +19 -0
- data/test/unit/helper.rb +18 -0
- data/test/unit/layout/test_format.rb +24 -7
- data/test/unit/layout/test_version.rb +61 -27
- data/test/unit/report/test_base.rb +185 -89
- data/test/unit/test_config.rb +22 -0
- data/test/unit/test_report.rb +4 -4
- metadata +94 -43
- data/lib/thinreports/core/shape/tblock.rb +0 -16
- data/lib/thinreports/generator/pxd.rb +0 -75
- data/lib/thinreports/generator/pxd/helper.rb +0 -33
- data/lib/thinreports/generator/pxd/list_renderer.rb +0 -58
- data/lib/thinreports/generator/pxd/page_renderer.rb +0 -75
- data/tasks/clean.rake +0 -6
- data/test/unit/core/shape/tblock/test_format.rb +0 -125
- data/test/unit/core/shape/tblock/test_interface.rb +0 -40
- data/test/unit/core/shape/tblock/test_internal.rb +0 -139
|
@@ -1,75 +0,0 @@
|
|
|
1
|
-
# coding: utf-8
|
|
2
|
-
|
|
3
|
-
require 'erb'
|
|
4
|
-
|
|
5
|
-
module ThinReports
|
|
6
|
-
module Generator
|
|
7
|
-
|
|
8
|
-
# @private
|
|
9
|
-
class Pxd::PageRenderer
|
|
10
|
-
include Pxd::Helper
|
|
11
|
-
|
|
12
|
-
def initialize(format)
|
|
13
|
-
@engine = ERB.new(read_layout(format))
|
|
14
|
-
@manager = {}
|
|
15
|
-
@lists = {}
|
|
16
|
-
end
|
|
17
|
-
|
|
18
|
-
# @param [ThinReports::Core::Shape::Manager::Internal] manager
|
|
19
|
-
# @return [String]
|
|
20
|
-
def render(manager)
|
|
21
|
-
@manager = manager
|
|
22
|
-
@engine.result(binding)
|
|
23
|
-
end
|
|
24
|
-
|
|
25
|
-
def render_shape(id)
|
|
26
|
-
return '' unless shape = @manager.final_shape(id)
|
|
27
|
-
|
|
28
|
-
shape = shape.internal
|
|
29
|
-
case
|
|
30
|
-
when shape.type_of?(:tblock)
|
|
31
|
-
render_tblock(shape)
|
|
32
|
-
when shape.type_of?(:list)
|
|
33
|
-
render_list(shape)
|
|
34
|
-
when shape.type_of?(:text)
|
|
35
|
-
render_text(shape)
|
|
36
|
-
else
|
|
37
|
-
render_basic(shape)
|
|
38
|
-
end
|
|
39
|
-
end
|
|
40
|
-
alias_method :r, :render_shape
|
|
41
|
-
|
|
42
|
-
private
|
|
43
|
-
|
|
44
|
-
def render_basic(shape)
|
|
45
|
-
tag(shape.svg_tag, shape.attributes)
|
|
46
|
-
end
|
|
47
|
-
|
|
48
|
-
def render_text(shape)
|
|
49
|
-
content_tag(shape.svg_tag, shape.svg_content,
|
|
50
|
-
shape.attribute, :escape => false)
|
|
51
|
-
end
|
|
52
|
-
|
|
53
|
-
def render_tblock(shape)
|
|
54
|
-
value = h(shape.real_value)
|
|
55
|
-
value = if shape.multiple?
|
|
56
|
-
value.gsub(/\r\n|\n/, '<tBreak/>')
|
|
57
|
-
else
|
|
58
|
-
value.gsub(/\r\n|\n/, ' ')
|
|
59
|
-
end
|
|
60
|
-
content_tag(shape.svg_tag, value, shape.attributes, :escape => false)
|
|
61
|
-
end
|
|
62
|
-
|
|
63
|
-
def render_list(shape)
|
|
64
|
-
renderer = @lists[shape.id] ||= Pxd::ListRenderer.new
|
|
65
|
-
renderer.render(shape)
|
|
66
|
-
end
|
|
67
|
-
|
|
68
|
-
def read_layout(format)
|
|
69
|
-
format.layout.gsub(/ x\-[a-z\d\-]+?=".*?"/, '').
|
|
70
|
-
gsub(/ class=".*?"/, '')
|
|
71
|
-
end
|
|
72
|
-
end
|
|
73
|
-
|
|
74
|
-
end
|
|
75
|
-
end
|
data/tasks/clean.rake
DELETED
|
@@ -1,125 +0,0 @@
|
|
|
1
|
-
# coding: utf-8
|
|
2
|
-
|
|
3
|
-
require 'test/unit/helper'
|
|
4
|
-
|
|
5
|
-
class ThinReports::Core::Shape::Tblock::TestFormat < MiniTest::Unit::TestCase
|
|
6
|
-
include ThinReports::TestHelpers
|
|
7
|
-
|
|
8
|
-
TEST_TBLOCK_FORMAT = {
|
|
9
|
-
"type" => "s-tblock",
|
|
10
|
-
"id" => "block_1",
|
|
11
|
-
"display" => "true",
|
|
12
|
-
"multiple" => "false",
|
|
13
|
-
"box" => {
|
|
14
|
-
"x" => 100.0,
|
|
15
|
-
"y" => 100.0,
|
|
16
|
-
"width" => 100.0,
|
|
17
|
-
"height" => 100.0
|
|
18
|
-
},
|
|
19
|
-
"format" => {
|
|
20
|
-
"base" => "¥{value}",
|
|
21
|
-
"type" => "number",
|
|
22
|
-
"number" => {
|
|
23
|
-
"delimiter" => ",",
|
|
24
|
-
"precision" => 1
|
|
25
|
-
}
|
|
26
|
-
},
|
|
27
|
-
"value" => "",
|
|
28
|
-
"ref-id" => "",
|
|
29
|
-
"svg" => {
|
|
30
|
-
"tag" => "text",
|
|
31
|
-
"attrs" => {
|
|
32
|
-
"x" => 200.1,
|
|
33
|
-
"y" => 65.6,
|
|
34
|
-
"text-anchor" => "end",
|
|
35
|
-
"xml:space" => "preserve",
|
|
36
|
-
"fill" => "#000000",
|
|
37
|
-
"fill-opacity" => "1",
|
|
38
|
-
"font-size" => "12",
|
|
39
|
-
"font-family" => "\uFF2D\uFF33 \u30B4\u30B7\u30C3\u30AF",
|
|
40
|
-
"font-weight" => "bold",
|
|
41
|
-
"font-style" => "normal",
|
|
42
|
-
"text-decoration" => "none",
|
|
43
|
-
"clip-path" => "url(#_svgdef_0)"
|
|
44
|
-
}
|
|
45
|
-
}
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
def test_build
|
|
49
|
-
build_format
|
|
50
|
-
rescue
|
|
51
|
-
flunk exception_details(e, 'Building failed.')
|
|
52
|
-
end
|
|
53
|
-
|
|
54
|
-
def test_config_readers
|
|
55
|
-
format = format(TEST_TBLOCK_FORMAT)
|
|
56
|
-
|
|
57
|
-
assert_equal format.value, ''
|
|
58
|
-
assert_equal format.ref_id, ''
|
|
59
|
-
assert_equal format.format_base, '¥{value}'
|
|
60
|
-
assert_equal format.format_type, 'number'
|
|
61
|
-
assert_instance_of ::Hash, format.box
|
|
62
|
-
assert_equal format.box['x'], 100.0
|
|
63
|
-
|
|
64
|
-
# Methods reference to unknown value returns a nil value
|
|
65
|
-
assert_nil format.format_datetime_format
|
|
66
|
-
assert_nil format.format_padding_char
|
|
67
|
-
assert_nil format.format_padding_dir
|
|
68
|
-
|
|
69
|
-
# In face, #format_padding_length returns a nil value
|
|
70
|
-
assert_equal format.format_padding_length, 0
|
|
71
|
-
|
|
72
|
-
assert_equal format.format_padding_rdir?, false
|
|
73
|
-
assert_equal format.has_format?, true
|
|
74
|
-
assert_equal format.has_reference?, false
|
|
75
|
-
assert_equal format.multiple?, false
|
|
76
|
-
end
|
|
77
|
-
|
|
78
|
-
def test_multiple?
|
|
79
|
-
assert format('multiple' => 'true').multiple?
|
|
80
|
-
refute format('multiple' => 'false').multiple?
|
|
81
|
-
end
|
|
82
|
-
|
|
83
|
-
def test_format_padding_rdir?
|
|
84
|
-
data = {'format' => {'padding' => {'direction' => 'L'}}}
|
|
85
|
-
|
|
86
|
-
refute format(data).format_padding_rdir?
|
|
87
|
-
|
|
88
|
-
data['format']['padding']['direction'] = 'R'
|
|
89
|
-
assert format(data).format_padding_rdir?
|
|
90
|
-
end
|
|
91
|
-
|
|
92
|
-
def test_format_padding_length
|
|
93
|
-
data = {'format' => {'padding' => {'length' => '0'}}}
|
|
94
|
-
|
|
95
|
-
assert_equal format(data).format_padding_length, 0
|
|
96
|
-
|
|
97
|
-
data['format']['padding']['length'] = '10'
|
|
98
|
-
assert_equal format(data).format_padding_length, 10
|
|
99
|
-
end
|
|
100
|
-
|
|
101
|
-
def test_has_format?
|
|
102
|
-
data = {'format' => {'type' => ''}}
|
|
103
|
-
|
|
104
|
-
refute format(data).has_format?
|
|
105
|
-
|
|
106
|
-
data['format']['type'] = 'number'
|
|
107
|
-
assert format(data).has_format?
|
|
108
|
-
|
|
109
|
-
data['format']['type'] = 'unknown'
|
|
110
|
-
refute format(data).has_format?
|
|
111
|
-
end
|
|
112
|
-
|
|
113
|
-
def test_has_reference?
|
|
114
|
-
refute format('ref-id' => '').has_reference?
|
|
115
|
-
assert format('ref-id' => 'ref_tblock_1').has_reference?
|
|
116
|
-
end
|
|
117
|
-
|
|
118
|
-
def build_format
|
|
119
|
-
ThinReports::Core::Shape::Tblock::Format.build(TEST_TBLOCK_FORMAT)
|
|
120
|
-
end
|
|
121
|
-
|
|
122
|
-
def format(data)
|
|
123
|
-
ThinReports::Core::Shape::Tblock::Format.new(data)
|
|
124
|
-
end
|
|
125
|
-
end
|
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
# coding: utf-8
|
|
2
|
-
|
|
3
|
-
require 'test/unit/helper'
|
|
4
|
-
|
|
5
|
-
class ThinReports::Core::Shape::Tblock::TestInterface < MiniTest::Unit::TestCase
|
|
6
|
-
include ThinReports::TestHelpers
|
|
7
|
-
|
|
8
|
-
Tblock = ThinReports::Core::Shape::Tblock
|
|
9
|
-
|
|
10
|
-
def setup
|
|
11
|
-
@interface = Tblock::Interface.new(flexmock('parent'), flexmock('format'))
|
|
12
|
-
end
|
|
13
|
-
|
|
14
|
-
def test_value_work_as_getter_when_receive_no_arguments
|
|
15
|
-
flexmock(@interface.internal).should_receive(:read_value).
|
|
16
|
-
and_return('value').once
|
|
17
|
-
|
|
18
|
-
assert_equal @interface.value, 'value'
|
|
19
|
-
end
|
|
20
|
-
|
|
21
|
-
def test_value_work_as_setter_when_receive_an_just_one_argument
|
|
22
|
-
flexmock(@interface.internal).should_receive(:write_value).once
|
|
23
|
-
|
|
24
|
-
@interface.value('any value')
|
|
25
|
-
end
|
|
26
|
-
|
|
27
|
-
def test_value_raise_error_when_receive_more_than_two
|
|
28
|
-
assert_raises ArgumentError do
|
|
29
|
-
@interface.value('arg1', 'arg2')
|
|
30
|
-
end
|
|
31
|
-
end
|
|
32
|
-
|
|
33
|
-
def test_set
|
|
34
|
-
flexmock(@interface).
|
|
35
|
-
should_receive(:value).once.
|
|
36
|
-
should_receive(:styles).once
|
|
37
|
-
|
|
38
|
-
@interface.set('value', :fill => 'red')
|
|
39
|
-
end
|
|
40
|
-
end
|
|
@@ -1,139 +0,0 @@
|
|
|
1
|
-
# coding: utf-8
|
|
2
|
-
|
|
3
|
-
require 'test/unit/helper'
|
|
4
|
-
|
|
5
|
-
class ThinReports::Core::Shape::Tblock::TestInternal < MiniTest::Unit::TestCase
|
|
6
|
-
include ThinReports::TestHelpers
|
|
7
|
-
|
|
8
|
-
Tblock = ThinReports::Core::Shape::Tblock
|
|
9
|
-
|
|
10
|
-
def test_read_value_return_the_format_value
|
|
11
|
-
format = flexmock('format')
|
|
12
|
-
format.should_receive(:value => 'format value').times(2)
|
|
13
|
-
format.should_receive(:has_reference? => false)
|
|
14
|
-
|
|
15
|
-
internal = init_internal(format)
|
|
16
|
-
|
|
17
|
-
assert_equal internal.read_value, 'format value'
|
|
18
|
-
assert_equal internal.value, 'format value'
|
|
19
|
-
end
|
|
20
|
-
|
|
21
|
-
def test_read_value_return_the_value_of_referenced_shape
|
|
22
|
-
format = flexmock('format')
|
|
23
|
-
format.should_receive(:has_reference? => true)
|
|
24
|
-
format.should_receive(:ref_id => 'dummy')
|
|
25
|
-
|
|
26
|
-
internal = init_internal(format)
|
|
27
|
-
|
|
28
|
-
assert_equal internal.read_value, 'referenced value'
|
|
29
|
-
assert_equal internal.value, 'referenced value'
|
|
30
|
-
end
|
|
31
|
-
|
|
32
|
-
def test_read_value_return_the_value_stored_in_states
|
|
33
|
-
format = flexmock('format')
|
|
34
|
-
format.should_receive(:has_reference? => false)
|
|
35
|
-
|
|
36
|
-
internal = init_internal(format)
|
|
37
|
-
internal.states[:value] = 'any value'
|
|
38
|
-
|
|
39
|
-
assert_equal internal.read_value, 'any value'
|
|
40
|
-
assert_equal internal.value, 'any value'
|
|
41
|
-
end
|
|
42
|
-
|
|
43
|
-
def test_write_value
|
|
44
|
-
format = flexmock('format')
|
|
45
|
-
format.should_receive(:has_reference? => false)
|
|
46
|
-
|
|
47
|
-
internal = init_internal(format)
|
|
48
|
-
internal.write_value('value written')
|
|
49
|
-
|
|
50
|
-
assert_equal internal.value, 'value written'
|
|
51
|
-
end
|
|
52
|
-
|
|
53
|
-
def test_write_value_show_warnings_when_has_reference
|
|
54
|
-
format = flexmock('format')
|
|
55
|
-
format.should_receive(:has_reference? => true,
|
|
56
|
-
:ref_id => 'ref id',
|
|
57
|
-
:id => 'id')
|
|
58
|
-
out, err = capture_io do
|
|
59
|
-
init_internal(format).write_value('value written')
|
|
60
|
-
end
|
|
61
|
-
assert_equal err.chomp, 'The set value is not reflected, ' +
|
|
62
|
-
"Because 'id' refers to 'ref id'."
|
|
63
|
-
end
|
|
64
|
-
|
|
65
|
-
def test_real_value_return_the_formatted_value
|
|
66
|
-
format = flexmock('format')
|
|
67
|
-
format.should_receive(:has_format? => true,
|
|
68
|
-
:multiple? => false)
|
|
69
|
-
|
|
70
|
-
internal = init_internal(format)
|
|
71
|
-
flexmock(internal, :read_value => 'dummy')
|
|
72
|
-
|
|
73
|
-
assert_equal internal.real_value, 'formatted value'
|
|
74
|
-
end
|
|
75
|
-
|
|
76
|
-
def test_real_value_return_the_raw_value_when_has_not_format
|
|
77
|
-
format = flexmock('format')
|
|
78
|
-
format.should_receive(:has_format? => false,
|
|
79
|
-
:multiple? => false)
|
|
80
|
-
|
|
81
|
-
internal = init_internal(format)
|
|
82
|
-
flexmock(internal, :read_value => 'raw value')
|
|
83
|
-
|
|
84
|
-
assert_equal internal.real_value, 'raw value'
|
|
85
|
-
end
|
|
86
|
-
|
|
87
|
-
def test_real_value_return_the_raw_value_constantly_when_is_multiple
|
|
88
|
-
format = flexmock('format')
|
|
89
|
-
format.should_receive(:has_format? => true,
|
|
90
|
-
:multiple? => true)
|
|
91
|
-
|
|
92
|
-
internal = init_internal(format)
|
|
93
|
-
flexmock(internal, :read_value => 'raw value')
|
|
94
|
-
|
|
95
|
-
assert_equal internal.real_value, 'raw value'
|
|
96
|
-
end
|
|
97
|
-
|
|
98
|
-
def test_format_enabled
|
|
99
|
-
internal = init_internal(flexmock('format'))
|
|
100
|
-
internal.format_enabled(true)
|
|
101
|
-
|
|
102
|
-
assert_equal internal.states[:format_enabled], true
|
|
103
|
-
end
|
|
104
|
-
|
|
105
|
-
def test_format_enabled?
|
|
106
|
-
internal = init_internal(flexmock(:has_format? => true,
|
|
107
|
-
:multiple? => false))
|
|
108
|
-
|
|
109
|
-
assert_equal internal.format_enabled?, true
|
|
110
|
-
|
|
111
|
-
internal.format_enabled(false)
|
|
112
|
-
|
|
113
|
-
assert_equal internal.format_enabled?, false
|
|
114
|
-
|
|
115
|
-
flexmock(internal.format, :multiple? => true)
|
|
116
|
-
internal.format_enabled(true)
|
|
117
|
-
|
|
118
|
-
assert_equal internal.format_enabled?, false
|
|
119
|
-
end
|
|
120
|
-
|
|
121
|
-
def test_type_of?
|
|
122
|
-
assert_equal init_internal(flexmock('format')).type_of?(:tblock), true
|
|
123
|
-
end
|
|
124
|
-
|
|
125
|
-
def init_internal(format)
|
|
126
|
-
parent = flexmock('parent')
|
|
127
|
-
parent.should_receive(:item).
|
|
128
|
-
and_return(flexmock(:value => 'referenced value'))
|
|
129
|
-
|
|
130
|
-
formatter = flexmock('formatter')
|
|
131
|
-
formatter.should_receive(:apply).
|
|
132
|
-
and_return('formatted value')
|
|
133
|
-
|
|
134
|
-
flexmock(Tblock::Internal).new_instances.should_receive(:formatter).
|
|
135
|
-
and_return(formatter)
|
|
136
|
-
|
|
137
|
-
Tblock::Internal.new(parent, format)
|
|
138
|
-
end
|
|
139
|
-
end
|