libxml-ruby 0.7.0-x86-mswin32-60 → 0.8.0-x86-mswin32-60
Sign up to get free protection for your applications and to get access to all the features.
- data/CHANGES +24 -1
- data/README +48 -3
- data/benchmark/depixelate.rb +632 -0
- data/benchmark/hamlet.xml +9055 -0
- data/benchmark/sock_entries.xml +507 -0
- data/benchmark/throughput.rb +39 -0
- data/benchmark/xml_benchmarks.rb +222 -0
- data/doc/classes/LibXML.html +237 -0
- data/doc/classes/LibXML/XML.html +178 -0
- data/doc/classes/{XML → LibXML/XML}/Attr.html +213 -182
- data/doc/classes/{XML → LibXML/XML}/Attributes.html +126 -54
- data/doc/classes/{XML → LibXML/XML}/Document.html +299 -297
- data/doc/classes/{XML → LibXML/XML}/Dtd.html +10 -10
- data/doc/classes/{XML/XInclude → LibXML/XML}/Error.html +4 -4
- data/doc/classes/{XML → LibXML/XML}/HTMLParser.html +40 -40
- data/doc/classes/{XML → LibXML/XML}/InputCallbacks.html +10 -10
- data/doc/classes/{XML → LibXML/XML}/NS.html +46 -46
- data/doc/classes/{XML → LibXML/XML}/Node.html +935 -788
- data/doc/classes/LibXML/XML/Node/FailedModify.html +111 -0
- data/doc/classes/{XML → LibXML/XML}/Node/Set.html +69 -68
- data/doc/classes/{XML → LibXML/XML}/Node/SetNamespace.html +4 -4
- data/doc/classes/{XML/Node/FailedModify.html → LibXML/XML/Node/UnknownType.html} +4 -4
- data/doc/classes/{XML → LibXML/XML}/Parser.html +426 -389
- data/doc/classes/{XML → LibXML/XML}/Parser/Context.html +208 -208
- data/doc/classes/{XML → LibXML/XML}/Parser/ParseError.html +4 -4
- data/doc/classes/{XML → LibXML/XML}/Reader.html +288 -287
- data/doc/classes/{XML → LibXML/XML}/SaxParser.html +52 -52
- data/doc/classes/{XML/XPath/Context.html → LibXML/XML/Schema.html} +60 -32
- data/doc/classes/{XML → LibXML/XML}/State.html +4 -4
- data/doc/classes/{XML/Node/UnknownType.html → LibXML/XML/Tree.html} +5 -5
- data/doc/classes/{XML → LibXML/XML}/XInclude.html +5 -5
- data/doc/classes/{XML → LibXML/XML/XInclude}/Error.html +5 -5
- data/doc/classes/{XML → LibXML/XML}/XMLParserOptions.html +5 -5
- data/doc/classes/{XML → LibXML/XML}/XPath.html +23 -64
- data/doc/classes/LibXML/XML/XPath/Context.html +403 -0
- data/doc/classes/{XML/XPointer/Context → LibXML/XML/XPath}/InvalidPath.html +4 -4
- data/doc/classes/LibXML/XML/XPath/Object.html +623 -0
- data/doc/classes/{XML → LibXML/XML}/XPointer.html +12 -12
- data/doc/classes/{XML → LibXML/XML}/XPointer/Context.html +5 -5
- data/doc/classes/{XML/XPath → LibXML/XML/XPointer/Context}/InvalidPath.html +5 -5
- data/doc/classes/{XML → LibXML/XML}/XPointer/InvalidExpression.html +4 -4
- data/doc/classes/XML.html +17 -123
- data/doc/created.rid +1 -1
- data/doc/files/CHANGES.html +49 -25
- data/doc/files/LICENSE.html +1 -1
- data/doc/files/README.html +79 -4
- data/doc/files/VERSION.html +2 -2
- data/doc/files/ext/libxml/cbg_c.html +1 -1
- data/doc/files/ext/libxml/libxml_c.html +1 -1
- data/doc/files/ext/libxml/ruby_xml_attr_c.html +1 -1
- data/doc/files/ext/libxml/ruby_xml_attributes_c.html +1 -1
- data/doc/files/ext/libxml/ruby_xml_document_c.html +1 -1
- data/doc/files/ext/libxml/ruby_xml_dtd_c.html +1 -1
- data/doc/files/ext/libxml/ruby_xml_html_parser_c.html +1 -1
- data/doc/files/ext/libxml/ruby_xml_input_cbg_c.html +1 -1
- data/doc/files/ext/libxml/ruby_xml_node_c.html +1 -1
- data/doc/files/ext/libxml/ruby_xml_node_set_c.html +1 -1
- data/doc/files/ext/libxml/ruby_xml_ns_c.html +1 -1
- data/doc/files/ext/libxml/ruby_xml_parser_c.html +1 -1
- data/doc/files/ext/libxml/ruby_xml_parser_context_c.html +1 -1
- data/doc/files/ext/libxml/ruby_xml_reader_c.html +1 -1
- data/doc/files/ext/libxml/ruby_xml_sax_parser_c.html +1 -1
- data/doc/files/ext/libxml/ruby_xml_schema_c.html +1 -1
- data/doc/files/ext/libxml/ruby_xml_state_c.html +1 -1
- data/doc/files/ext/libxml/ruby_xml_xinclude_c.html +1 -1
- data/doc/files/ext/libxml/ruby_xml_xpath_c.html +1 -1
- data/doc/files/ext/libxml/ruby_xml_xpath_context_c.html +1 -1
- data/doc/files/ext/libxml/ruby_xml_xpath_object_c.html +1 -1
- data/doc/files/ext/libxml/ruby_xml_xpointer_c.html +1 -1
- data/doc/files/ext/libxml/ruby_xml_xpointer_context_c.html +1 -1
- data/doc/files/lib/libxml/attr_rb.html +108 -0
- data/doc/files/lib/libxml/attributes_rb.html +108 -0
- data/doc/files/lib/libxml/document_rb.html +108 -0
- data/doc/files/lib/libxml/node_rb.html +108 -0
- data/doc/files/lib/libxml/node_set_rb.html +108 -0
- data/doc/files/lib/libxml/parser_options_rb.html +107 -0
- data/doc/files/{ext/libxml/ruby_xml_tree_c.html → lib/libxml/parser_rb.html} +4 -4
- data/doc/files/lib/libxml/properties_rb.html +108 -0
- data/doc/files/lib/libxml/tree_rb.html +107 -0
- data/doc/files/lib/libxml_rb.html +12 -3
- data/doc/fr_class_index.html +34 -32
- data/doc/fr_file_index.html +9 -1
- data/doc/fr_method_index.html +362 -347
- data/ext/libxml/cbg.c +76 -76
- data/ext/libxml/libxml.c +4 -3
- data/ext/libxml/ruby_libxml.h +1 -1
- data/ext/libxml/ruby_xml_attr.c +4 -3
- data/ext/libxml/ruby_xml_attr.h +16 -16
- data/ext/libxml/ruby_xml_attributes.c +267 -266
- data/ext/libxml/ruby_xml_attributes.h +17 -17
- data/ext/libxml/ruby_xml_document.c +30 -59
- data/ext/libxml/ruby_xml_document.h +27 -27
- data/ext/libxml/ruby_xml_dtd.c +2 -1
- data/ext/libxml/ruby_xml_dtd.h +17 -17
- data/ext/libxml/ruby_xml_html_parser.c +3 -2
- data/ext/libxml/ruby_xml_html_parser.h +29 -29
- data/ext/libxml/ruby_xml_input_cbg.c +2 -1
- data/ext/libxml/ruby_xml_input_cbg.h +20 -20
- data/ext/libxml/ruby_xml_node.c +127 -470
- data/ext/libxml/ruby_xml_node.h +17 -17
- data/ext/libxml/ruby_xml_node_set.c +5 -4
- data/ext/libxml/ruby_xml_node_set.h +20 -20
- data/ext/libxml/ruby_xml_ns.c +3 -2
- data/ext/libxml/ruby_xml_ns.h +12 -12
- data/ext/libxml/ruby_xml_parser.c +20 -48
- data/ext/libxml/ruby_xml_parser.h +31 -31
- data/ext/libxml/ruby_xml_parser_context.c +3 -2
- data/ext/libxml/ruby_xml_parser_context.h +20 -20
- data/ext/libxml/ruby_xml_reader.c +2 -1
- data/ext/libxml/ruby_xml_sax_parser.c +3 -2
- data/ext/libxml/ruby_xml_sax_parser.h +56 -56
- data/ext/libxml/ruby_xml_schema.c +6 -0
- data/ext/libxml/ruby_xml_schema.h +16 -16
- data/ext/libxml/ruby_xml_state.c +13 -12
- data/ext/libxml/ruby_xml_state.h +1 -1
- data/ext/libxml/ruby_xml_xinclude.c +3 -2
- data/ext/libxml/ruby_xml_xinclude.h +13 -13
- data/ext/libxml/ruby_xml_xpath.c +35 -228
- data/ext/libxml/ruby_xml_xpath.h +22 -23
- data/ext/libxml/ruby_xml_xpath_context.c +223 -62
- data/ext/libxml/ruby_xml_xpath_context.h +15 -20
- data/ext/libxml/ruby_xml_xpath_object.c +63 -19
- data/ext/libxml/ruby_xml_xpointer.c +19 -15
- data/ext/libxml/ruby_xml_xpointer.h +27 -27
- data/ext/libxml/ruby_xml_xpointer_context.c +3 -2
- data/ext/libxml/ruby_xml_xpointer_context.h +18 -18
- data/ext/libxml/version.h +9 -9
- data/lib/libxml.rb +16 -128
- data/lib/libxml/attr.rb +45 -0
- data/lib/libxml/attributes.rb +15 -0
- data/lib/libxml/document.rb +54 -0
- data/lib/libxml/node.rb +132 -0
- data/lib/libxml/node_set.rb +27 -0
- data/lib/libxml/parser.rb +42 -0
- data/lib/libxml/parser_options.rb +25 -0
- data/lib/libxml/properties.rb +19 -0
- data/lib/libxml/tree.rb +29 -0
- data/lib/libxml_ruby.so +0 -0
- data/mingw/libxml_ruby.so +0 -0
- data/{work/task/setup → setup.rb} +1585 -1616
- data/test/gc.log +0 -0
- data/test/model/books.xml +147 -0
- data/{work/test/runner.rb → 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.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_deprecated_require.rb +13 -0
- data/test/tc_xml_document.rb +57 -16
- data/test/tc_xml_document_write.rb +125 -10
- data/test/tc_xml_dtd.rb +22 -1
- data/test/tc_xml_node.rb +13 -0
- data/test/tc_xml_node_edit.rb +1 -1
- data/test/tc_xml_node_xlink.rb +1 -1
- data/test/tc_xml_parser.rb +64 -7
- data/test/tc_xml_properties.rb +42 -0
- data/test/tc_xml_reader.rb +4 -4
- data/test/tc_xml_sax_parser.rb +50 -50
- data/test/tc_xml_schema.rb +2 -2
- data/test/tc_xml_traversal.rb +220 -0
- data/test/tc_xml_xinclude.rb +12 -15
- data/test/tc_xml_xpath.rb +74 -6
- data/test/tc_xml_xpath_context.rb +72 -0
- data/test/test_suite.rb +6 -4
- data/vc/libxml_ruby.vcproj +1 -9
- metadata +92 -65
- data/doc/classes/XML/SiblingEnum.html +0 -142
- data/doc/classes/XML/Tree.html +0 -224
- data/doc/classes/XML/XPath/Object.html +0 -439
- data/ext/libxml/ruby_xml_tree.c +0 -43
- data/ext/libxml/ruby_xml_tree.h +0 -12
- data/test/ets_copy_bug2.rb +0 -21
- data/test/tc_xml_document_write2.rb +0 -54
- data/test/tc_xml_document_write3.rb +0 -96
- data/test/tc_xml_sax_parser2.rb +0 -51
- data/work/Rakefile +0 -247
- data/work/task/make +0 -26
- data/work/task/memory +0 -37
- data/work/task/rdoc +0 -39
- data/work/task/test +0 -29
- data/work/test/ets_runner.rb +0 -33
- data/work/test/libxml_test.rb +0 -3
- data/work/test/runner_ets.rb +0 -33
data/test/tc_xml_schema.rb
CHANGED
@@ -4,7 +4,7 @@ require 'test/unit'
|
|
4
4
|
class TestSchema < Test::Unit::TestCase
|
5
5
|
def setup
|
6
6
|
xp = XML::Parser.new
|
7
|
-
@doc = XML::Document.file('model/shiporder.xml')
|
7
|
+
@doc = XML::Document.file(File.join(File.dirname(__FILE__), 'model/shiporder.xml'))
|
8
8
|
end
|
9
9
|
|
10
10
|
def teardown
|
@@ -12,7 +12,7 @@ class TestSchema < Test::Unit::TestCase
|
|
12
12
|
end
|
13
13
|
|
14
14
|
def schema
|
15
|
-
document = XML::Document.file('model/shiporder.xsd')
|
15
|
+
document = XML::Document.file(File.join(File.dirname(__FILE__), 'model/shiporder.xsd'))
|
16
16
|
schema = XML::Schema.document(document)
|
17
17
|
end
|
18
18
|
|
@@ -0,0 +1,220 @@
|
|
1
|
+
require "libxml"
|
2
|
+
require 'test/unit'
|
3
|
+
|
4
|
+
class TestTranversal < Test::Unit::TestCase
|
5
|
+
ROOT_NODES_LENGTH = 25
|
6
|
+
ROOT_ELEMENTS_LENGTH = 12
|
7
|
+
|
8
|
+
def setup
|
9
|
+
filename = File.join(File.dirname(__FILE__), 'model/books.xml')
|
10
|
+
@doc = XML::Document.file(filename)
|
11
|
+
end
|
12
|
+
|
13
|
+
def teardown
|
14
|
+
@doc = nil
|
15
|
+
end
|
16
|
+
|
17
|
+
def test_children
|
18
|
+
# Includes text nodes and such
|
19
|
+
assert_equal(ROOT_NODES_LENGTH, @doc.root.children.length)
|
20
|
+
end
|
21
|
+
|
22
|
+
def test_children_iteration
|
23
|
+
# Includes text nodes and such
|
24
|
+
nodes = @doc.root.children.inject([]) do |arr, node|
|
25
|
+
arr << node
|
26
|
+
arr
|
27
|
+
end
|
28
|
+
|
29
|
+
assert_equal(ROOT_NODES_LENGTH, nodes.length)
|
30
|
+
end
|
31
|
+
|
32
|
+
def test_each
|
33
|
+
# Includes text nodes and such
|
34
|
+
nodes = @doc.root.inject([]) do |arr, node|
|
35
|
+
arr << node
|
36
|
+
arr
|
37
|
+
end
|
38
|
+
|
39
|
+
assert_equal(ROOT_NODES_LENGTH, nodes.length)
|
40
|
+
end
|
41
|
+
|
42
|
+
def test_each_element
|
43
|
+
# Includes text nodes and such
|
44
|
+
nodes = []
|
45
|
+
@doc.root.each_element do |node|
|
46
|
+
nodes << node
|
47
|
+
end
|
48
|
+
|
49
|
+
assert_equal(ROOT_ELEMENTS_LENGTH, nodes.length)
|
50
|
+
end
|
51
|
+
|
52
|
+
def test_next
|
53
|
+
nodes = []
|
54
|
+
|
55
|
+
node = @doc.root.first
|
56
|
+
|
57
|
+
while node
|
58
|
+
nodes << node
|
59
|
+
node = node.next
|
60
|
+
end
|
61
|
+
assert_equal(ROOT_NODES_LENGTH, nodes.length)
|
62
|
+
end
|
63
|
+
|
64
|
+
def test_next?
|
65
|
+
first_node = @doc.root.first
|
66
|
+
assert(first_node.next?)
|
67
|
+
|
68
|
+
last_node = @doc.root.last
|
69
|
+
assert(!last_node.next?)
|
70
|
+
end
|
71
|
+
|
72
|
+
def test_prev
|
73
|
+
nodes = []
|
74
|
+
|
75
|
+
node = @doc.root.last
|
76
|
+
|
77
|
+
while node
|
78
|
+
nodes << node
|
79
|
+
node = node.prev
|
80
|
+
end
|
81
|
+
assert_equal(ROOT_NODES_LENGTH, nodes.length)
|
82
|
+
end
|
83
|
+
|
84
|
+
def test_prev?
|
85
|
+
first_node = @doc.root.first
|
86
|
+
assert(!first_node.prev?)
|
87
|
+
|
88
|
+
last_node = @doc.root.last
|
89
|
+
assert(last_node.prev?)
|
90
|
+
end
|
91
|
+
|
92
|
+
def test_parent?
|
93
|
+
assert(!@doc.parent?)
|
94
|
+
assert(@doc.root.parent?)
|
95
|
+
end
|
96
|
+
|
97
|
+
def test_child?
|
98
|
+
assert(@doc.child?)
|
99
|
+
assert(!@doc.root.first.child?)
|
100
|
+
end
|
101
|
+
|
102
|
+
def test_next_prev_equivalence
|
103
|
+
next_nodes = []
|
104
|
+
last_nodes = []
|
105
|
+
|
106
|
+
node = @doc.root.first
|
107
|
+
while node
|
108
|
+
next_nodes << node
|
109
|
+
node = node.next
|
110
|
+
end
|
111
|
+
|
112
|
+
node = @doc.root.last
|
113
|
+
while node
|
114
|
+
last_nodes << node
|
115
|
+
node = node.prev
|
116
|
+
end
|
117
|
+
|
118
|
+
assert_equal(next_nodes, last_nodes.reverse)
|
119
|
+
end
|
120
|
+
|
121
|
+
def test_next_children_equivalence
|
122
|
+
next_nodes = []
|
123
|
+
|
124
|
+
node = @doc.root.first
|
125
|
+
while node
|
126
|
+
next_nodes << node
|
127
|
+
node = node.next
|
128
|
+
end
|
129
|
+
|
130
|
+
assert_equal(@doc.root.children, next_nodes)
|
131
|
+
end
|
132
|
+
|
133
|
+
# node = @doc.find_first('book')
|
134
|
+
# node.children.each do |node|
|
135
|
+
# puts 1
|
136
|
+
#end
|
137
|
+
# @doc.root.children do |node|
|
138
|
+
# if node.node_type == XML::Node::ELEMENT_NODE
|
139
|
+
# puts node.name
|
140
|
+
#end
|
141
|
+
#end
|
142
|
+
#assert_equal(12,nodes.length)
|
143
|
+
#end
|
144
|
+
|
145
|
+
#def test_doc_class
|
146
|
+
#assert_instance_of(XML::Document, @doc)
|
147
|
+
#end
|
148
|
+
|
149
|
+
#def test_root_class
|
150
|
+
#assert_instance_of(XML::Node, @doc.root)
|
151
|
+
#end
|
152
|
+
|
153
|
+
#def test_node_class
|
154
|
+
#for n in nodes
|
155
|
+
#assert_instance_of(XML::Node, n)
|
156
|
+
#end
|
157
|
+
#end
|
158
|
+
|
159
|
+
#def test_find_class
|
160
|
+
#set = @doc.find('/ruby_array/fixnum')
|
161
|
+
#assert_instance_of(XML::XPath::Object, set)
|
162
|
+
#end
|
163
|
+
|
164
|
+
#def test_node_child_get
|
165
|
+
#assert_instance_of(TrueClass, @doc.root.child?)
|
166
|
+
#assert_instance_of(XML::Node, @doc.root.child)
|
167
|
+
#assert_equal('fixnum', @doc.root.child.name)
|
168
|
+
#end
|
169
|
+
|
170
|
+
#def test_node_doc
|
171
|
+
#for n in nodes
|
172
|
+
#assert_instance_of(XML::Document, n.doc) if n.document?
|
173
|
+
#end
|
174
|
+
#end
|
175
|
+
|
176
|
+
#def test_node_type_name
|
177
|
+
#assert_equal('element', nodes[0].node_type_name)
|
178
|
+
#assert_equal('element', nodes[1].node_type_name)
|
179
|
+
#end
|
180
|
+
|
181
|
+
#def test_node_find
|
182
|
+
#set = @doc.root.find('./fixnum').set
|
183
|
+
#assert_instance_of(XML::Node::Set, set)
|
184
|
+
#for node in set
|
185
|
+
#assert_instance_of(XML::Node, node)
|
186
|
+
#end
|
187
|
+
#end
|
188
|
+
|
189
|
+
#def test_equality
|
190
|
+
#node_a = @doc.find('/ruby_array/fixnum').first
|
191
|
+
#node_b = @doc.root.child
|
192
|
+
#assert(node_a == node_b)
|
193
|
+
#assert(node_a.eql?(node_b))
|
194
|
+
#assert(node_a.equal?(node_b))
|
195
|
+
|
196
|
+
#xp2 = XML::Parser.new()
|
197
|
+
#xp2.string = '<ruby_array uga="booga" foo="bar"><fixnum>one</fixnum><fixnum>two</fixnum></ruby_array>'
|
198
|
+
#doc2 = xp2.parse
|
199
|
+
|
200
|
+
#node_a2 = doc2.find('/ruby_array/fixnum').first
|
201
|
+
|
202
|
+
#assert(node_a.to_s == node_a2.to_s)
|
203
|
+
#assert(node_a == node_a2)
|
204
|
+
#assert(node_a.eql?(node_a2))
|
205
|
+
#assert(!node_a.equal?(node_a2))
|
206
|
+
#end
|
207
|
+
|
208
|
+
#def test_content()
|
209
|
+
#assert_equal('onetwo', @doc.root.content)
|
210
|
+
|
211
|
+
#first = @doc.root.child
|
212
|
+
#assert_equal('one', first.content)
|
213
|
+
#assert_equal('two', first.next.content)
|
214
|
+
#end
|
215
|
+
|
216
|
+
#def test_base
|
217
|
+
#doc = XML::Parser.string('<person />').parse
|
218
|
+
#assert_nil(doc.root.base)
|
219
|
+
#end
|
220
|
+
end
|
data/test/tc_xml_xinclude.rb
CHANGED
@@ -1,9 +1,9 @@
|
|
1
1
|
require "libxml"
|
2
2
|
require 'test/unit'
|
3
3
|
|
4
|
-
class
|
4
|
+
class TestXInclude < Test::Unit::TestCase
|
5
5
|
def setup
|
6
|
-
@doc = XML::Document.file('model/xinclude.xml')
|
6
|
+
@doc = XML::Document.file(File.join(File.dirname(__FILE__), 'model/xinclude.xml'))
|
7
7
|
assert_instance_of(XML::Document, @doc)
|
8
8
|
end
|
9
9
|
|
@@ -12,18 +12,15 @@ class TextXInclude < Test::Unit::TestCase
|
|
12
12
|
end
|
13
13
|
|
14
14
|
def test_ruby_xml_xinclude
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
end
|
23
|
-
xinclude_doc << msg << "</code></p>\n</document>\n"
|
15
|
+
expected = <<-EOS
|
16
|
+
<?xml version="1.0"?>
|
17
|
+
<document xmlns:xi="http://www.w3.org/2001/XInclude">
|
18
|
+
<p>This libxml2 binding has the following project information:
|
19
|
+
<code>This is some text to include in an xml file via XInclude.</code></p>
|
20
|
+
</document>
|
21
|
+
EOS
|
24
22
|
|
25
|
-
|
26
|
-
assert_equal(
|
27
|
-
assert_equal(xinclude_doc, @doc.to_s)
|
23
|
+
assert_equal(1, @doc.xinclude)
|
24
|
+
assert_equal(expected, @doc.to_s)
|
28
25
|
end
|
29
|
-
end
|
26
|
+
end
|
data/test/tc_xml_xpath.rb
CHANGED
@@ -2,20 +2,27 @@ require "libxml"
|
|
2
2
|
require "tempfile"
|
3
3
|
require "test/unit"
|
4
4
|
|
5
|
-
class
|
6
|
-
def setup
|
7
|
-
@doc = XML::Document.file('model/soap.xml')
|
5
|
+
class TestXPath < Test::Unit::TestCase
|
6
|
+
def setup
|
7
|
+
@doc = XML::Document.file(File.join(File.dirname(__FILE__), 'model/soap.xml'))
|
8
8
|
end
|
9
9
|
|
10
|
-
def teardown
|
10
|
+
def teardown
|
11
11
|
@doc = nil
|
12
12
|
end
|
13
13
|
|
14
|
-
def
|
14
|
+
def test_doc_find
|
15
15
|
nodes = @doc.find('/soap:Envelope')
|
16
16
|
assert_instance_of(XML::XPath::Object, nodes)
|
17
|
-
assert_instance_of(XML::Node::Set, nodes.set)
|
18
17
|
assert_equal(1, nodes.length)
|
18
|
+
assert_equal(nodes.xpath_type, XML::XPath::NODESET)
|
19
|
+
assert_instance_of(XML::Node::Set, nodes.set)
|
20
|
+
assert_instance_of(XML::XPath::Context, nodes.context)
|
21
|
+
end
|
22
|
+
|
23
|
+
def test_doc_find_first
|
24
|
+
node = @doc.find_first('/soap:Envelope/soap:Body')
|
25
|
+
assert_instance_of(XML::Node, node)
|
19
26
|
end
|
20
27
|
|
21
28
|
def test_ns
|
@@ -51,6 +58,46 @@ class TextXPath < Test::Unit::TestCase
|
|
51
58
|
assert_equal(3, nodes.length)
|
52
59
|
end
|
53
60
|
|
61
|
+
def test_attribute_ns
|
62
|
+
# Pull all nodes with http://services.somewhere.com namespace
|
63
|
+
nodes = @doc.find('@soap:encodingStyle')
|
64
|
+
assert_equal(1, nodes.length)
|
65
|
+
assert_equal('encodingStyle', nodes.first.name)
|
66
|
+
assert_equal('http://www.w3.org/2001/12/soap-encoding', nodes.first.value)
|
67
|
+
end
|
68
|
+
|
69
|
+
def test_node_find
|
70
|
+
nodes = @doc.find('//ns1:IdAndName', 'ns1:http://domain.somewhere.com')
|
71
|
+
node = nodes.first
|
72
|
+
|
73
|
+
# Since we are searching on the node, don't have to register namespace
|
74
|
+
nodes = node.find('ns1:name')
|
75
|
+
assert_equal(1, nodes.length)
|
76
|
+
assert_equal('name', nodes.first.name)
|
77
|
+
assert_equal('man1', nodes.first.content)
|
78
|
+
end
|
79
|
+
|
80
|
+
def test_node_find_first
|
81
|
+
node = @doc.find_first('//ns1:IdAndName', 'ns1:http://domain.somewhere.com')
|
82
|
+
|
83
|
+
# Since we are searching on the node, don't have to register namespace
|
84
|
+
node = node.find_first('ns1:name')
|
85
|
+
assert_equal('name', node.name)
|
86
|
+
assert_equal('man1', node.content)
|
87
|
+
end
|
88
|
+
|
89
|
+
def test_node_no_doc
|
90
|
+
node = XML::Node.new('header', 'some content')
|
91
|
+
assert_raise(TypeError) do
|
92
|
+
node = node.find_first('/header')
|
93
|
+
end
|
94
|
+
end
|
95
|
+
|
96
|
+
def test_nodes_debug
|
97
|
+
# nodes = @doc.find('//ns1:IdAndName', 'ns1:http://domain.somewhere.com')
|
98
|
+
#nodes.debug
|
99
|
+
end
|
100
|
+
|
54
101
|
#def test_custom_function
|
55
102
|
#xml = Tempfile.new("xxx")
|
56
103
|
#xml.puts("<a/>")
|
@@ -59,4 +106,25 @@ class TextXPath < Test::Unit::TestCase
|
|
59
106
|
#doc = XML::Document.file(xml.path)
|
60
107
|
#assert_nil(doc.find("//*[name(.)=normalize_space(' a ')]"))
|
61
108
|
#end
|
109
|
+
|
110
|
+
#def test_memory
|
111
|
+
## This sometimes causes a segmentation fault because
|
112
|
+
## an xml document is sometimes freed before the
|
113
|
+
## xpath_object used to query it. When the xpath_object
|
114
|
+
## is free, it iterates over its results which are pointers
|
115
|
+
## to the document's nodes. A segmentation fault then happens.
|
116
|
+
|
117
|
+
#100.times do
|
118
|
+
#doc = XML::Document.new('1.0')
|
119
|
+
#doc.root = XML::Node.new("header")
|
120
|
+
|
121
|
+
#1000.times do
|
122
|
+
#doc.root << XML::Node.new("footer")
|
123
|
+
#end
|
124
|
+
|
125
|
+
#nodes = doc.find('/header/footer')
|
126
|
+
#nodes.length
|
127
|
+
#nodes = nil
|
128
|
+
#end
|
129
|
+
#end
|
62
130
|
end
|
@@ -0,0 +1,72 @@
|
|
1
|
+
require "libxml"
|
2
|
+
require "tempfile"
|
3
|
+
require "test/unit"
|
4
|
+
|
5
|
+
class TestXPathContext < Test::Unit::TestCase
|
6
|
+
SOAP_PREFIX = 'soap'
|
7
|
+
SOAP_URI = 'http://schemas.xmlsoap.org/soap/envelope/'
|
8
|
+
|
9
|
+
NS0_PREFIX = 'ns0'
|
10
|
+
NS0_URI = 'http://services.somewhere.com'
|
11
|
+
|
12
|
+
def setup()
|
13
|
+
doc = XML::Document.file(File.join(File.dirname(__FILE__), 'model/soap.xml'))
|
14
|
+
@context = XML::XPath::Context.new(doc)
|
15
|
+
end
|
16
|
+
|
17
|
+
def teardown()
|
18
|
+
@context = nil
|
19
|
+
end
|
20
|
+
|
21
|
+
#def test_no_ns
|
22
|
+
#assert_raise(XML::XPath::InvalidPath) do
|
23
|
+
#@context.find('/soap:Envelope')
|
24
|
+
#end
|
25
|
+
#end
|
26
|
+
|
27
|
+
def test_ns_register
|
28
|
+
@context.register_namespace(SOAP_PREFIX, SOAP_URI)
|
29
|
+
@context.register_namespace(NS0_PREFIX, NS0_URI)
|
30
|
+
nodes = @context.find('/soap:Envelope/soap:Body/ns0:getManufacturerNamesResponse')
|
31
|
+
assert_equal(1, nodes.length)
|
32
|
+
end
|
33
|
+
|
34
|
+
def test_ns_register_string
|
35
|
+
@context.register_namespaces("#{SOAP_PREFIX}:#{SOAP_URI}")
|
36
|
+
@context.register_namespaces("#{NS0_PREFIX}:#{NS0_URI}")
|
37
|
+
nodes = @context.find('/soap:Envelope/soap:Body/ns0:getManufacturerNamesResponse')
|
38
|
+
assert_equal(1, nodes.length)
|
39
|
+
end
|
40
|
+
|
41
|
+
def test_ns_register_array
|
42
|
+
@context.register_namespaces(["#{SOAP_PREFIX}:#{SOAP_URI}", "#{NS0_PREFIX}:#{NS0_URI}"])
|
43
|
+
nodes = @context.find('/soap:Envelope/soap:Body/ns0:getManufacturerNamesResponse')
|
44
|
+
assert_equal(1, nodes.length)
|
45
|
+
end
|
46
|
+
|
47
|
+
def test_ns_register_hash
|
48
|
+
@context.register_namespaces(SOAP_PREFIX => SOAP_URI,
|
49
|
+
NS0_PREFIX => NS0_URI)
|
50
|
+
|
51
|
+
nodes = @context.find('/soap:Envelope/soap:Body/ns0:getManufacturerNamesResponse')
|
52
|
+
assert_equal(1, nodes.length)
|
53
|
+
end
|
54
|
+
|
55
|
+
def test_ns_register_node
|
56
|
+
@context.register_namespaces_from_node(@context.doc.root)
|
57
|
+
nodes = @context.find('/soap:Envelope')
|
58
|
+
assert_equal(1, nodes.length)
|
59
|
+
end
|
60
|
+
|
61
|
+
def test_node
|
62
|
+
@context.register_namespaces_from_node(@context.doc.root)
|
63
|
+
|
64
|
+
nodes = @context.find('soap:Body')
|
65
|
+
assert_equal(0, nodes.length)
|
66
|
+
|
67
|
+
|
68
|
+
@context.node = @context.doc.root.child.next
|
69
|
+
nodes = @context.find('soap:Body')
|
70
|
+
assert_equal(0, nodes.length)
|
71
|
+
end
|
72
|
+
end
|