libxml-jruby-fixed 1.0.0-jruby
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/History.txt +4 -0
- data/Manifest.txt +91 -0
- data/README.txt +50 -0
- data/Rakefile +40 -0
- data/lib/libxml-jruby.rb +84 -0
- data/lib/libxml-jruby/xml.rb +1 -0
- data/lib/libxml-jruby/xml/attr.rb +46 -0
- data/lib/libxml-jruby/xml/attributes.rb +68 -0
- data/lib/libxml-jruby/xml/document.rb +52 -0
- data/lib/libxml-jruby/xml/dtd.rb +25 -0
- data/lib/libxml-jruby/xml/node.rb +285 -0
- data/lib/libxml-jruby/xml/ns.rb +19 -0
- data/lib/libxml-jruby/xml/parser.rb +121 -0
- data/lib/libxml-jruby/xml/xpath.rb +98 -0
- data/lib/libxml.rb +1 -0
- data/lib/xml.rb +13 -0
- data/lib/xml/libxml.rb +8 -0
- data/script/benchmark/depixelate.rb +633 -0
- data/script/benchmark/hamlet.xml +9055 -0
- data/script/benchmark/sock_entries.xml +507 -0
- data/script/benchmark/throughput.rb +40 -0
- data/script/benchmark/xml_benchmarks.rb +228 -0
- data/script/test +6 -0
- data/tasks/ann.rake +81 -0
- data/tasks/bones.rake +21 -0
- data/tasks/gem.rake +126 -0
- data/tasks/git.rake +41 -0
- data/tasks/manifest.rake +49 -0
- data/tasks/notes.rake +28 -0
- data/tasks/post_load.rake +39 -0
- data/tasks/rdoc.rake +51 -0
- data/tasks/rubyforge.rake +57 -0
- data/tasks/setup.rb +268 -0
- data/tasks/spec.rake +55 -0
- data/tasks/svn.rake +48 -0
- data/tasks/test.rake +38 -0
- data/test/etc_doc_to_s.rb +19 -0
- data/test/ets_copy_bug.rb +21 -0
- data/test/ets_copy_bug3.rb +38 -0
- data/test/ets_doc_file.rb +15 -0
- data/test/ets_doc_to_s.rb +21 -0
- data/test/ets_gpx.rb +26 -0
- data/test/ets_node_gc.rb +21 -0
- data/test/ets_test.xml +2 -0
- data/test/ets_tsr.rb +9 -0
- data/test/model/books.xml +147 -0
- data/test/model/default_validation_bug.rb +0 -0
- data/test/model/merge_bug_data.xml +58 -0
- data/test/model/rubynet.xml +78 -0
- data/test/model/rubynet_project +1 -0
- data/test/model/saxtest.xml +5 -0
- data/test/model/shiporder.rnc +28 -0
- data/test/model/shiporder.rng +86 -0
- data/test/model/shiporder.xml +23 -0
- data/test/model/shiporder.xsd +31 -0
- data/test/model/simple.xml +7 -0
- data/test/model/soap.xml +27 -0
- data/test/model/xinclude.xml +5 -0
- data/test/tc_attributes.rb +110 -0
- data/test/tc_deprecated_require.rb +13 -0
- data/test/tc_document.rb +97 -0
- data/test/tc_document_write.rb +139 -0
- data/test/tc_dtd.rb +70 -0
- data/test/tc_html_parser.rb +63 -0
- data/test/tc_node.rb +108 -0
- data/test/tc_node_attr.rb +176 -0
- data/test/tc_node_cdata.rb +51 -0
- data/test/tc_node_comment.rb +32 -0
- data/test/tc_node_copy.rb +40 -0
- data/test/tc_node_edit.rb +98 -0
- data/test/tc_node_set.rb +24 -0
- data/test/tc_node_set2.rb +37 -0
- data/test/tc_node_text.rb +17 -0
- data/test/tc_node_xlink.rb +28 -0
- data/test/tc_ns.rb +18 -0
- data/test/tc_parser.rb +308 -0
- data/test/tc_parser_context.rb +126 -0
- data/test/tc_properties.rb +37 -0
- data/test/tc_reader.rb +112 -0
- data/test/tc_relaxng.rb +39 -0
- data/test/tc_sax_parser.rb +113 -0
- data/test/tc_schema.rb +39 -0
- data/test/tc_traversal.rb +220 -0
- data/test/tc_well_formed.rb +11 -0
- data/test/tc_xinclude.rb +26 -0
- data/test/tc_xpath.rb +130 -0
- data/test/tc_xpath_context.rb +72 -0
- data/test/tc_xpointer.rb +78 -0
- data/test/test_libxml-jruby.rb +0 -0
- data/test/test_suite.rb +31 -0
- data/test/ts_working.rb +31 -0
- metadata +146 -0
@@ -0,0 +1,176 @@
|
|
1
|
+
require "xml"
|
2
|
+
require 'test/unit'
|
3
|
+
|
4
|
+
class AttrNodeTest < Test::Unit::TestCase
|
5
|
+
def setup()
|
6
|
+
xp = XML::Parser.string(<<-EOS)
|
7
|
+
<CityModel
|
8
|
+
xmlns="http://www.opengis.net/examples"
|
9
|
+
xmlns:city="http://www.opengis.net/examples"
|
10
|
+
xmlns:gml="http://www.opengis.net/gml"
|
11
|
+
xmlns:xlink="http://www.w3.org/1999/xlink"
|
12
|
+
xmlns:xsi="http://www.w3.org/2000/10/XMLSchema-instance"
|
13
|
+
xsi:schemaLocation="http://www.opengis.net/examples city.xsd">
|
14
|
+
<type>City</type>
|
15
|
+
<cityMember name="Cambridge"
|
16
|
+
xlink:type="simple"
|
17
|
+
xlink:title="Trinity Lane"
|
18
|
+
xlink:href="http://www.foo.net/cgi-bin/wfs?FeatureID=C10239"
|
19
|
+
gml:remoteSchema="city.xsd#xpointer(//complexType[@name='RoadType'])"/>
|
20
|
+
</CityModel>
|
21
|
+
EOS
|
22
|
+
|
23
|
+
@doc = xp.parse
|
24
|
+
end
|
25
|
+
|
26
|
+
def teardown()
|
27
|
+
@doc = nil
|
28
|
+
end
|
29
|
+
|
30
|
+
def city_member
|
31
|
+
@doc.find('/city:CityModel/city:cityMember').first
|
32
|
+
end
|
33
|
+
|
34
|
+
def test_types
|
35
|
+
attribute = city_member.attributes.get_attribute('name')
|
36
|
+
assert_instance_of(XML::Attr, attribute)
|
37
|
+
assert_equal('attribute', attribute.node_type_name)
|
38
|
+
end
|
39
|
+
|
40
|
+
def test_name
|
41
|
+
attribute = city_member.attributes.get_attribute('name')
|
42
|
+
assert_equal('name', attribute.name)
|
43
|
+
|
44
|
+
# FIXME Namespaced attribute, without namespace specified
|
45
|
+
# attribute = city_member.attributes.get_attribute('href')
|
46
|
+
# assert_equal('href', attribute.name)
|
47
|
+
# assert_equal('xlink', attribute.ns.prefix)
|
48
|
+
# assert_equal('http://www.w3.org/1999/xlink', attribute.ns.href)
|
49
|
+
|
50
|
+
# FIXME This should be working, review ASAP
|
51
|
+
# attribute = city_member.attributes.get_attribute_ns('http://www.w3.org/1999/xlink', 'href')
|
52
|
+
# assert_equal('href', attribute.name)
|
53
|
+
# assert_equal('xlink', attribute.ns.prefix)
|
54
|
+
# assert_equal('http://www.w3.org/1999/xlink', attribute.ns.href)
|
55
|
+
end
|
56
|
+
|
57
|
+
def test_value
|
58
|
+
attribute = city_member.attributes.get_attribute('name')
|
59
|
+
assert_equal('Cambridge', attribute.value)
|
60
|
+
|
61
|
+
# FIXME Namespaced attribute, without namespace specified
|
62
|
+
# attribute = city_member.attributes.get_attribute('href')
|
63
|
+
# assert_equal('http://www.foo.net/cgi-bin/wfs?FeatureID=C10239', attribute.value)
|
64
|
+
end
|
65
|
+
|
66
|
+
def test_set_value
|
67
|
+
attribute = city_member.attributes.get_attribute('name')
|
68
|
+
attribute.value = 'London'
|
69
|
+
assert_equal('London', attribute.value)
|
70
|
+
|
71
|
+
# FIXME Namespaced attribute, without namespace specified
|
72
|
+
# attribute = city_member.attributes.get_attribute('href')
|
73
|
+
# attribute.value = 'http://i.have.changed'
|
74
|
+
# assert_equal('http://i.have.changed', attribute.value)
|
75
|
+
end
|
76
|
+
|
77
|
+
def test_set_nil
|
78
|
+
attribute = city_member.attributes.get_attribute('name')
|
79
|
+
assert_raise(TypeError) do
|
80
|
+
attribute.value = nil
|
81
|
+
end
|
82
|
+
end
|
83
|
+
|
84
|
+
def test_create
|
85
|
+
attributes = city_member.attributes
|
86
|
+
assert_equal(5, attributes.length)
|
87
|
+
|
88
|
+
attr = XML::Attr.new(city_member, 'size', '50,000')
|
89
|
+
assert_instance_of(XML::Attr, attr)
|
90
|
+
|
91
|
+
attributes = city_member.attributes
|
92
|
+
assert_equal(6, attributes.length)
|
93
|
+
|
94
|
+
assert_equal(attributes['size'], '50,000')
|
95
|
+
end
|
96
|
+
|
97
|
+
def test_create_on_node
|
98
|
+
attributes = city_member.attributes
|
99
|
+
assert_equal(5, attributes.length)
|
100
|
+
|
101
|
+
attributes['country'] = 'England'
|
102
|
+
|
103
|
+
attributes = city_member.attributes
|
104
|
+
assert_equal(6, attributes.length)
|
105
|
+
|
106
|
+
assert_equal(attributes['country'], 'England')
|
107
|
+
end
|
108
|
+
|
109
|
+
def test_create_ns
|
110
|
+
assert_equal(5, city_member.attributes.length)
|
111
|
+
|
112
|
+
ns = XML::NS.new(city_member, 'my_namepace', 'http://www.mynamespace.com')
|
113
|
+
attr = XML::Attr.new(city_member, 'rating', 'rocks', ns)
|
114
|
+
assert_instance_of(XML::Attr, attr)
|
115
|
+
# FIXME I'm not sure what is going on here, look at Attr#initialize
|
116
|
+
# assert_equal('rating', attr.name)
|
117
|
+
# assert_equal('rocks', attr.value)
|
118
|
+
|
119
|
+
attributes = city_member.attributes
|
120
|
+
assert_equal(6, attributes.length)
|
121
|
+
|
122
|
+
assert_equal('rocks', city_member['rating'])
|
123
|
+
end
|
124
|
+
|
125
|
+
def test_remove
|
126
|
+
attributes = city_member.attributes
|
127
|
+
assert_equal(5, attributes.length)
|
128
|
+
|
129
|
+
attribute = attributes.get_attribute('name')
|
130
|
+
assert_not_nil(attribute.parent)
|
131
|
+
assert(attribute.parent?)
|
132
|
+
|
133
|
+
attribute.remove!
|
134
|
+
assert_equal(4, attributes.length)
|
135
|
+
assert_nil(attribute.parent)
|
136
|
+
assert(!attribute.parent?)
|
137
|
+
end
|
138
|
+
|
139
|
+
# FIXME Ordering of Attributes is not implemented yet
|
140
|
+
# def test_first
|
141
|
+
# attribute = city_member.attributes.first
|
142
|
+
# assert_instance_of(XML::Attr, attribute)
|
143
|
+
# assert_equal('name', attribute.name)
|
144
|
+
# assert_equal('Cambridge', attribute.value)
|
145
|
+
#
|
146
|
+
# attribute = attribute.next
|
147
|
+
# assert_instance_of(XML::Attr, attribute)
|
148
|
+
# assert_equal('type', attribute.name)
|
149
|
+
# assert_equal('simple', attribute.value)
|
150
|
+
#
|
151
|
+
# attribute = attribute.next
|
152
|
+
# assert_instance_of(XML::Attr, attribute)
|
153
|
+
# assert_equal('title', attribute.name)
|
154
|
+
# assert_equal('Trinity Lane', attribute.value)
|
155
|
+
#
|
156
|
+
# attribute = attribute.next
|
157
|
+
# assert_instance_of(XML::Attr, attribute)
|
158
|
+
# assert_equal('href', attribute.name)
|
159
|
+
# assert_equal('http://www.foo.net/cgi-bin/wfs?FeatureID=C10239', attribute.value)
|
160
|
+
#
|
161
|
+
# attribute = attribute.next
|
162
|
+
# assert_instance_of(XML::Attr, attribute)
|
163
|
+
# assert_equal('remoteSchema', attribute.name)
|
164
|
+
# assert_equal("city.xsd#xpointer(//complexType[@name='RoadType'])", attribute.value)
|
165
|
+
#
|
166
|
+
# attribute = attribute.next
|
167
|
+
# assert_nil(attribute)
|
168
|
+
# end
|
169
|
+
|
170
|
+
def test_no_attributes
|
171
|
+
element = @doc.find('/city:CityModel/city:type').first
|
172
|
+
|
173
|
+
assert_not_nil(element.attributes)
|
174
|
+
assert_equal(0, element.attributes.length)
|
175
|
+
end
|
176
|
+
end
|
@@ -0,0 +1,51 @@
|
|
1
|
+
require 'xml'
|
2
|
+
require 'test/unit'
|
3
|
+
|
4
|
+
class CDataCommentTest < Test::Unit::TestCase
|
5
|
+
def setup
|
6
|
+
xp = XML::Parser.new()
|
7
|
+
str = '<root></root>'
|
8
|
+
assert_equal(str, xp.string = str)
|
9
|
+
@doc = xp.parse
|
10
|
+
assert_instance_of(XML::Document, @doc)
|
11
|
+
@root = @doc.root
|
12
|
+
end
|
13
|
+
|
14
|
+
def test_node_type
|
15
|
+
cnode = XML::Node.new_cdata('test cdata')
|
16
|
+
assert_equal(XML::Node::CDATA_SECTION_NODE, cnode.node_type)
|
17
|
+
end
|
18
|
+
|
19
|
+
def test_add_cdata
|
20
|
+
@root << XML::Node.new_cdata('mycdata')
|
21
|
+
assert_equal '<root><![CDATA[mycdata]]></root>',
|
22
|
+
@root.to_s.gsub(/\n\s*/,'')
|
23
|
+
end
|
24
|
+
|
25
|
+
def test_add_cdata_2
|
26
|
+
@root << XML::Node.new_cdata('mycdata')
|
27
|
+
assert_equal 'cdata',
|
28
|
+
@root.child.node_type_name
|
29
|
+
end
|
30
|
+
|
31
|
+
def test_add_cdata_3
|
32
|
+
@root << el = XML::Node.new_cdata('mycdata')
|
33
|
+
el << "_this_is_added"
|
34
|
+
assert_equal '<root><![CDATA[mycdata_this_is_added]]></root>',
|
35
|
+
@root.to_s.gsub(/\n\s*/,'')
|
36
|
+
end
|
37
|
+
|
38
|
+
def test_attributes
|
39
|
+
cnode = XML::Node.new_cdata('test cdata')
|
40
|
+
assert_equal(0, cnode.attributes.length)
|
41
|
+
end
|
42
|
+
|
43
|
+
def test_set_cdata_attribute
|
44
|
+
cnode = XML::Node.new_cdata('test cdata')
|
45
|
+
|
46
|
+
# Can't create attributes on non-element nodes
|
47
|
+
assert_raise(ArgumentError) do
|
48
|
+
cnode['attr'] = '123'
|
49
|
+
end
|
50
|
+
end
|
51
|
+
end
|
@@ -0,0 +1,32 @@
|
|
1
|
+
require "xml"
|
2
|
+
require 'test/unit'
|
3
|
+
|
4
|
+
class NodeCommentTest < Test::Unit::TestCase
|
5
|
+
def setup()
|
6
|
+
xp = XML::Parser.new()
|
7
|
+
str = '<root></root>'
|
8
|
+
assert_equal(str, xp.string = str)
|
9
|
+
@doc = xp.parse
|
10
|
+
assert_instance_of(XML::Document, @doc)
|
11
|
+
@root = @doc.root
|
12
|
+
end
|
13
|
+
|
14
|
+
def test_libxml_node_add_comment_01
|
15
|
+
@root << XML::Node.new_comment('mycomment')
|
16
|
+
assert_equal '<root><!--mycomment--></root>',
|
17
|
+
@root.to_s.gsub(/\n\s*/,'')
|
18
|
+
end
|
19
|
+
|
20
|
+
def test_libxml_node_add_comment_02
|
21
|
+
@root << XML::Node.new_comment('mycomment')
|
22
|
+
assert_equal 'comment',
|
23
|
+
@root.child.node_type_name
|
24
|
+
end
|
25
|
+
|
26
|
+
def test_libxml_node_add_comment_03
|
27
|
+
@root << el = XML::Node.new_comment('mycomment')
|
28
|
+
el << "_this_is_added"
|
29
|
+
assert_equal '<root><!--mycomment_this_is_added--></root>',
|
30
|
+
@root.to_s.gsub(/\n\s*/,'')
|
31
|
+
end
|
32
|
+
end
|
@@ -0,0 +1,40 @@
|
|
1
|
+
require "xml"
|
2
|
+
require 'test/unit'
|
3
|
+
|
4
|
+
# see mailing list archive
|
5
|
+
# [libxml-devel] Segmentation fault when add the cloned/copied node
|
6
|
+
# 2007/11/27 20:51
|
7
|
+
|
8
|
+
class TC_XML_Node_Copy < Test::Unit::TestCase
|
9
|
+
def setup
|
10
|
+
str = <<-STR
|
11
|
+
<html><body>
|
12
|
+
<div class="textarea" id="t1" style="STATIC">foo</div>
|
13
|
+
<div class="textarea" id="t2" style="STATIC">bar</div>
|
14
|
+
</body></html>
|
15
|
+
STR
|
16
|
+
|
17
|
+
doc = XML::Parser.string(str).parse
|
18
|
+
|
19
|
+
xpath = "//div"
|
20
|
+
@div1 = doc.find(xpath).to_a[0]
|
21
|
+
@div2 = doc.find(xpath).to_a[1]
|
22
|
+
end
|
23
|
+
|
24
|
+
def test_libxml_node_copy_not_segv
|
25
|
+
@div2.each do |child|
|
26
|
+
c = child.copy(false)
|
27
|
+
@div1.child_add(c)
|
28
|
+
end
|
29
|
+
assert @div1.to_s =~ /foo/
|
30
|
+
end
|
31
|
+
|
32
|
+
def test_libxml_node_clone_not_segv
|
33
|
+
@div2.each do |child|
|
34
|
+
c = child.clone
|
35
|
+
@div1.child_add(c)
|
36
|
+
end
|
37
|
+
assert @div1.to_s =~ /foo/
|
38
|
+
end
|
39
|
+
|
40
|
+
end # TC_XML_Node_Copy
|
@@ -0,0 +1,98 @@
|
|
1
|
+
require "xml"
|
2
|
+
require 'test/unit'
|
3
|
+
|
4
|
+
class TestNodeEdit < Test::Unit::TestCase
|
5
|
+
def setup
|
6
|
+
xp = XML::Parser.new()
|
7
|
+
xp.string = '<test><num>one</num><num>two</num><num>three</num></test>'
|
8
|
+
@doc = xp.parse
|
9
|
+
end
|
10
|
+
|
11
|
+
def teardown
|
12
|
+
@doc = nil
|
13
|
+
end
|
14
|
+
|
15
|
+
def first_node
|
16
|
+
@doc.root.child
|
17
|
+
end
|
18
|
+
|
19
|
+
def second_node
|
20
|
+
first_node.next
|
21
|
+
end
|
22
|
+
|
23
|
+
def third_node
|
24
|
+
second_node.next
|
25
|
+
end
|
26
|
+
|
27
|
+
def test_add_next_01
|
28
|
+
first_node.next = XML::Node.new('num', 'one-and-a-half')
|
29
|
+
assert_equal('<test><num>one</num><num>one-and-a-half</num><num>two</num><num>three</num></test>',
|
30
|
+
@doc.root.to_s.gsub(/\n\s*/,''))
|
31
|
+
end
|
32
|
+
|
33
|
+
def test_add_next_02
|
34
|
+
second_node.next = XML::Node.new('num', 'two-and-a-half')
|
35
|
+
assert_equal('<test><num>one</num><num>two</num><num>two-and-a-half</num><num>three</num></test>',
|
36
|
+
@doc.root.to_s.gsub(/\n\s*/,''))
|
37
|
+
end
|
38
|
+
|
39
|
+
def test_add_next_03
|
40
|
+
third_node.next = XML::Node.new('num', 'four')
|
41
|
+
assert_equal '<test><num>one</num><num>two</num><num>three</num><num>four</num></test>',
|
42
|
+
@doc.root.to_s.gsub(/\n\s*/,'')
|
43
|
+
end
|
44
|
+
|
45
|
+
def test_add_prev_01
|
46
|
+
first_node.prev = XML::Node.new('num', 'half')
|
47
|
+
assert_equal '<test><num>half</num><num>one</num><num>two</num><num>three</num></test>',
|
48
|
+
@doc.root.to_s.gsub(/\n\s*/,'')
|
49
|
+
end
|
50
|
+
|
51
|
+
def test_add_prev_02
|
52
|
+
second_node.prev = XML::Node.new('num', 'one-and-a-half')
|
53
|
+
assert_equal '<test><num>one</num><num>one-and-a-half</num><num>two</num><num>three</num></test>',
|
54
|
+
@doc.root.to_s.gsub(/\n\s*/,'')
|
55
|
+
end
|
56
|
+
|
57
|
+
def test_add_prev_03
|
58
|
+
third_node.prev = XML::Node.new('num', 'two-and-a-half')
|
59
|
+
assert_equal '<test><num>one</num><num>two</num><num>two-and-a-half</num><num>three</num></test>',
|
60
|
+
@doc.root.to_s.gsub(/\n\s*/,'')
|
61
|
+
end
|
62
|
+
|
63
|
+
def test_remove_node()
|
64
|
+
first_node.remove!
|
65
|
+
assert_equal('<test><num>two</num><num>three</num></test>',
|
66
|
+
@doc.root.to_s.gsub(/\n\s*/,''))
|
67
|
+
end
|
68
|
+
|
69
|
+
# This test is to verify that an earlier reported bug has been fixed
|
70
|
+
def test_merge
|
71
|
+
documents = []
|
72
|
+
|
73
|
+
# Read in 500 documents
|
74
|
+
500.times do
|
75
|
+
documents << XML::Parser.string(File.read(File.join(File.dirname(__FILE__), 'model', 'merge_bug_data.xml'))).parse
|
76
|
+
end
|
77
|
+
|
78
|
+
master_doc = documents.shift
|
79
|
+
documents.inject(master_doc) do |master_doc, child_doc|
|
80
|
+
master_body = master_doc.find("//body").first
|
81
|
+
child_body = child_doc.find("//body").first
|
82
|
+
|
83
|
+
child_element = child_body.detect do |node|
|
84
|
+
node.element?
|
85
|
+
end
|
86
|
+
|
87
|
+
master_body << child_element.copy(true)
|
88
|
+
master_doc
|
89
|
+
end
|
90
|
+
end
|
91
|
+
|
92
|
+
def test_append_chain
|
93
|
+
node = XML::Node.new('foo') << XML::Node.new('bar') << "bars contents"
|
94
|
+
assert_equal('bars contents',
|
95
|
+
node.to_s)
|
96
|
+
assert_equal("<foo>\n <bar>bars contents</bar>\n</foo>", node.parent.parent.to_s)
|
97
|
+
end
|
98
|
+
end
|
data/test/tc_node_set.rb
ADDED
@@ -0,0 +1,24 @@
|
|
1
|
+
require "xml"
|
2
|
+
require 'test/unit'
|
3
|
+
|
4
|
+
class TC_XML_Node_Set < Test::Unit::TestCase
|
5
|
+
def setup()
|
6
|
+
xp = XML::Parser.new()
|
7
|
+
str = '<ruby_array uga="booga" foo="bar"><fixnum>one</fixnum><fixnum>two</fixnum></ruby_array>'
|
8
|
+
assert_equal(str, xp.string = str)
|
9
|
+
doc = xp.parse
|
10
|
+
assert_instance_of(XML::Document, doc)
|
11
|
+
@set = doc.find('/ruby_array/fixnum').set
|
12
|
+
assert_instance_of(XML::Node::Set, @set)
|
13
|
+
end
|
14
|
+
|
15
|
+
def teardown()
|
16
|
+
@set = nil
|
17
|
+
end
|
18
|
+
|
19
|
+
def test_libxml_nodeset_each()
|
20
|
+
@set.each do |n|
|
21
|
+
assert_instance_of(XML::Node, n)
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end # TC_XML_Document
|
@@ -0,0 +1,37 @@
|
|
1
|
+
require "xml"
|
2
|
+
require 'test/unit'
|
3
|
+
|
4
|
+
class TC_XML_Node_Set2 < Test::Unit::TestCase
|
5
|
+
def setup()
|
6
|
+
xp = XML::Parser.new()
|
7
|
+
str = '<ruby_array uga="booga" foo="bar"><fixnum>one</fixnum><fixnum>two</fixnum></ruby_array>'
|
8
|
+
assert_equal(str, xp.string = str)
|
9
|
+
doc = xp.parse
|
10
|
+
assert_instance_of(XML::Document, doc)
|
11
|
+
@one = doc.root.child
|
12
|
+
@two = @one.next
|
13
|
+
@set = doc.find('/ruby_array/fixnum').set
|
14
|
+
@emptyset = doc.find('/fixnum').set
|
15
|
+
assert_instance_of(XML::Node::Set, @set)
|
16
|
+
end
|
17
|
+
|
18
|
+
def teardown()
|
19
|
+
@set, @emptyset, @one, @two = [nil] * 4
|
20
|
+
end
|
21
|
+
|
22
|
+
def test_libxml_nodeset_to_a()
|
23
|
+
assert_equal [@one, @two], @set.to_a
|
24
|
+
assert_equal [], @emptyset.to_a
|
25
|
+
end
|
26
|
+
|
27
|
+
def test_libxml_nodeset_empty?()
|
28
|
+
assert ! @set.empty?
|
29
|
+
assert @emptyset.empty?
|
30
|
+
end
|
31
|
+
|
32
|
+
def test_libxml_nodeset_first()
|
33
|
+
assert_equal @one.to_s, @set.first.to_s
|
34
|
+
assert_equal nil, @emptyset.first
|
35
|
+
end
|
36
|
+
|
37
|
+
end # TC_XML_Document
|