libxml-ruby 0.6.0-x86-mswin32-60 → 0.7.0-x86-mswin32-60
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/CHANGES +42 -0
- data/README +123 -117
- data/doc/classes/XML.html +226 -0
- data/doc/classes/XML/Attr.html +969 -0
- data/doc/classes/XML/Attributes.html +487 -0
- data/doc/classes/XML/Document.html +1423 -0
- data/doc/classes/XML/Dtd.html +159 -0
- data/doc/classes/XML/Error.html +111 -0
- data/doc/classes/XML/HTMLParser.html +330 -0
- data/doc/classes/XML/InputCallbacks.html +154 -0
- data/doc/classes/XML/NS.html +366 -0
- data/doc/classes/XML/Node.html +3292 -0
- data/doc/classes/XML/Node/FailedModify.html +111 -0
- data/doc/classes/XML/Node/Set.html +435 -0
- data/doc/classes/XML/Node/SetNamespace.html +111 -0
- data/doc/classes/XML/Node/UnknownType.html +111 -0
- data/doc/classes/XML/Parser.html +2178 -0
- data/doc/classes/XML/Parser/Context.html +1233 -0
- data/doc/classes/XML/Parser/ParseError.html +111 -0
- data/doc/classes/XML/Reader.html +2173 -0
- data/doc/classes/XML/SaxParser.html +396 -0
- data/doc/classes/XML/SiblingEnum.html +142 -0
- data/doc/classes/XML/State.html +118 -0
- data/doc/classes/XML/Tree.html +224 -0
- data/doc/classes/XML/XInclude.html +117 -0
- data/doc/classes/XML/XInclude/Error.html +111 -0
- data/doc/classes/XML/XMLParserOptions.html +198 -0
- data/doc/classes/XML/XPath.html +269 -0
- data/doc/classes/XML/XPath/Context.html +193 -0
- data/doc/classes/XML/XPath/InvalidPath.html +111 -0
- data/doc/classes/XML/XPath/Object.html +439 -0
- data/doc/classes/XML/XPointer.html +164 -0
- data/doc/classes/XML/XPointer/Context.html +117 -0
- data/doc/classes/XML/XPointer/Context/InvalidPath.html +111 -0
- data/doc/classes/XML/XPointer/InvalidExpression.html +111 -0
- data/doc/classes/singleton.html +114 -0
- data/doc/created.rid +1 -0
- data/doc/files/CHANGES.html +375 -0
- data/doc/files/LICENSE.html +133 -0
- data/doc/files/README.html +279 -0
- data/doc/files/VERSION.html +107 -0
- data/doc/files/ext/libxml/cbg_c.html +101 -0
- data/doc/files/ext/libxml/libxml_c.html +101 -0
- data/doc/files/ext/libxml/ruby_xml_attr_c.html +101 -0
- data/doc/files/ext/libxml/ruby_xml_attributes_c.html +101 -0
- data/doc/files/ext/libxml/ruby_xml_document_c.html +101 -0
- data/doc/files/ext/libxml/ruby_xml_dtd_c.html +101 -0
- data/doc/files/ext/libxml/ruby_xml_html_parser_c.html +101 -0
- data/doc/files/ext/libxml/ruby_xml_input_cbg_c.html +101 -0
- data/doc/files/ext/libxml/ruby_xml_node_c.html +101 -0
- data/doc/files/ext/libxml/ruby_xml_node_set_c.html +101 -0
- data/doc/files/ext/libxml/ruby_xml_ns_c.html +101 -0
- data/doc/files/ext/libxml/ruby_xml_parser_c.html +101 -0
- data/doc/files/ext/libxml/ruby_xml_parser_context_c.html +101 -0
- data/doc/files/ext/libxml/ruby_xml_reader_c.html +101 -0
- data/doc/files/ext/libxml/ruby_xml_sax_parser_c.html +101 -0
- data/doc/files/ext/libxml/ruby_xml_schema_c.html +101 -0
- data/doc/files/ext/libxml/ruby_xml_state_c.html +101 -0
- data/doc/files/ext/libxml/ruby_xml_tree_c.html +101 -0
- data/doc/files/ext/libxml/ruby_xml_xinclude_c.html +101 -0
- data/doc/files/ext/libxml/ruby_xml_xpath_c.html +101 -0
- data/doc/files/ext/libxml/ruby_xml_xpath_context_c.html +101 -0
- data/doc/files/ext/libxml/ruby_xml_xpath_object_c.html +101 -0
- data/doc/files/ext/libxml/ruby_xml_xpointer_c.html +101 -0
- data/doc/files/ext/libxml/ruby_xml_xpointer_context_c.html +101 -0
- data/doc/files/lib/libxml_rb.html +115 -0
- data/doc/files/lib/xml/libxml_rb.html +114 -0
- data/doc/fr_class_index.html +60 -0
- data/doc/fr_file_index.html +56 -0
- data/doc/fr_method_index.html +373 -0
- data/doc/index.html +24 -0
- data/doc/rdoc-style.css +208 -0
- data/ext/libxml/cbg.c +76 -76
- data/ext/libxml/extconf.rb +308 -308
- data/ext/libxml/libxml.c +58 -62
- data/ext/libxml/ruby_libxml.h +1 -0
- data/ext/libxml/ruby_xml_attr.c +201 -113
- data/ext/libxml/ruby_xml_attr.h +6 -9
- data/ext/libxml/ruby_xml_attributes.c +268 -0
- data/ext/libxml/ruby_xml_attributes.h +17 -0
- data/ext/libxml/ruby_xml_document.c +80 -66
- data/ext/libxml/ruby_xml_dtd.c +2 -2
- data/ext/libxml/ruby_xml_dtd.h +17 -17
- data/ext/libxml/ruby_xml_html_parser.c +18 -19
- data/ext/libxml/ruby_xml_html_parser.h +29 -29
- data/ext/libxml/ruby_xml_input_cbg.c +6 -0
- data/ext/libxml/ruby_xml_input_cbg.h +20 -20
- data/ext/libxml/ruby_xml_node.c +438 -536
- data/ext/libxml/ruby_xml_node.h +17 -27
- data/ext/libxml/ruby_xml_node_set.c +10 -9
- data/ext/libxml/ruby_xml_node_set.h +20 -20
- data/ext/libxml/ruby_xml_ns.c +60 -69
- data/ext/libxml/ruby_xml_ns.h +12 -21
- data/ext/libxml/ruby_xml_parser.c +54 -53
- data/ext/libxml/ruby_xml_parser.h +31 -31
- data/ext/libxml/ruby_xml_parser_context.c +37 -91
- data/ext/libxml/ruby_xml_parser_context.h +20 -22
- data/ext/libxml/ruby_xml_reader.h +14 -14
- data/ext/libxml/ruby_xml_sax_parser.c +55 -55
- data/ext/libxml/ruby_xml_sax_parser.h +56 -56
- data/ext/libxml/ruby_xml_schema.c +44 -51
- data/ext/libxml/ruby_xml_schema.h +16 -16
- data/ext/libxml/ruby_xml_state.c +35 -96
- data/ext/libxml/ruby_xml_state.h +2 -3
- data/ext/libxml/ruby_xml_tree.h +12 -12
- data/ext/libxml/ruby_xml_xinclude.h +13 -13
- data/ext/libxml/ruby_xml_xpath.c +57 -18
- data/ext/libxml/ruby_xml_xpath.h +23 -23
- data/ext/libxml/ruby_xml_xpath_context.c +11 -7
- data/ext/libxml/ruby_xml_xpath_context.h +20 -20
- data/ext/libxml/ruby_xml_xpath_object.c +9 -16
- data/ext/libxml/ruby_xml_xpath_object.h +4 -10
- data/ext/libxml/ruby_xml_xpointer.c +11 -11
- data/ext/libxml/ruby_xml_xpointer.h +27 -27
- data/ext/libxml/ruby_xml_xpointer_context.h +18 -18
- data/ext/libxml/version.h +2 -2
- data/lib/libxml.rb +134 -125
- data/lib/libxml_ruby.so +0 -0
- data/mingw/libiconv-2.dll +0 -0
- data/mingw/libxml2-2.dll +0 -0
- data/mingw/libxml_ruby.so +0 -0
- data/test/ets_copy_bug.rb +1 -1
- data/test/ets_copy_bug2.rb +16 -27
- data/test/ets_doc_to_s.rb +1 -1
- data/test/ets_gpx.rb +1 -1
- data/test/ets_node_gc.rb +1 -1
- data/test/ets_tsr.rb +1 -1
- data/test/tc_well_formed.rb +1 -1
- data/test/tc_xml_attributes.rb +106 -0
- data/test/tc_xml_document.rb +10 -10
- data/test/tc_xml_document_write3.rb +1 -1
- data/test/tc_xml_dtd.rb +49 -0
- data/test/tc_xml_html_parser.rb +3 -3
- data/test/tc_xml_node.rb +69 -33
- data/test/tc_xml_node_attr.rb +170 -0
- data/test/{tc_xml_node8.rb → tc_xml_node_cdata.rb} +2 -2
- data/test/{tc_xml_node9.rb → tc_xml_node_comment.rb} +3 -3
- data/test/tc_xml_node_edit.rb +91 -0
- data/test/tc_xml_parser.rb +97 -50
- data/test/tc_xml_parser_context.rb +61 -23
- data/test/tc_xml_schema.rb +39 -0
- data/test/tc_xml_xinclude.rb +5 -6
- data/test/tc_xml_xpath.rb +51 -27
- data/test/test_suite.rb +27 -0
- data/vc/{libxml.sln → libxml_ruby.sln} +5 -5
- data/vc/{libxml.vcproj → libxml_ruby.vcproj} +9 -1
- metadata +106 -54
- data/mingw/mingw.rake +0 -36
- data/test/dtd-test.rb +0 -24
- data/test/merge_bug.rb +0 -55
- data/test/schema-test.rb +0 -74
- data/test/tc_xml_node2.rb +0 -25
- data/test/tc_xml_node3.rb +0 -27
- data/test/tc_xml_node4.rb +0 -86
- data/test/tc_xml_node5.rb +0 -52
- data/test/tc_xml_node6.rb +0 -27
- data/test/tc_xml_node7.rb +0 -35
- data/test/tc_xml_parser2.rb +0 -16
- data/test/tc_xml_parser3.rb +0 -23
- data/test/tc_xml_parser4.rb +0 -33
- data/test/tc_xml_parser5.rb +0 -27
- data/test/tc_xml_parser6.rb +0 -23
- data/test/tc_xml_parser7.rb +0 -28
- data/test/tc_xml_parser8.rb +0 -32
- data/test/tc_xml_parser9.rb +0 -11
- data/test/tc_xml_xpath2.rb +0 -14
- data/work/vc/debug/libxml.exp +0 -0
- data/work/vc/debug/libxml.ilk +0 -0
- data/work/vc/debug/libxml.lib +0 -0
- data/work/vc/debug/libxml.pdb +0 -0
- data/work/vc/debug/libxml.so +0 -0
@@ -0,0 +1,170 @@
|
|
1
|
+
require "libxml"
|
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
|
+
attribute = city_member.attributes.get_attribute('href')
|
45
|
+
assert_equal('href', attribute.name)
|
46
|
+
assert_equal('xlink', attribute.ns.prefix)
|
47
|
+
assert_equal('http://www.w3.org/1999/xlink', attribute.ns.href)
|
48
|
+
|
49
|
+
attribute = city_member.attributes.get_attribute_ns('http://www.w3.org/1999/xlink', 'href')
|
50
|
+
assert_equal('href', attribute.name)
|
51
|
+
assert_equal('xlink', attribute.ns.prefix)
|
52
|
+
assert_equal('http://www.w3.org/1999/xlink', attribute.ns.href)
|
53
|
+
end
|
54
|
+
|
55
|
+
def test_value
|
56
|
+
attribute = city_member.attributes.get_attribute('name')
|
57
|
+
assert_equal('Cambridge', attribute.value)
|
58
|
+
|
59
|
+
attribute = city_member.attributes.get_attribute('href')
|
60
|
+
assert_equal('http://www.foo.net/cgi-bin/wfs?FeatureID=C10239', attribute.value)
|
61
|
+
end
|
62
|
+
|
63
|
+
def test_set_value
|
64
|
+
attribute = city_member.attributes.get_attribute('name')
|
65
|
+
attribute.value = 'London'
|
66
|
+
assert_equal('London', attribute.value)
|
67
|
+
|
68
|
+
attribute = city_member.attributes.get_attribute('href')
|
69
|
+
attribute.value = 'http://i.have.changed'
|
70
|
+
assert_equal('http://i.have.changed', attribute.value)
|
71
|
+
end
|
72
|
+
|
73
|
+
def test_set_nil
|
74
|
+
attribute = city_member.attributes.get_attribute('name')
|
75
|
+
assert_raise(TypeError) do
|
76
|
+
attribute.value = nil
|
77
|
+
end
|
78
|
+
end
|
79
|
+
|
80
|
+
def test_create
|
81
|
+
attributes = city_member.attributes
|
82
|
+
assert_equal(5, attributes.length)
|
83
|
+
|
84
|
+
attr = XML::Attr.new(city_member, 'size', '50,000')
|
85
|
+
assert_instance_of(XML::Attr, attr)
|
86
|
+
|
87
|
+
attributes = city_member.attributes
|
88
|
+
assert_equal(6, attributes.length)
|
89
|
+
|
90
|
+
assert_equal(attributes['size'], '50,000')
|
91
|
+
end
|
92
|
+
|
93
|
+
def test_create_on_node
|
94
|
+
attributes = city_member.attributes
|
95
|
+
assert_equal(5, attributes.length)
|
96
|
+
|
97
|
+
attributes['country'] = 'England'
|
98
|
+
|
99
|
+
attributes = city_member.attributes
|
100
|
+
assert_equal(6, attributes.length)
|
101
|
+
|
102
|
+
assert_equal(attributes['country'], 'England')
|
103
|
+
end
|
104
|
+
|
105
|
+
def test_create_ns
|
106
|
+
assert_equal(5, city_member.attributes.length)
|
107
|
+
|
108
|
+
ns = XML::NS.new(city_member, 'my_namepace', 'http://www.mynamespace.com')
|
109
|
+
attr = XML::Attr.new(city_member, 'rating', 'rocks', ns)
|
110
|
+
assert_instance_of(XML::Attr, attr)
|
111
|
+
assert_equal('rating', attr.name)
|
112
|
+
assert_equal('rocks', attr.value)
|
113
|
+
|
114
|
+
attributes = city_member.attributes
|
115
|
+
assert_equal(6, attributes.length)
|
116
|
+
|
117
|
+
assert_equal('rocks', city_member['rating'])
|
118
|
+
end
|
119
|
+
|
120
|
+
def test_remove
|
121
|
+
attributes = city_member.attributes
|
122
|
+
assert_equal(5, attributes.length)
|
123
|
+
|
124
|
+
attribute = attributes.get_attribute('name')
|
125
|
+
assert_not_nil(attribute.parent)
|
126
|
+
assert(attribute.parent?)
|
127
|
+
|
128
|
+
attribute.remove!
|
129
|
+
assert_equal(4, attributes.length)
|
130
|
+
assert_nil(attribute.parent)
|
131
|
+
assert(!attribute.parent?)
|
132
|
+
end
|
133
|
+
|
134
|
+
def test_first
|
135
|
+
attribute = city_member.attributes.first
|
136
|
+
assert_instance_of(XML::Attr, attribute)
|
137
|
+
assert_equal('name', attribute.name)
|
138
|
+
assert_equal('Cambridge', attribute.value)
|
139
|
+
|
140
|
+
attribute = attribute.next
|
141
|
+
assert_instance_of(XML::Attr, attribute)
|
142
|
+
assert_equal('type', attribute.name)
|
143
|
+
assert_equal('simple', attribute.value)
|
144
|
+
|
145
|
+
attribute = attribute.next
|
146
|
+
assert_instance_of(XML::Attr, attribute)
|
147
|
+
assert_equal('title', attribute.name)
|
148
|
+
assert_equal('Trinity Lane', attribute.value)
|
149
|
+
|
150
|
+
attribute = attribute.next
|
151
|
+
assert_instance_of(XML::Attr, attribute)
|
152
|
+
assert_equal('href', attribute.name)
|
153
|
+
assert_equal('http://www.foo.net/cgi-bin/wfs?FeatureID=C10239', attribute.value)
|
154
|
+
|
155
|
+
attribute = attribute.next
|
156
|
+
assert_instance_of(XML::Attr, attribute)
|
157
|
+
assert_equal('remoteSchema', attribute.name)
|
158
|
+
assert_equal("city.xsd#xpointer(//complexType[@name='RoadType'])", attribute.value)
|
159
|
+
|
160
|
+
attribute = attribute.next
|
161
|
+
assert_nil(attribute)
|
162
|
+
end
|
163
|
+
|
164
|
+
def test_no_attributes
|
165
|
+
element = @doc.find('/city:CityModel/city:type').first
|
166
|
+
|
167
|
+
assert_not_nil(element.attributes)
|
168
|
+
assert_equal(0, element.attributes.length)
|
169
|
+
end
|
170
|
+
end
|
@@ -1,7 +1,7 @@
|
|
1
1
|
require "libxml"
|
2
2
|
require 'test/unit'
|
3
3
|
|
4
|
-
class
|
4
|
+
class CDataCommentTest < Test::Unit::TestCase
|
5
5
|
def setup()
|
6
6
|
xp = XML::Parser.new()
|
7
7
|
str = '<root></root>'
|
@@ -20,7 +20,7 @@ class TC_XML_Node8 < Test::Unit::TestCase
|
|
20
20
|
def test_libxml_node_add_cdata_02
|
21
21
|
@root << XML::Node.new_cdata('mycdata')
|
22
22
|
assert_equal 'cdata',
|
23
|
-
|
23
|
+
@root.child.node_type_name
|
24
24
|
end
|
25
25
|
|
26
26
|
def test_libxml_node_add_cdata_03
|
@@ -1,7 +1,7 @@
|
|
1
1
|
require "libxml"
|
2
2
|
require 'test/unit'
|
3
3
|
|
4
|
-
class
|
4
|
+
class NodeCommentTest < Test::Unit::TestCase
|
5
5
|
def setup()
|
6
6
|
xp = XML::Parser.new()
|
7
7
|
str = '<root></root>'
|
@@ -20,13 +20,13 @@ class TC_XML_Node9 < Test::Unit::TestCase
|
|
20
20
|
def test_libxml_node_add_comment_02
|
21
21
|
@root << XML::Node.new_comment('mycomment')
|
22
22
|
assert_equal 'comment',
|
23
|
-
|
23
|
+
@root.child.node_type_name
|
24
24
|
end
|
25
25
|
|
26
26
|
def test_libxml_node_add_comment_03
|
27
27
|
@root << el = XML::Node.new_comment('mycomment')
|
28
28
|
el << "_this_is_added"
|
29
29
|
assert_equal '<root><!--mycomment_this_is_added--></root>',
|
30
|
-
|
30
|
+
@root.to_s.gsub(/\n\s*/,'')
|
31
31
|
end
|
32
32
|
end
|
@@ -0,0 +1,91 @@
|
|
1
|
+
require "libxml"
|
2
|
+
require 'test/unit'
|
3
|
+
|
4
|
+
class TextNodeEdit < 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
|
+
end
|
data/test/tc_xml_parser.rb
CHANGED
@@ -1,44 +1,22 @@
|
|
1
1
|
require "libxml"
|
2
2
|
require 'test/unit'
|
3
3
|
|
4
|
-
class
|
5
|
-
def setup
|
6
|
-
@xp = XML::Parser.new
|
4
|
+
class TextParser < Test::Unit::TestCase
|
5
|
+
def setup
|
6
|
+
@xp = XML::Parser.new
|
7
7
|
assert_not_nil(@xp)
|
8
8
|
end
|
9
9
|
|
10
|
-
def teardown
|
10
|
+
def teardown
|
11
11
|
@xp = nil
|
12
12
|
end
|
13
|
-
|
14
|
-
def test_libxml_parser_string()
|
15
|
-
str = '<ruby_array uga="booga" foo="bar"><fixnum>one</fixnum><fixnum>two</fixnum></ruby_array>'
|
16
|
-
assert_equal(str, @xp.string = str)
|
17
|
-
assert_instance_of(XML::Document, @xp.parse)
|
18
|
-
end
|
19
|
-
|
20
|
-
def test_libxml_parser_bad_xml()
|
21
|
-
@xp.string = '<ruby_array uga="booga" foo="bar"<fixnum>one</fixnum><fixnum>two</fixnum></ruby_array>'
|
22
|
-
assert_raise(XML::Parser::ParseError) do
|
23
|
-
assert_not_nil(@xp.parse)
|
24
|
-
end
|
25
|
-
end
|
26
|
-
|
27
|
-
def test_libxml_parser_empty_string
|
28
|
-
assert_raise(XML::Parser::ParseError) do
|
29
|
-
@xp.string = ''
|
30
|
-
end
|
31
|
-
|
32
|
-
assert_raise(TypeError) do
|
33
|
-
@xp.string = nil
|
34
|
-
end
|
35
|
-
end
|
36
13
|
|
37
|
-
|
14
|
+
# ----- Constants ------
|
15
|
+
def test_lib_versions
|
38
16
|
assert(XML::Parser::check_lib_versions)
|
39
17
|
end
|
40
18
|
|
41
|
-
def
|
19
|
+
def test_debug_entities
|
42
20
|
XML::Parser::debug_entities = false
|
43
21
|
assert(!XML::Parser::debug_entities)
|
44
22
|
|
@@ -49,7 +27,9 @@ class TC_XML_Parser < Test::Unit::TestCase
|
|
49
27
|
assert(!XML::Parser::debug_entities)
|
50
28
|
end
|
51
29
|
|
52
|
-
def
|
30
|
+
def test_default_compression
|
31
|
+
return unless XML::Parser::default_compression
|
32
|
+
|
53
33
|
0.upto(9) do |i|
|
54
34
|
XML::Parser::default_compression = i
|
55
35
|
assert_equal(i, XML::Parser::default_compression)
|
@@ -71,7 +51,7 @@ class TC_XML_Parser < Test::Unit::TestCase
|
|
71
51
|
end
|
72
52
|
end
|
73
53
|
|
74
|
-
def
|
54
|
+
def test_default_keep_blanks
|
75
55
|
XML::Parser::default_keep_blanks = false
|
76
56
|
assert(!XML::Parser::default_keep_blanks)
|
77
57
|
|
@@ -86,7 +66,7 @@ class TC_XML_Parser < Test::Unit::TestCase
|
|
86
66
|
XML::Parser::default_keep_blanks = true
|
87
67
|
end
|
88
68
|
|
89
|
-
def
|
69
|
+
def test_default_line_numbers
|
90
70
|
XML::Parser::default_line_numbers = false
|
91
71
|
assert(!XML::Parser::default_line_numbers)
|
92
72
|
|
@@ -97,7 +77,7 @@ class TC_XML_Parser < Test::Unit::TestCase
|
|
97
77
|
assert(!XML::Parser::default_line_numbers)
|
98
78
|
end
|
99
79
|
|
100
|
-
def
|
80
|
+
def test_default_substitute_entities
|
101
81
|
XML::Parser::default_substitute_entities = false
|
102
82
|
assert(!XML::Parser::default_substitute_entities)
|
103
83
|
|
@@ -108,21 +88,21 @@ class TC_XML_Parser < Test::Unit::TestCase
|
|
108
88
|
assert(!XML::Parser::default_substitute_entities)
|
109
89
|
end
|
110
90
|
|
111
|
-
def
|
112
|
-
s = XML::Parser::default_tree_indent_string
|
91
|
+
def test_default_tree_indent_string
|
92
|
+
s = XML::Parser::default_tree_indent_string
|
113
93
|
assert_instance_of(String, s)
|
114
94
|
assert_equal(' ', s)
|
115
95
|
XML::Parser::default_tree_indent_string = 'uga'
|
116
|
-
s = XML::Parser::default_tree_indent_string
|
96
|
+
s = XML::Parser::default_tree_indent_string
|
117
97
|
assert_instance_of(String, s)
|
118
98
|
assert_equal('uga', s)
|
119
99
|
XML::Parser::default_tree_indent_string = ' '
|
120
|
-
s = XML::Parser::default_tree_indent_string
|
100
|
+
s = XML::Parser::default_tree_indent_string
|
121
101
|
assert_instance_of(String, s)
|
122
102
|
assert_equal(' ', s)
|
123
103
|
end
|
124
104
|
|
125
|
-
def
|
105
|
+
def test_default_validity_checking
|
126
106
|
XML::Parser::default_validity_checking = false
|
127
107
|
assert(!XML::Parser::default_validity_checking)
|
128
108
|
|
@@ -133,7 +113,7 @@ class TC_XML_Parser < Test::Unit::TestCase
|
|
133
113
|
assert(!XML::Parser::default_validity_checking)
|
134
114
|
end
|
135
115
|
|
136
|
-
def
|
116
|
+
def test_default_warnings
|
137
117
|
XML::Parser::default_warnings = false
|
138
118
|
assert(!XML::Parser::default_warnings)
|
139
119
|
|
@@ -144,7 +124,7 @@ class TC_XML_Parser < Test::Unit::TestCase
|
|
144
124
|
assert(!XML::Parser::default_warnings)
|
145
125
|
end
|
146
126
|
|
147
|
-
def
|
127
|
+
def test_intent_tree_output
|
148
128
|
assert(TrueClass, XML::Parser::indent_tree_output)
|
149
129
|
|
150
130
|
XML::Parser::indent_tree_output = false
|
@@ -154,37 +134,104 @@ class TC_XML_Parser < Test::Unit::TestCase
|
|
154
134
|
assert(TrueClass, XML::Parser::indent_tree_output)
|
155
135
|
end
|
156
136
|
|
157
|
-
def
|
137
|
+
def test_version
|
158
138
|
assert_instance_of(String, XML::Parser::VERSION)
|
159
139
|
end
|
160
140
|
|
161
|
-
def
|
141
|
+
def test_vernum
|
162
142
|
assert_instance_of(Fixnum, XML::Parser::VERNUM)
|
163
143
|
end
|
164
144
|
|
165
|
-
|
145
|
+
# ----- IO ------
|
146
|
+
def test_string
|
147
|
+
str = '<ruby_array uga="booga" foo="bar"><fixnum>one</fixnum><fixnum>two</fixnum></ruby_array>'
|
148
|
+
assert_equal(str, @xp.string = str)
|
149
|
+
assert_instance_of(XML::Document, @xp.parse)
|
150
|
+
end
|
151
|
+
|
152
|
+
def test_context
|
166
153
|
@xp = XML::Parser.string('<rubynet><testing>uga</testing><uga>foo</uga></rubynet>')
|
167
154
|
doc = @xp.parse
|
168
155
|
assert_instance_of(XML::Document, doc)
|
169
156
|
assert_instance_of(XML::Parser::Context, @xp.context)
|
170
157
|
end
|
171
158
|
|
172
|
-
def
|
159
|
+
def test_file
|
173
160
|
file = File.expand_path('model/rubynet.xml')
|
174
161
|
|
175
|
-
|
176
|
-
|
162
|
+
@xp.filename = file
|
163
|
+
assert_equal(file, @xp.filename)
|
164
|
+
|
165
|
+
doc = @xp.parse
|
166
|
+
assert_instance_of(XML::Document, doc)
|
177
167
|
end
|
178
168
|
|
179
|
-
def
|
169
|
+
def test_io
|
180
170
|
File.open('model/rubynet.xml') do |f|
|
181
171
|
assert_kind_of(IO, f)
|
182
172
|
assert_kind_of(IO, @xp.io = f)
|
183
173
|
assert_instance_of(XML::Document, @xp.parse)
|
184
174
|
end # File.open
|
185
|
-
end # def test_libxml_parser_io
|
175
|
+
end # def test_libxml_parser_io
|
186
176
|
|
187
|
-
def test_libxml_parser_features
|
177
|
+
def test_libxml_parser_features
|
188
178
|
assert_instance_of(Array, XML::Parser::features)
|
189
179
|
end
|
190
|
-
|
180
|
+
|
181
|
+
# ----- Errors ------
|
182
|
+
def test_error_handler
|
183
|
+
$stderr.puts "\nEXPECTING: TWO ERRORS:"
|
184
|
+
# this will send message to stderr
|
185
|
+
assert_raise(XML::Parser::ParseError) do
|
186
|
+
XML::Parser.string('<foo><bar/></foz>').parse
|
187
|
+
end
|
188
|
+
|
189
|
+
ary = []
|
190
|
+
assert_nil XML::Parser.register_error_handler(lambda { |msg| ary << msg })
|
191
|
+
|
192
|
+
# this will use our error handler
|
193
|
+
assert_raise(XML::Parser::ParseError) do
|
194
|
+
XML::Parser.string('<foo><bar/></foz>').parse
|
195
|
+
end
|
196
|
+
|
197
|
+
assert_equal(["Entity: line 1: ",
|
198
|
+
"parser ",
|
199
|
+
"error : ",
|
200
|
+
"Opening and ending tag mismatch: foo line 1 and foz\n",
|
201
|
+
"<foo><bar/></foz>\n",
|
202
|
+
" ^\n"], ary)
|
203
|
+
|
204
|
+
assert_instance_of(Proc, XML::Parser.register_error_handler(nil))
|
205
|
+
|
206
|
+
# this will go to stderr again
|
207
|
+
assert_raise(XML::Parser::ParseError) do
|
208
|
+
d = XML::Parser.string('<foo><bar/></foz>').parse
|
209
|
+
end
|
210
|
+
end
|
211
|
+
|
212
|
+
def test_bad_xml
|
213
|
+
@xp.string = '<ruby_array uga="booga" foo="bar"<fixnum>one</fixnum><fixnum>two</fixnum></ruby_array>'
|
214
|
+
assert_raise(XML::Parser::ParseError) do
|
215
|
+
assert_not_nil(@xp.parse)
|
216
|
+
end
|
217
|
+
end
|
218
|
+
|
219
|
+
def test_double_parse
|
220
|
+
parser = XML::Parser.string("<test>something</test>")
|
221
|
+
doc = parser.parse
|
222
|
+
|
223
|
+
assert_raise(XML::Parser::ParseError) do
|
224
|
+
parser.parse
|
225
|
+
end
|
226
|
+
end
|
227
|
+
|
228
|
+
def test_libxml_parser_empty_string
|
229
|
+
assert_raise(XML::Parser::ParseError) do
|
230
|
+
@xp.string = ''
|
231
|
+
end
|
232
|
+
|
233
|
+
assert_raise(TypeError) do
|
234
|
+
@xp.string = nil
|
235
|
+
end
|
236
|
+
end
|
237
|
+
end
|