panmind-rtf 0.3.1
Sign up to get free protection for your applications and to get access to all the features.
- data/CHANGES +8 -0
- data/LICENSE +20 -0
- data/README +186 -0
- data/Rakefile +48 -0
- data/VERSION.yml +5 -0
- data/examples/example01.rb +51 -0
- data/examples/example02.rb +45 -0
- data/examples/example03.rb +66 -0
- data/examples/example03.rtf +164 -0
- data/examples/example04.rb +50 -0
- data/examples/rubyrtf.bmp +0 -0
- data/examples/rubyrtf.jpg +0 -0
- data/examples/rubyrtf.png +0 -0
- data/lib/rtf.rb +34 -0
- data/lib/rtf/colour.rb +173 -0
- data/lib/rtf/font.rb +173 -0
- data/lib/rtf/information.rb +111 -0
- data/lib/rtf/node.rb +1680 -0
- data/lib/rtf/paper.rb +55 -0
- data/lib/rtf/style.rb +305 -0
- data/test/character_style_test.rb +136 -0
- data/test/colour_table_test.rb +93 -0
- data/test/colour_test.rb +116 -0
- data/test/command_node_test.rb +219 -0
- data/test/container_node_test.rb +64 -0
- data/test/document_style_test.rb +79 -0
- data/test/document_test.rb +106 -0
- data/test/fixtures/bitmap1.bmp +0 -0
- data/test/fixtures/bitmap2.bmp +0 -0
- data/test/fixtures/jpeg1.jpg +0 -0
- data/test/fixtures/jpeg2.jpg +0 -0
- data/test/fixtures/png1.png +0 -0
- data/test/fixtures/png2.png +0 -0
- data/test/font_table_test.rb +91 -0
- data/test/font_test.rb +48 -0
- data/test/footer_node_test.rb +30 -0
- data/test/header_node_test.rb +30 -0
- data/test/image_node_test.rb +125 -0
- data/test/information_test.rb +127 -0
- data/test/node_test.rb +25 -0
- data/test/paragraph_style_test.rb +81 -0
- data/test/style_test.rb +16 -0
- data/test/table_cell_node_test.rb +89 -0
- data/test/table_node_test.rb +83 -0
- data/test/table_row_node_test.rb +59 -0
- data/test/test_helper.rb +13 -0
- data/test/text_node_test.rb +50 -0
- metadata +133 -0
@@ -0,0 +1,93 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
|
3
|
+
# ColourTable class unit test class.
|
4
|
+
class ColourTableTest < Test::Unit::TestCase
|
5
|
+
def setup
|
6
|
+
@colours = [Colour.new(0, 0, 0),
|
7
|
+
Colour.new(100, 100, 100),
|
8
|
+
Colour.new(150, 150, 150),
|
9
|
+
Colour.new(200, 200, 200),
|
10
|
+
Colour.new(250, 250, 250)]
|
11
|
+
end
|
12
|
+
|
13
|
+
def test_01
|
14
|
+
tables = []
|
15
|
+
tables.push(ColourTable.new)
|
16
|
+
tables.push(ColourTable.new(@colours[0], @colours[2]))
|
17
|
+
tables.push(ColourTable.new(*@colours))
|
18
|
+
tables.push(ColourTable.new(@colours[0], @colours[1], @colours[0]))
|
19
|
+
|
20
|
+
assert(tables[0].size == 0)
|
21
|
+
assert(tables[1].size == 2)
|
22
|
+
assert(tables[2].size == 5)
|
23
|
+
assert(tables[3].size == 2)
|
24
|
+
|
25
|
+
assert(tables[0][0] == nil)
|
26
|
+
assert(tables[1][1] == @colours[2])
|
27
|
+
assert(tables[2][3] == @colours[3])
|
28
|
+
assert(tables[3][5] == nil)
|
29
|
+
|
30
|
+
assert(tables[0].index(@colours[1]) == nil)
|
31
|
+
assert(tables[1].index(@colours[2]) == 2)
|
32
|
+
assert(tables[2].index(@colours[3]) == 4)
|
33
|
+
assert(tables[3].index(@colours[4]) == nil)
|
34
|
+
|
35
|
+
tables[0].add(@colours[0])
|
36
|
+
assert(tables[0].size == 1)
|
37
|
+
assert(tables[0].index(@colours[0]) == 1)
|
38
|
+
|
39
|
+
tables[0] << @colours[1]
|
40
|
+
assert(tables[0].size == 2)
|
41
|
+
assert(tables[0].index(@colours[1]) == 2)
|
42
|
+
|
43
|
+
tables[0].add(@colours[1])
|
44
|
+
assert(tables[0].size == 2)
|
45
|
+
assert([tables[0][0], tables[0][1]] == [@colours[0], @colours[1]])
|
46
|
+
|
47
|
+
tables[0] << @colours[0]
|
48
|
+
assert(tables[0].size == 2)
|
49
|
+
assert([tables[0][0], tables[0][1]] == [@colours[0], @colours[1]])
|
50
|
+
|
51
|
+
flags = [false, false, false, false, false]
|
52
|
+
tables[2].each do |colour|
|
53
|
+
flags[@colours.index(colour)] = true if @colours.index(colour) != nil
|
54
|
+
end
|
55
|
+
assert(flags.index(false) == nil)
|
56
|
+
|
57
|
+
assert(tables[0].to_s(2) == " Colour Table (2 colours)\n"\
|
58
|
+
" Colour (0/0/0)\n"\
|
59
|
+
" Colour (100/100/100)")
|
60
|
+
assert(tables[1].to_s(4) == " Colour Table (2 colours)\n"\
|
61
|
+
" Colour (0/0/0)\n"\
|
62
|
+
" Colour (150/150/150)")
|
63
|
+
assert(tables[2].to_s(-6) == "Colour Table (5 colours)\n"\
|
64
|
+
" Colour (0/0/0)\n"\
|
65
|
+
" Colour (100/100/100)\n"\
|
66
|
+
" Colour (150/150/150)\n"\
|
67
|
+
" Colour (200/200/200)\n"\
|
68
|
+
" Colour (250/250/250)")
|
69
|
+
assert(tables[3].to_s == "Colour Table (2 colours)\n"\
|
70
|
+
" Colour (0/0/0)\n"\
|
71
|
+
" Colour (100/100/100)")
|
72
|
+
|
73
|
+
assert(tables[0].to_rtf(3) == " {\\colortbl\n ;\n"\
|
74
|
+
" \\red0\\green0\\blue0;\n"\
|
75
|
+
" \\red100\\green100\\blue100;\n"\
|
76
|
+
" }")
|
77
|
+
assert(tables[1].to_rtf(6) == " {\\colortbl\n ;\n"\
|
78
|
+
" \\red0\\green0\\blue0;\n"\
|
79
|
+
" \\red150\\green150\\blue150;\n"\
|
80
|
+
" }")
|
81
|
+
assert(tables[2].to_rtf(-9) == "{\\colortbl\n;\n"\
|
82
|
+
"\\red0\\green0\\blue0;\n"\
|
83
|
+
"\\red100\\green100\\blue100;\n"\
|
84
|
+
"\\red150\\green150\\blue150;\n"\
|
85
|
+
"\\red200\\green200\\blue200;\n"\
|
86
|
+
"\\red250\\green250\\blue250;\n"\
|
87
|
+
"}")
|
88
|
+
assert(tables[3].to_rtf == "{\\colortbl\n;\n"\
|
89
|
+
"\\red0\\green0\\blue0;\n"\
|
90
|
+
"\\red100\\green100\\blue100;\n"\
|
91
|
+
"}")
|
92
|
+
end
|
93
|
+
end
|
data/test/colour_test.rb
ADDED
@@ -0,0 +1,116 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
|
3
|
+
# Colour class unit test class.
|
4
|
+
class ColourTest < Test::Unit::TestCase
|
5
|
+
def test_01
|
6
|
+
colours = []
|
7
|
+
colours.push(Colour.new(255, 255, 255))
|
8
|
+
colours.push(Colour.new(200, 0, 0))
|
9
|
+
colours.push(Colour.new(0, 150, 0))
|
10
|
+
colours.push(Colour.new(0, 0, 100))
|
11
|
+
colours.push(Colour.new(0, 0, 0))
|
12
|
+
|
13
|
+
assert(colours[0] == colours[0])
|
14
|
+
assert(!(colours[1] == colours[2]))
|
15
|
+
assert(colours[3] == Colour.new(0, 0, 100))
|
16
|
+
assert(!(colours[4] == 12345))
|
17
|
+
|
18
|
+
assert(colours[0].red == 255)
|
19
|
+
assert(colours[0].green == 255)
|
20
|
+
assert(colours[0].blue == 255)
|
21
|
+
|
22
|
+
assert(colours[1].red == 200)
|
23
|
+
assert(colours[1].green == 0)
|
24
|
+
assert(colours[1].blue == 0)
|
25
|
+
|
26
|
+
assert(colours[2].red == 0)
|
27
|
+
assert(colours[2].green == 150)
|
28
|
+
assert(colours[2].blue == 0)
|
29
|
+
|
30
|
+
assert(colours[3].red == 0)
|
31
|
+
assert(colours[3].green == 0)
|
32
|
+
assert(colours[3].blue == 100)
|
33
|
+
|
34
|
+
assert(colours[4].red == 0)
|
35
|
+
assert(colours[4].green == 0)
|
36
|
+
assert(colours[4].blue == 0)
|
37
|
+
|
38
|
+
assert(colours[0].to_s(3) == ' Colour (255/255/255)')
|
39
|
+
assert(colours[1].to_s(6) == ' Colour (200/0/0)')
|
40
|
+
assert(colours[2].to_s(-20) == 'Colour (0/150/0)')
|
41
|
+
assert(colours[3].to_s == 'Colour (0/0/100)')
|
42
|
+
assert(colours[4].to_s == 'Colour (0/0/0)')
|
43
|
+
|
44
|
+
assert(colours[0].to_rtf(2) == ' \red255\green255\blue255;')
|
45
|
+
assert(colours[1].to_rtf(4) == ' \red200\green0\blue0;')
|
46
|
+
assert(colours[2].to_rtf(-6) == '\red0\green150\blue0;')
|
47
|
+
assert(colours[3].to_rtf == '\red0\green0\blue100;')
|
48
|
+
assert(colours[4].to_rtf == '\red0\green0\blue0;')
|
49
|
+
|
50
|
+
begin
|
51
|
+
Colour.new(256, 0, 0)
|
52
|
+
flunk("Successfully created a colour with an invalid red setting.")
|
53
|
+
rescue RTFError
|
54
|
+
rescue Test::Unit::AssertionFailedError => error
|
55
|
+
raise error
|
56
|
+
rescue => error
|
57
|
+
flunk("Unexpected exception caught. Type: #{error.class.name}\n"\
|
58
|
+
"Message: #{error.message}")
|
59
|
+
end
|
60
|
+
|
61
|
+
begin
|
62
|
+
Colour.new(0, 1000, 0)
|
63
|
+
flunk("Successfully created a colour with an invalid green setting.")
|
64
|
+
rescue RTFError
|
65
|
+
rescue Test::Unit::AssertionFailedError => error
|
66
|
+
raise error
|
67
|
+
rescue => error
|
68
|
+
flunk("Unexpected exception caught. Type: #{error.class.name}\n"\
|
69
|
+
"Message: #{error.message}")
|
70
|
+
end
|
71
|
+
|
72
|
+
begin
|
73
|
+
Colour.new(0, 0, -300)
|
74
|
+
flunk("Successfully created a colour with an invalid blue setting.")
|
75
|
+
rescue RTFError
|
76
|
+
rescue Test::Unit::AssertionFailedError => error
|
77
|
+
raise error
|
78
|
+
rescue => error
|
79
|
+
flunk("Unexpected exception caught. Type: #{error.class.name}\n"\
|
80
|
+
"Message: #{error.message}")
|
81
|
+
end
|
82
|
+
|
83
|
+
begin
|
84
|
+
Colour.new('La la la', 0, 0)
|
85
|
+
flunk("Successfully created a colour with an invalid red type.")
|
86
|
+
rescue RTFError
|
87
|
+
rescue Test::Unit::AssertionFailedError => error
|
88
|
+
raise error
|
89
|
+
rescue => error
|
90
|
+
flunk("Unexpected exception caught. Type: #{error.class.name}\n"\
|
91
|
+
"Message: #{error.message}")
|
92
|
+
end
|
93
|
+
|
94
|
+
begin
|
95
|
+
Colour.new(0, {}, 0)
|
96
|
+
flunk("Successfully created a colour with an invalid green type.")
|
97
|
+
rescue RTFError
|
98
|
+
rescue Test::Unit::AssertionFailedError => error
|
99
|
+
raise error
|
100
|
+
rescue => error
|
101
|
+
flunk("Unexpected exception caught. Type: #{error.class.name}\n"\
|
102
|
+
"Message: #{error.message}")
|
103
|
+
end
|
104
|
+
|
105
|
+
begin
|
106
|
+
Colour.new(0, 0, [])
|
107
|
+
flunk("Successfully created a colour with an invalid blue type.")
|
108
|
+
rescue RTFError
|
109
|
+
rescue Test::Unit::AssertionFailedError => error
|
110
|
+
raise error
|
111
|
+
rescue => error
|
112
|
+
flunk("Unexpected exception caught. Type: #{error.class.name}\n"\
|
113
|
+
"Message: #{error.message}")
|
114
|
+
end
|
115
|
+
end
|
116
|
+
end
|
@@ -0,0 +1,219 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
|
3
|
+
# Information class unit test class.
|
4
|
+
class CommandNodeTest < Test::Unit::TestCase
|
5
|
+
def test_basics
|
6
|
+
nodes = []
|
7
|
+
nodes.push(CommandNode.new(nil, 'prefix'))
|
8
|
+
nodes.push(CommandNode.new(nil, '', 'lalala'))
|
9
|
+
nodes.push(CommandNode.new(nodes[0], '', nil, false))
|
10
|
+
|
11
|
+
assert(nodes[0].prefix == 'prefix')
|
12
|
+
assert(nodes[1].prefix == '')
|
13
|
+
assert(nodes[2].prefix == '')
|
14
|
+
|
15
|
+
assert(nodes[0].suffix == nil)
|
16
|
+
assert(nodes[1].suffix == 'lalala')
|
17
|
+
assert(nodes[2].suffix == nil)
|
18
|
+
|
19
|
+
assert(nodes[0].split == true)
|
20
|
+
assert(nodes[1].split == true)
|
21
|
+
assert(nodes[2].split == false)
|
22
|
+
end
|
23
|
+
|
24
|
+
# Test line breaks.
|
25
|
+
def test_line_break
|
26
|
+
root = CommandNode.new(nil, nil)
|
27
|
+
|
28
|
+
assert(root.line_break == nil)
|
29
|
+
assert(root.size == 1)
|
30
|
+
assert(root[0].class == CommandNode)
|
31
|
+
assert(root[0].prefix == '\line')
|
32
|
+
assert(root[0].suffix == nil)
|
33
|
+
assert(root[0].split == false)
|
34
|
+
end
|
35
|
+
|
36
|
+
# Test paragraphs.
|
37
|
+
def test_paragraph
|
38
|
+
root = CommandNode.new(nil, nil)
|
39
|
+
style = ParagraphStyle.new
|
40
|
+
|
41
|
+
assert(root.paragraph(style) != nil)
|
42
|
+
assert(root.size == 1)
|
43
|
+
assert(root[0].class == CommandNode)
|
44
|
+
assert(root[0].prefix == '\pard\ql')
|
45
|
+
assert(root[0].suffix == '\par')
|
46
|
+
assert(root.split == true)
|
47
|
+
|
48
|
+
style.justification = ParagraphStyle::RIGHT_JUSTIFY
|
49
|
+
assert(root.paragraph(style).prefix == '\pard\qr')
|
50
|
+
|
51
|
+
style.justification = ParagraphStyle::CENTRE_JUSTIFY
|
52
|
+
assert(root.paragraph(style).prefix == '\pard\qc')
|
53
|
+
|
54
|
+
style.justification = ParagraphStyle::FULL_JUSTIFY
|
55
|
+
assert(root.paragraph(style).prefix == '\pard\qj')
|
56
|
+
|
57
|
+
style.justification = ParagraphStyle::LEFT_JUSTIFY
|
58
|
+
style.space_before = 100
|
59
|
+
root.paragraph(style)
|
60
|
+
assert(root[-1].prefix == '\pard\ql\sb100')
|
61
|
+
|
62
|
+
style.space_before = nil
|
63
|
+
style.space_after = 1234
|
64
|
+
root.paragraph(style)
|
65
|
+
assert(root[-1].prefix == '\pard\ql\sa1234')
|
66
|
+
|
67
|
+
style.space_before = nil
|
68
|
+
style.space_after = nil
|
69
|
+
style.left_indent = 10
|
70
|
+
root.paragraph(style)
|
71
|
+
assert(root[-1].prefix == '\pard\ql\li10')
|
72
|
+
|
73
|
+
style.space_before = nil
|
74
|
+
style.space_after = nil
|
75
|
+
style.left_indent = nil
|
76
|
+
style.right_indent = 234
|
77
|
+
root.paragraph(style)
|
78
|
+
assert(root[-1].prefix == '\pard\ql\ri234')
|
79
|
+
|
80
|
+
style.space_before = nil
|
81
|
+
style.space_after = nil
|
82
|
+
style.left_indent = nil
|
83
|
+
style.right_indent = nil
|
84
|
+
style.first_line_indent = 765
|
85
|
+
root.paragraph(style)
|
86
|
+
assert(root[-1].prefix == '\pard\ql\fi765')
|
87
|
+
|
88
|
+
style.space_before = 12
|
89
|
+
style.space_after = 23
|
90
|
+
style.left_indent = 34
|
91
|
+
style.right_indent = 45
|
92
|
+
style.first_line_indent = 56
|
93
|
+
root.paragraph(style)
|
94
|
+
assert(root[-1].prefix == '\pard\ql\li34\ri45\fi56\sb12\sa23')
|
95
|
+
|
96
|
+
node = nil
|
97
|
+
root.paragraph(style) {|n| node = n}
|
98
|
+
assert(node == root[-1])
|
99
|
+
end
|
100
|
+
|
101
|
+
# Test applications of styles.
|
102
|
+
def test_style
|
103
|
+
root = Document.new(Font.new(Font::ROMAN, 'Arial'))
|
104
|
+
style = CharacterStyle.new
|
105
|
+
style.bold = true
|
106
|
+
|
107
|
+
assert(root.apply(style) != nil)
|
108
|
+
assert(root.size == 1)
|
109
|
+
assert(root[0].class == CommandNode)
|
110
|
+
assert(root[0].prefix == '\b')
|
111
|
+
assert(root[0].suffix == nil)
|
112
|
+
assert(root[0].split == true)
|
113
|
+
|
114
|
+
style.underline = true
|
115
|
+
assert(root.apply(style).prefix == '\b\ul')
|
116
|
+
|
117
|
+
style.bold = false
|
118
|
+
style.superscript = true
|
119
|
+
assert(root.apply(style).prefix == '\ul\super')
|
120
|
+
|
121
|
+
style.underline = false
|
122
|
+
style.italic = true
|
123
|
+
assert(root.apply(style).prefix == '\i\super')
|
124
|
+
|
125
|
+
style.italic = false
|
126
|
+
style.bold = true
|
127
|
+
assert(root.apply(style).prefix == '\b\super')
|
128
|
+
|
129
|
+
style.bold = false
|
130
|
+
style.superscript = false
|
131
|
+
style.italic = true
|
132
|
+
style.font_size = 20
|
133
|
+
assert(root.apply(style).prefix == '\i\fs20')
|
134
|
+
|
135
|
+
node = nil
|
136
|
+
root.apply(style) {|n| node = n}
|
137
|
+
assert(node == root[-1])
|
138
|
+
|
139
|
+
# Test style short cuts.
|
140
|
+
node = root.bold
|
141
|
+
assert(node.prefix == '\b')
|
142
|
+
assert(node.suffix == nil)
|
143
|
+
assert(node == root[-1])
|
144
|
+
|
145
|
+
node = root.italic
|
146
|
+
assert(node.prefix == '\i')
|
147
|
+
assert(node.suffix == nil)
|
148
|
+
assert(node == root[-1])
|
149
|
+
|
150
|
+
node = root.underline
|
151
|
+
assert(node.prefix == '\ul')
|
152
|
+
assert(node.suffix == nil)
|
153
|
+
assert(node == root[-1])
|
154
|
+
|
155
|
+
node = root.superscript
|
156
|
+
assert(node.prefix == '\super')
|
157
|
+
assert(node.suffix == nil)
|
158
|
+
assert(node == root[-1])
|
159
|
+
|
160
|
+
node = root.subscript
|
161
|
+
assert(node.prefix == '\sub')
|
162
|
+
assert(node.suffix == nil)
|
163
|
+
assert(node == root[-1])
|
164
|
+
end
|
165
|
+
|
166
|
+
# Test text node addition.
|
167
|
+
def test_text
|
168
|
+
root = CommandNode.new(nil, nil)
|
169
|
+
|
170
|
+
root << 'A block of text.'
|
171
|
+
assert(root.size == 1)
|
172
|
+
assert(root[0].class == TextNode)
|
173
|
+
assert(root[0].text == 'A block of text.')
|
174
|
+
|
175
|
+
root << " More text."
|
176
|
+
assert(root.size == 1)
|
177
|
+
assert(root[0].class == TextNode)
|
178
|
+
assert(root[0].text == 'A block of text. More text.')
|
179
|
+
|
180
|
+
root.paragraph
|
181
|
+
root << "A new node."
|
182
|
+
assert(root.size == 3)
|
183
|
+
assert(root[0].class == TextNode)
|
184
|
+
assert(root[-1].class == TextNode)
|
185
|
+
assert(root[0].text == 'A block of text. More text.')
|
186
|
+
assert(root[-1].text == 'A new node.')
|
187
|
+
end
|
188
|
+
|
189
|
+
# Test table addition.
|
190
|
+
def test_table
|
191
|
+
root = CommandNode.new(nil, nil)
|
192
|
+
|
193
|
+
table = root.table(3, 3, 100, 150, 200)
|
194
|
+
assert(root.size == 1)
|
195
|
+
assert(root[0].class == TableNode)
|
196
|
+
assert(root[0] == table)
|
197
|
+
assert(table.rows == 3)
|
198
|
+
assert(table.columns == 3)
|
199
|
+
|
200
|
+
assert(table[0][0].width == 100)
|
201
|
+
assert(table[0][1].width == 150)
|
202
|
+
assert(table[0][2].width == 200)
|
203
|
+
end
|
204
|
+
|
205
|
+
# This test checks the previous_node and next_node methods that could not be
|
206
|
+
# fully and properly checked in the NodeTest.rb file.
|
207
|
+
def test_peers
|
208
|
+
root = Document.new(Font.new(Font::ROMAN, 'Arial'))
|
209
|
+
nodes = []
|
210
|
+
nodes.push(root.paragraph)
|
211
|
+
nodes.push(root.bold)
|
212
|
+
nodes.push(root.underline)
|
213
|
+
|
214
|
+
assert(root.previous_node == nil)
|
215
|
+
assert(root.next_node == nil)
|
216
|
+
assert(nodes[1].previous_node == nodes[0])
|
217
|
+
assert(nodes[1].next_node == nodes[2])
|
218
|
+
end
|
219
|
+
end
|
@@ -0,0 +1,64 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
|
3
|
+
# Information class unit test class.
|
4
|
+
class ContainerNodeTest < Test::Unit::TestCase
|
5
|
+
def test01
|
6
|
+
nodes = []
|
7
|
+
nodes.push(ContainerNode.new(nil))
|
8
|
+
nodes.push(ContainerNode.new(nodes[0]))
|
9
|
+
|
10
|
+
assert(nodes[0].size == 0)
|
11
|
+
assert(nodes[1].size == 0)
|
12
|
+
|
13
|
+
assert(nodes[0].first == nil)
|
14
|
+
assert(nodes[0].last == nil)
|
15
|
+
assert(nodes[1].first == nil)
|
16
|
+
assert(nodes[1].last == nil)
|
17
|
+
|
18
|
+
assert(nodes[0][0] == nil)
|
19
|
+
assert(nodes[1][-1] == nil)
|
20
|
+
|
21
|
+
count = 0
|
22
|
+
nodes[0].each {|entry| count += 1}
|
23
|
+
assert(count == 0)
|
24
|
+
nodes[1].each {|entry| count += 1}
|
25
|
+
assert(count == 0)
|
26
|
+
end
|
27
|
+
|
28
|
+
def test02
|
29
|
+
node = ContainerNode.new(nil)
|
30
|
+
child1 = ContainerNode.new(nil)
|
31
|
+
child2 = ContainerNode.new(nil)
|
32
|
+
|
33
|
+
node.store(child1)
|
34
|
+
assert(node.size == 1)
|
35
|
+
assert(node[0] == child1)
|
36
|
+
assert(node[-1] == child1)
|
37
|
+
assert(node[0].parent == node)
|
38
|
+
assert(node.first == child1)
|
39
|
+
assert(node.last == child1)
|
40
|
+
|
41
|
+
count = 0
|
42
|
+
node.each {|entry| count += 1}
|
43
|
+
assert(count == 1)
|
44
|
+
|
45
|
+
node.store(child2)
|
46
|
+
assert(node.size == 2)
|
47
|
+
assert(node[0] == child1)
|
48
|
+
assert(node[1] == child2)
|
49
|
+
assert(node[-1] == child2)
|
50
|
+
assert(node[-2] == child1)
|
51
|
+
assert(node[0].parent == node)
|
52
|
+
assert(node[1].parent == node)
|
53
|
+
assert(node.first == child1)
|
54
|
+
assert(node.last == child2)
|
55
|
+
end
|
56
|
+
|
57
|
+
def test03
|
58
|
+
begin
|
59
|
+
ContainerNode.new(nil).to_rtf
|
60
|
+
flunk("Successfully called ContainerNode#to_rtf().")
|
61
|
+
rescue => error
|
62
|
+
end
|
63
|
+
end
|
64
|
+
end
|