libxml-ruby 0.6.0-x86-mswin32-60 → 0.7.0-x86-mswin32-60
Sign up to get free protection for your applications and to get access to all the features.
- 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
|