libxml-ruby 2.8.0 → 3.2.3
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.
- checksums.yaml +5 -5
- data/HISTORY +859 -775
- data/LICENSE +20 -20
- data/MANIFEST +166 -166
- data/README.rdoc +217 -184
- data/Rakefile +98 -78
- data/ext/libxml/extconf.rb +61 -116
- data/ext/libxml/libxml.c +80 -76
- data/ext/libxml/ruby_libxml.h +67 -75
- data/ext/libxml/ruby_xml.c +937 -893
- data/ext/libxml/ruby_xml.h +10 -10
- data/ext/libxml/ruby_xml_attr.c +333 -333
- data/ext/libxml/ruby_xml_attr.h +12 -12
- data/ext/libxml/ruby_xml_attr_decl.c +153 -153
- data/ext/libxml/ruby_xml_attr_decl.h +11 -11
- data/ext/libxml/ruby_xml_attributes.c +275 -275
- data/ext/libxml/ruby_xml_attributes.h +15 -15
- data/ext/libxml/ruby_xml_cbg.c +85 -85
- data/ext/libxml/ruby_xml_document.c +1123 -1147
- data/ext/libxml/ruby_xml_document.h +11 -11
- data/ext/libxml/ruby_xml_dtd.c +248 -268
- data/ext/libxml/ruby_xml_dtd.h +9 -9
- data/ext/libxml/ruby_xml_encoding.c +250 -260
- data/ext/libxml/ruby_xml_encoding.h +16 -19
- data/ext/libxml/ruby_xml_error.c +996 -996
- data/ext/libxml/ruby_xml_error.h +12 -12
- data/ext/libxml/ruby_xml_html_parser.c +89 -92
- data/ext/libxml/ruby_xml_html_parser.h +10 -10
- data/ext/libxml/ruby_xml_html_parser_context.c +337 -338
- data/ext/libxml/ruby_xml_html_parser_context.h +10 -10
- data/ext/libxml/ruby_xml_html_parser_options.c +46 -46
- data/ext/libxml/ruby_xml_html_parser_options.h +10 -10
- data/ext/libxml/ruby_xml_input_cbg.c +191 -191
- data/ext/libxml/ruby_xml_input_cbg.h +20 -20
- data/ext/libxml/ruby_xml_io.c +47 -50
- data/ext/libxml/ruby_xml_io.h +10 -10
- data/ext/libxml/ruby_xml_namespace.c +154 -153
- data/ext/libxml/ruby_xml_namespace.h +10 -10
- data/ext/libxml/ruby_xml_namespaces.c +293 -293
- data/ext/libxml/ruby_xml_namespaces.h +9 -9
- data/ext/libxml/ruby_xml_node.c +1406 -1452
- data/ext/libxml/ruby_xml_node.h +13 -11
- data/ext/libxml/ruby_xml_parser.c +91 -94
- data/ext/libxml/ruby_xml_parser.h +12 -12
- data/ext/libxml/ruby_xml_parser_context.c +999 -1001
- data/ext/libxml/ruby_xml_parser_context.h +10 -10
- data/ext/libxml/ruby_xml_parser_options.c +66 -66
- data/ext/libxml/ruby_xml_parser_options.h +12 -12
- data/ext/libxml/ruby_xml_reader.c +1239 -1228
- data/ext/libxml/ruby_xml_reader.h +17 -17
- data/ext/libxml/ruby_xml_relaxng.c +110 -111
- data/ext/libxml/ruby_xml_relaxng.h +10 -10
- data/ext/libxml/ruby_xml_sax2_handler.c +326 -328
- data/ext/libxml/ruby_xml_sax2_handler.h +10 -10
- data/ext/libxml/ruby_xml_sax_parser.c +116 -120
- data/ext/libxml/ruby_xml_sax_parser.h +10 -10
- data/ext/libxml/ruby_xml_schema.c +350 -301
- data/ext/libxml/ruby_xml_schema.h +806 -809
- data/ext/libxml/ruby_xml_schema_attribute.c +61 -109
- data/ext/libxml/ruby_xml_schema_attribute.h +15 -15
- data/ext/libxml/ruby_xml_schema_element.c +69 -94
- data/ext/libxml/ruby_xml_schema_element.h +14 -14
- data/ext/libxml/ruby_xml_schema_facet.c +46 -52
- data/ext/libxml/ruby_xml_schema_facet.h +13 -13
- data/ext/libxml/ruby_xml_schema_type.c +214 -259
- data/ext/libxml/ruby_xml_schema_type.h +9 -9
- data/ext/libxml/ruby_xml_version.h +9 -9
- data/ext/libxml/ruby_xml_writer.c +1133 -1137
- data/ext/libxml/ruby_xml_writer.h +10 -10
- data/ext/libxml/ruby_xml_xinclude.c +16 -16
- data/ext/libxml/ruby_xml_xinclude.h +11 -11
- data/ext/libxml/ruby_xml_xpath.c +194 -188
- data/ext/libxml/ruby_xml_xpath.h +13 -13
- data/ext/libxml/ruby_xml_xpath_context.c +360 -361
- data/ext/libxml/ruby_xml_xpath_context.h +9 -9
- data/ext/libxml/ruby_xml_xpath_expression.c +81 -81
- data/ext/libxml/ruby_xml_xpath_expression.h +10 -10
- data/ext/libxml/ruby_xml_xpath_object.c +338 -335
- data/ext/libxml/ruby_xml_xpath_object.h +17 -17
- data/ext/libxml/ruby_xml_xpointer.c +99 -99
- data/ext/libxml/ruby_xml_xpointer.h +11 -11
- data/ext/vc/libxml_ruby.sln +17 -15
- data/lib/libxml/node.rb +2 -78
- data/lib/libxml/parser.rb +0 -266
- data/lib/libxml/sax_parser.rb +0 -17
- data/lib/libxml/schema/attribute.rb +19 -19
- data/lib/libxml/schema/element.rb +19 -27
- data/lib/libxml/schema/type.rb +21 -29
- data/lib/libxml/schema.rb +47 -66
- data/lib/libxml-ruby.rb +30 -0
- data/lib/libxml.rb +3 -33
- data/libxml-ruby.gemspec +48 -44
- data/script/benchmark/depixelate +634 -634
- data/script/benchmark/hamlet.xml +9054 -9054
- data/script/benchmark/parsecount +170 -170
- data/script/benchmark/throughput +41 -41
- data/script/test +6 -6
- data/setup.rb +0 -1
- data/test/c14n/given/example-1.xml +14 -14
- data/test/c14n/given/example-2.xml +11 -11
- data/test/c14n/given/example-3.xml +18 -18
- data/test/c14n/given/example-4.xml +9 -9
- data/test/c14n/given/example-5.xml +12 -12
- data/test/c14n/given/example-6.xml +2 -2
- data/test/c14n/given/example-7.xml +11 -11
- data/test/c14n/given/example-8.xml +11 -11
- data/test/c14n/given/example-8.xpath +9 -9
- data/test/c14n/result/1-1-without-comments/example-1 +3 -3
- data/test/c14n/result/1-1-without-comments/example-2 +10 -10
- data/test/c14n/result/1-1-without-comments/example-3 +13 -13
- data/test/c14n/result/1-1-without-comments/example-4 +8 -8
- data/test/c14n/result/1-1-without-comments/example-5 +2 -2
- data/test/c14n/result/with-comments/example-1 +5 -5
- data/test/c14n/result/with-comments/example-2 +10 -10
- data/test/c14n/result/with-comments/example-3 +13 -13
- data/test/c14n/result/with-comments/example-4 +8 -8
- data/test/c14n/result/with-comments/example-5 +3 -3
- data/test/c14n/result/without-comments/example-1 +3 -3
- data/test/c14n/result/without-comments/example-2 +10 -10
- data/test/c14n/result/without-comments/example-3 +13 -13
- data/test/c14n/result/without-comments/example-4 +8 -8
- data/test/c14n/result/without-comments/example-5 +2 -2
- data/test/model/atom.xml +12 -12
- data/test/model/bands.iso-8859-1.xml +4 -4
- data/test/model/bands.utf-8.xml +4 -4
- data/test/model/bands.xml +4 -4
- data/test/model/books.xml +153 -153
- data/test/model/cwm_1_0.xml +11336 -0
- data/test/model/merge_bug_data.xml +58 -58
- data/test/model/ruby-lang.html +238 -238
- data/test/model/rubynet.xml +79 -79
- data/test/model/shiporder.rnc +28 -28
- data/test/model/shiporder.rng +86 -86
- data/test/model/shiporder.xml +22 -22
- data/test/model/shiporder.xsd +44 -40
- data/test/model/shiporder_bad.xsd +40 -0
- data/test/model/shiporder_import.xsd +45 -0
- data/test/model/soap.xml +27 -27
- data/test/model/xinclude.xml +4 -4
- data/test/{tc_attr.rb → test_attr.rb} +23 -25
- data/test/{tc_attr_decl.rb → test_attr_decl.rb} +13 -14
- data/test/{tc_attributes.rb → test_attributes.rb} +11 -18
- data/test/{tc_canonicalize.rb → test_canonicalize.rb} +36 -41
- data/test/test_deprecated_require.rb +12 -0
- data/test/{tc_document.rb → test_document.rb} +33 -27
- data/test/test_document_write.rb +146 -0
- data/test/{tc_dtd.rb → test_dtd.rb} +29 -29
- data/test/{tc_encoding.rb → test_encoding.rb} +129 -126
- data/test/{tc_encoding_sax.rb → test_encoding_sax.rb} +7 -6
- data/test/test_error.rb +178 -0
- data/test/test_helper.rb +4 -9
- data/test/test_html_parser.rb +162 -0
- data/test/test_html_parser_context.rb +23 -0
- data/test/test_namespace.rb +60 -0
- data/test/{tc_namespaces.rb → test_namespaces.rb} +34 -44
- data/test/{tc_node.rb → test_node.rb} +68 -47
- data/test/{tc_node_cdata.rb → test_node_cdata.rb} +12 -13
- data/test/{tc_node_comment.rb → test_node_comment.rb} +7 -8
- data/test/{tc_node_copy.rb → test_node_copy.rb} +4 -6
- data/test/{tc_node_edit.rb → test_node_edit.rb} +23 -41
- data/test/{tc_node_pi.rb → test_node_pi.rb} +37 -40
- data/test/{tc_node_text.rb → test_node_text.rb} +10 -12
- data/test/{tc_node_write.rb → test_node_write.rb} +18 -29
- data/test/test_node_xlink.rb +28 -0
- data/test/test_parser.rb +324 -0
- data/test/{tc_parser_context.rb → test_parser_context.rb} +42 -49
- data/test/{tc_properties.rb → test_properties.rb} +6 -7
- data/test/test_reader.rb +364 -0
- data/test/test_relaxng.rb +53 -0
- data/test/{tc_sax_parser.rb → test_sax_parser.rb} +44 -38
- data/test/test_schema.rb +231 -0
- data/test/test_suite.rb +38 -40
- data/test/{tc_traversal.rb → test_traversal.rb} +5 -6
- data/test/{tc_writer.rb → test_writer.rb} +468 -448
- data/test/{tc_xinclude.rb → test_xinclude.rb} +4 -5
- data/test/test_xml.rb +263 -0
- data/test/{tc_xpath.rb → test_xpath.rb} +31 -32
- data/test/{tc_xpath_context.rb → test_xpath_context.rb} +8 -9
- data/test/test_xpath_expression.rb +37 -0
- data/test/{tc_xpointer.rb → test_xpointer.rb} +16 -18
- metadata +122 -100
- data/lib/libxml/ns.rb +0 -22
- data/lib/libxml/properties.rb +0 -23
- data/lib/libxml/reader.rb +0 -29
- data/lib/libxml/xpath_object.rb +0 -16
- data/test/etc_doc_to_s.rb +0 -21
- data/test/ets_doc_file.rb +0 -17
- data/test/ets_doc_to_s.rb +0 -23
- data/test/ets_gpx.rb +0 -28
- data/test/ets_node_gc.rb +0 -23
- data/test/ets_test.xml +0 -2
- data/test/ets_tsr.rb +0 -11
- data/test/tc_deprecated_require.rb +0 -13
- data/test/tc_document_write.rb +0 -196
- data/test/tc_error.rb +0 -180
- data/test/tc_html_parser.rb +0 -153
- data/test/tc_html_parser_context.rb +0 -24
- data/test/tc_namespace.rb +0 -62
- data/test/tc_node_xlink.rb +0 -29
- data/test/tc_parser.rb +0 -381
- data/test/tc_reader.rb +0 -400
- data/test/tc_relaxng.rb +0 -54
- data/test/tc_schema.rb +0 -162
- data/test/tc_xml.rb +0 -226
- data/test/tc_xpath_expression.rb +0 -38
|
@@ -1,11 +1,10 @@
|
|
|
1
1
|
# encoding: UTF-8
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
require 'test/unit'
|
|
3
|
+
require_relative './test_helper'
|
|
5
4
|
|
|
6
|
-
class TestNodeEdit < Test
|
|
5
|
+
class TestNodeEdit < Minitest::Test
|
|
7
6
|
def setup
|
|
8
|
-
xp = XML::Parser.string('<test><num>one</num><num>two</num><num>three</num></test>')
|
|
7
|
+
xp = LibXML::XML::Parser.string('<test><num>one</num><num>two</num><num>three</num></test>')
|
|
9
8
|
@doc = xp.parse
|
|
10
9
|
end
|
|
11
10
|
|
|
@@ -26,37 +25,37 @@ class TestNodeEdit < Test::Unit::TestCase
|
|
|
26
25
|
end
|
|
27
26
|
|
|
28
27
|
def test_add_next_01
|
|
29
|
-
first_node.next = XML::Node.new('num', 'one-and-a-half')
|
|
28
|
+
first_node.next = LibXML::XML::Node.new('num', 'one-and-a-half')
|
|
30
29
|
assert_equal('<test><num>one</num><num>one-and-a-half</num><num>two</num><num>three</num></test>',
|
|
31
30
|
@doc.root.to_s.gsub(/\n\s*/,''))
|
|
32
31
|
end
|
|
33
32
|
|
|
34
33
|
def test_add_next_02
|
|
35
|
-
second_node.next = XML::Node.new('num', 'two-and-a-half')
|
|
34
|
+
second_node.next = LibXML::XML::Node.new('num', 'two-and-a-half')
|
|
36
35
|
assert_equal('<test><num>one</num><num>two</num><num>two-and-a-half</num><num>three</num></test>',
|
|
37
36
|
@doc.root.to_s.gsub(/\n\s*/,''))
|
|
38
37
|
end
|
|
39
38
|
|
|
40
39
|
def test_add_next_03
|
|
41
|
-
third_node.next = XML::Node.new('num', 'four')
|
|
40
|
+
third_node.next = LibXML::XML::Node.new('num', 'four')
|
|
42
41
|
assert_equal '<test><num>one</num><num>two</num><num>three</num><num>four</num></test>',
|
|
43
42
|
@doc.root.to_s.gsub(/\n\s*/,'')
|
|
44
43
|
end
|
|
45
44
|
|
|
46
45
|
def test_add_prev_01
|
|
47
|
-
first_node.prev = XML::Node.new('num', 'half')
|
|
46
|
+
first_node.prev = LibXML::XML::Node.new('num', 'half')
|
|
48
47
|
assert_equal '<test><num>half</num><num>one</num><num>two</num><num>three</num></test>',
|
|
49
48
|
@doc.root.to_s.gsub(/\n\s*/,'')
|
|
50
49
|
end
|
|
51
50
|
|
|
52
51
|
def test_add_prev_02
|
|
53
|
-
second_node.prev = XML::Node.new('num', 'one-and-a-half')
|
|
52
|
+
second_node.prev = LibXML::XML::Node.new('num', 'one-and-a-half')
|
|
54
53
|
assert_equal '<test><num>one</num><num>one-and-a-half</num><num>two</num><num>three</num></test>',
|
|
55
54
|
@doc.root.to_s.gsub(/\n\s*/,'')
|
|
56
55
|
end
|
|
57
56
|
|
|
58
57
|
def test_add_prev_03
|
|
59
|
-
third_node.prev = XML::Node.new('num', 'two-and-a-half')
|
|
58
|
+
third_node.prev = LibXML::XML::Node.new('num', 'two-and-a-half')
|
|
60
59
|
assert_equal '<test><num>one</num><num>two</num><num>two-and-a-half</num><num>three</num></test>',
|
|
61
60
|
@doc.root.to_s.gsub(/\n\s*/,'')
|
|
62
61
|
end
|
|
@@ -67,28 +66,12 @@ class TestNodeEdit < Test::Unit::TestCase
|
|
|
67
66
|
@doc.root.to_s.gsub(/\n\s*/,''))
|
|
68
67
|
end
|
|
69
68
|
|
|
70
|
-
def test_freed_node
|
|
71
|
-
root = XML::Node.new("root")
|
|
72
|
-
|
|
73
|
-
a = XML::Node.new("a")
|
|
74
|
-
root << a
|
|
75
|
-
|
|
76
|
-
a.parent.remove!
|
|
77
|
-
|
|
78
|
-
# Node a has now been freed from under us
|
|
79
|
-
error = assert_raise(RuntimeError) do
|
|
80
|
-
a.to_s
|
|
81
|
-
end
|
|
82
|
-
assert_equal('This node has already been freed.', error.to_s)
|
|
83
|
-
end
|
|
84
|
-
|
|
85
69
|
def test_remove_node_gc
|
|
86
|
-
xp = XML::Parser.string('<test><num>one</num><num>two</num><num>three</num></test>')
|
|
70
|
+
xp = LibXML::XML::Parser.string('<test><num>one</num><num>two</num><num>three</num></test>')
|
|
87
71
|
doc = xp.parse
|
|
88
|
-
|
|
89
|
-
node = nil
|
|
72
|
+
doc.root.child.remove!
|
|
90
73
|
GC.start
|
|
91
|
-
|
|
74
|
+
refute_nil(doc)
|
|
92
75
|
end
|
|
93
76
|
|
|
94
77
|
def test_remove_node_iteration
|
|
@@ -105,7 +88,7 @@ class TestNodeEdit < Test::Unit::TestCase
|
|
|
105
88
|
def test_reuse_removed_node
|
|
106
89
|
# Remove the node
|
|
107
90
|
node = @doc.root.first.remove!
|
|
108
|
-
|
|
91
|
+
refute_nil(node)
|
|
109
92
|
|
|
110
93
|
# Add it to the end of the document
|
|
111
94
|
@doc.root.last.next = node
|
|
@@ -115,7 +98,7 @@ class TestNodeEdit < Test::Unit::TestCase
|
|
|
115
98
|
end
|
|
116
99
|
|
|
117
100
|
def test_append_existing_node
|
|
118
|
-
doc = XML::Parser.string('<top>a<bottom>b<one>first</one><two>second</two>c</bottom>d</top>').parse
|
|
101
|
+
doc = LibXML::XML::Parser.string('<top>a<bottom>b<one>first</one><two>second</two>c</bottom>d</top>').parse
|
|
119
102
|
node1 = doc.find_first('//two')
|
|
120
103
|
|
|
121
104
|
doc.root << node1
|
|
@@ -124,18 +107,17 @@ class TestNodeEdit < Test::Unit::TestCase
|
|
|
124
107
|
end
|
|
125
108
|
|
|
126
109
|
def test_wrong_doc
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
doc2 = XML::Parser.string('<nums><two></two></nums>').parse
|
|
110
|
+
doc1 = LibXML::XML::Parser.string('<nums><one></one></nums>').parse
|
|
111
|
+
doc2 = LibXML::XML::Parser.string('<nums><two></two></nums>').parse
|
|
130
112
|
|
|
131
113
|
node = doc1.root.child
|
|
132
114
|
|
|
133
|
-
error =
|
|
115
|
+
error = assert_raises(LibXML::XML::Error) do
|
|
134
116
|
doc2.root << node
|
|
135
117
|
end
|
|
136
118
|
|
|
137
119
|
GC.start
|
|
138
|
-
assert_equal(' Nodes belong to different documents. You must first import the node by calling XML::Document.import.',
|
|
120
|
+
assert_equal(' Nodes belong to different documents. You must first import the node by calling LibXML::XML::Document.import.',
|
|
139
121
|
error.to_s)
|
|
140
122
|
end
|
|
141
123
|
|
|
@@ -145,11 +127,12 @@ class TestNodeEdit < Test::Unit::TestCase
|
|
|
145
127
|
|
|
146
128
|
# Read in 500 documents
|
|
147
129
|
500.times do
|
|
148
|
-
documents << XML::Parser.string(File.read(File.join(File.dirname(__FILE__), 'model', 'merge_bug_data.xml'))).parse
|
|
130
|
+
documents << LibXML::XML::Parser.string(File.read(File.join(File.dirname(__FILE__), 'model', 'merge_bug_data.xml'))).parse
|
|
149
131
|
end
|
|
150
132
|
|
|
151
133
|
master_doc = documents.shift
|
|
152
|
-
|
|
134
|
+
|
|
135
|
+
documents.each do |child_doc|
|
|
153
136
|
master_body = master_doc.find("//body").first
|
|
154
137
|
child_body = child_doc.find("//body").first
|
|
155
138
|
|
|
@@ -158,12 +141,11 @@ class TestNodeEdit < Test::Unit::TestCase
|
|
|
158
141
|
end
|
|
159
142
|
|
|
160
143
|
master_body << child_element.copy(true)
|
|
161
|
-
master_doc
|
|
162
144
|
end
|
|
163
145
|
end
|
|
164
146
|
|
|
165
147
|
def test_append_chain
|
|
166
|
-
node = XML::Node.new('foo') << XML::Node.new('bar') << "bars contents"
|
|
148
|
+
node = LibXML::XML::Node.new('foo') << LibXML::XML::Node.new('bar') << "bars contents"
|
|
167
149
|
assert_equal('<foo><bar/>bars contents</foo>',
|
|
168
150
|
node.to_s)
|
|
169
151
|
end
|
|
@@ -173,4 +155,4 @@ class TestNodeEdit < Test::Unit::TestCase
|
|
|
173
155
|
assert_equal("<test xml:base=\"http://www.rubynet.org/\">\n <num>one</num>\n <num>two</num>\n <num>three</num>\n</test>",
|
|
174
156
|
@doc.root.to_s)
|
|
175
157
|
end
|
|
176
|
-
end
|
|
158
|
+
end
|
|
@@ -1,40 +1,37 @@
|
|
|
1
|
-
# encoding: UTF-8
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
@
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
@root
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
end
|
|
39
|
-
|
|
40
|
-
end
|
|
1
|
+
# encoding: UTF-8
|
|
2
|
+
|
|
3
|
+
require_relative './test_helper'
|
|
4
|
+
|
|
5
|
+
class NodePiTest < Minitest::Test
|
|
6
|
+
def setup
|
|
7
|
+
xp = LibXML::XML::Parser.string('<root></root>')
|
|
8
|
+
@doc = xp.parse
|
|
9
|
+
assert_instance_of(LibXML::XML::Document, @doc)
|
|
10
|
+
@root = @doc.root
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
def test_libxml_node_add_pi_01
|
|
14
|
+
@root << LibXML::XML::Node.new_pi('mypi')
|
|
15
|
+
assert_equal '<root><?mypi?></root>',
|
|
16
|
+
@root.to_s.gsub(/\n\s*/,'')
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
def test_libxml_node_add_pi_02
|
|
20
|
+
@root << LibXML::XML::Node.new_pi('mypi')
|
|
21
|
+
assert_equal 'pi',
|
|
22
|
+
@root.child.node_type_name
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
def test_libxml_node_add_pi_03
|
|
26
|
+
@root << el = LibXML::XML::Node.new_pi('mypi')
|
|
27
|
+
el << "_this_is_added"
|
|
28
|
+
assert_equal '<root><?mypi _this_is_added?></root>',
|
|
29
|
+
@root.to_s.gsub(/\n\s*/,'')
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
def test_libxml_node_add_pi_04
|
|
33
|
+
@root << LibXML::XML::Node.new_pi('mypi','mycontent')
|
|
34
|
+
assert_equal '<root><?mypi mycontent?></root>',
|
|
35
|
+
@root.to_s.gsub(/\n\s*/,'')
|
|
36
|
+
end
|
|
37
|
+
end
|
|
@@ -1,18 +1,17 @@
|
|
|
1
1
|
# encoding: UTF-8
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
require 'test/unit'
|
|
3
|
+
require_relative './test_helper'
|
|
5
4
|
|
|
6
|
-
class TestTextNode < Test
|
|
5
|
+
class TestTextNode < Minitest::Test
|
|
7
6
|
def test_content
|
|
8
|
-
node = XML::Node.new_text('testdata')
|
|
9
|
-
assert_instance_of(XML::Node, node)
|
|
7
|
+
node = LibXML::XML::Node.new_text('testdata')
|
|
8
|
+
assert_instance_of(LibXML::XML::Node, node)
|
|
10
9
|
assert_equal('testdata', node.content)
|
|
11
10
|
end
|
|
12
11
|
|
|
13
12
|
def test_invalid_content
|
|
14
|
-
error =
|
|
15
|
-
|
|
13
|
+
error = assert_raises(TypeError) do
|
|
14
|
+
LibXML::XML::Node.new_text(nil)
|
|
16
15
|
end
|
|
17
16
|
assert_equal('wrong argument type nil (expected String)', error.to_s)
|
|
18
17
|
end
|
|
@@ -24,11 +23,11 @@ class TestTextNode < Test::Unit::TestCase
|
|
|
24
23
|
# in CDATA nodes. Or if you are sanitizing existing HTML documents and want
|
|
25
24
|
# to preserve the content of any of the text nodes.
|
|
26
25
|
#
|
|
27
|
-
|
|
26
|
+
def test_output_escaping
|
|
28
27
|
textnoenc = 'if (a < b || c > d) return "e";'
|
|
29
28
|
text = "if (a < b || c > d) return \"e\";"
|
|
30
29
|
|
|
31
|
-
node = XML::Node.new_text(textnoenc)
|
|
30
|
+
node = LibXML::XML::Node.new_text(textnoenc)
|
|
32
31
|
assert node.output_escaping?
|
|
33
32
|
assert_equal text, node.to_s
|
|
34
33
|
|
|
@@ -46,8 +45,8 @@ class TestTextNode < Test::Unit::TestCase
|
|
|
46
45
|
end
|
|
47
46
|
|
|
48
47
|
# Just a sanity check for output escaping.
|
|
49
|
-
|
|
50
|
-
node = XML::Node.new_text('testdata')
|
|
48
|
+
def test_output_escaping_sanity
|
|
49
|
+
node = LibXML::XML::Node.new_text('testdata')
|
|
51
50
|
assert_equal 'text', node.name
|
|
52
51
|
assert node.output_escaping?
|
|
53
52
|
|
|
@@ -67,5 +66,4 @@ class TestTextNode < Test::Unit::TestCase
|
|
|
67
66
|
assert_equal 'text', node.name
|
|
68
67
|
assert node.output_escaping?
|
|
69
68
|
end
|
|
70
|
-
|
|
71
69
|
end
|
|
@@ -1,32 +1,31 @@
|
|
|
1
1
|
# encoding: UTF-8
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
require 'test/unit'
|
|
3
|
+
require_relative './test_helper'
|
|
5
4
|
|
|
6
|
-
class TestNodeWrite < Test
|
|
5
|
+
class TestNodeWrite < Minitest::Test
|
|
7
6
|
def setup
|
|
8
7
|
load_encoding("utf-8")
|
|
9
8
|
end
|
|
10
9
|
|
|
11
10
|
def teardown
|
|
12
|
-
XML.default_keep_blanks = true
|
|
11
|
+
LibXML::XML.default_keep_blanks = true
|
|
13
12
|
@doc = nil
|
|
14
13
|
end
|
|
15
14
|
|
|
16
15
|
def load_encoding(name)
|
|
17
|
-
@encoding = Encoding.find(name)
|
|
16
|
+
@encoding = Encoding.find(name)
|
|
18
17
|
@file_name = "model/bands.#{name.downcase}.xml"
|
|
19
18
|
|
|
20
19
|
# Strip spaces to make testing easier
|
|
21
|
-
XML.default_keep_blanks = false
|
|
20
|
+
LibXML::XML.default_keep_blanks = false
|
|
22
21
|
file = File.join(File.dirname(__FILE__), @file_name)
|
|
23
|
-
@doc = XML::Document.file(file)
|
|
22
|
+
@doc = LibXML::XML::Document.file(file)
|
|
24
23
|
end
|
|
25
24
|
|
|
26
25
|
def test_to_s_default
|
|
27
26
|
# Default to_s has indentation
|
|
28
27
|
node = @doc.root
|
|
29
|
-
assert_equal(Encoding::UTF_8, node.to_s.encoding)
|
|
28
|
+
assert_equal(Encoding::UTF_8, node.to_s.encoding)
|
|
30
29
|
assert_equal("<bands genre=\"metal\">\n <m\303\266tley_cr\303\274e country=\"us\">M\303\266tley Cr\303\274e is an American heavy metal band formed in Los Angeles, California in 1981.</m\303\266tley_cr\303\274e>\n <iron_maiden country=\"uk\">Iron Maiden is a British heavy metal band formed in 1975.</iron_maiden>\n</bands>",
|
|
31
30
|
node.to_s)
|
|
32
31
|
end
|
|
@@ -34,11 +33,11 @@ class TestNodeWrite < Test::Unit::TestCase
|
|
|
34
33
|
def test_to_s_no_global_indentation
|
|
35
34
|
# No indentation due to global setting
|
|
36
35
|
node = @doc.root
|
|
37
|
-
XML.indent_tree_output = false
|
|
36
|
+
LibXML::XML.indent_tree_output = false
|
|
38
37
|
assert_equal("<bands genre=\"metal\">\n<m\303\266tley_cr\303\274e country=\"us\">M\303\266tley Cr\303\274e is an American heavy metal band formed in Los Angeles, California in 1981.</m\303\266tley_cr\303\274e>\n<iron_maiden country=\"uk\">Iron Maiden is a British heavy metal band formed in 1975.</iron_maiden>\n</bands>",
|
|
39
38
|
node.to_s)
|
|
40
39
|
ensure
|
|
41
|
-
XML.indent_tree_output = true
|
|
40
|
+
LibXML::XML.indent_tree_output = true
|
|
42
41
|
end
|
|
43
42
|
|
|
44
43
|
def test_to_s_no_indentation
|
|
@@ -62,26 +61,21 @@ class TestNodeWrite < Test::Unit::TestCase
|
|
|
62
61
|
# UTF8:
|
|
63
62
|
# ö - c3 b6 in hex, \303\266 in octal
|
|
64
63
|
# ü - c3 bc in hex, \303\274 in octal
|
|
65
|
-
value = node.to_s(:encoding => XML::Encoding::UTF_8)
|
|
66
|
-
assert_equal(Encoding::UTF_8, node.to_s.encoding)
|
|
64
|
+
value = node.to_s(:encoding => LibXML::XML::Encoding::UTF_8)
|
|
65
|
+
assert_equal(Encoding::UTF_8, node.to_s.encoding)
|
|
67
66
|
assert_equal("<bands genre=\"metal\">\n <m\303\266tley_cr\303\274e country=\"us\">M\303\266tley Cr\303\274e is an American heavy metal band formed in Los Angeles, California in 1981.</m\303\266tley_cr\303\274e>\n <iron_maiden country=\"uk\">Iron Maiden is a British heavy metal band formed in 1975.</iron_maiden>\n</bands>",
|
|
68
67
|
value)
|
|
69
68
|
|
|
70
69
|
# ISO_8859_1:
|
|
71
70
|
# ö - f6 in hex, \366 in octal
|
|
72
71
|
# ü - fc in hex, \374 in octal
|
|
73
|
-
value = node.to_s(:encoding => XML::Encoding::ISO_8859_1)
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
assert_equal("<bands genre=\"metal\">\n <m\xF6tley_cr\xFCe country=\"us\">M\xF6tley Cr\xFCe is an American heavy metal band formed in Los Angeles, California in 1981.</m\xF6tley_cr\xFCe>\n <iron_maiden country=\"uk\">Iron Maiden is a British heavy metal band formed in 1975.</iron_maiden>\n</bands>".force_encoding(Encoding::ISO8859_1),
|
|
77
|
-
value)
|
|
78
|
-
else
|
|
79
|
-
assert_equal("<bands genre=\"metal\">\n <m\xF6tley_cr\xFCe country=\"us\">M\xF6tley Cr\xFCe is an American heavy metal band formed in Los Angeles, California in 1981.</m\xF6tley_cr\xFCe>\n <iron_maiden country=\"uk\">Iron Maiden is a British heavy metal band formed in 1975.</iron_maiden>\n</bands>",
|
|
72
|
+
value = node.to_s(:encoding => LibXML::XML::Encoding::ISO_8859_1)
|
|
73
|
+
assert_equal(Encoding::ISO8859_1, value.encoding)
|
|
74
|
+
assert_equal("<bands genre=\"metal\">\n <m\xF6tley_cr\xFCe country=\"us\">M\xF6tley Cr\xFCe is an American heavy metal band formed in Los Angeles, California in 1981.</m\xF6tley_cr\xFCe>\n <iron_maiden country=\"uk\">Iron Maiden is a British heavy metal band formed in 1975.</iron_maiden>\n</bands>".force_encoding(Encoding::ISO8859_1),
|
|
80
75
|
value)
|
|
81
|
-
end
|
|
82
76
|
|
|
83
77
|
# Invalid encoding
|
|
84
|
-
error =
|
|
78
|
+
error = assert_raises(ArgumentError) do
|
|
85
79
|
node.to_s(:encoding => -9999)
|
|
86
80
|
end
|
|
87
81
|
assert_equal('Unknown encoding value: -9999', error.to_s)
|
|
@@ -91,14 +85,9 @@ class TestNodeWrite < Test::Unit::TestCase
|
|
|
91
85
|
# Default to_s has indentation
|
|
92
86
|
node = @doc.root
|
|
93
87
|
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
node.inner_xml)
|
|
98
|
-
else
|
|
99
|
-
assert_equal("<m\303\266tley_cr\303\274e country=\"us\">M\303\266tley Cr\303\274e is an American heavy metal band formed in Los Angeles, California in 1981.</m\303\266tley_cr\303\274e><iron_maiden country=\"uk\">Iron Maiden is a British heavy metal band formed in 1975.</iron_maiden>",
|
|
100
|
-
node.inner_xml)
|
|
101
|
-
end
|
|
88
|
+
assert_equal(Encoding::UTF_8, node.inner_xml.encoding)
|
|
89
|
+
assert_equal("<m\u00F6tley_cr\u00FCe country=\"us\">M\u00F6tley Cr\u00FCe is an American heavy metal band formed in Los Angeles, California in 1981.</m\u00F6tley_cr\u00FCe><iron_maiden country=\"uk\">Iron Maiden is a British heavy metal band formed in 1975.</iron_maiden>",
|
|
90
|
+
node.inner_xml)
|
|
102
91
|
end
|
|
103
92
|
|
|
104
93
|
# --- Debug ---
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
# encoding: UTF-8
|
|
2
|
+
|
|
3
|
+
# $Id$
|
|
4
|
+
require_relative './test_helper'
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
class TC_XML_Node_XLink < Minitest::Test
|
|
8
|
+
def setup()
|
|
9
|
+
xp = LibXML::XML::Parser.string('<ruby_array xmlns:xlink="http://www.w3.org/1999/xlink/namespace/"><fixnum xlink:type="simple">one</fixnum></ruby_array>')
|
|
10
|
+
doc = xp.parse
|
|
11
|
+
assert_instance_of(LibXML::XML::Document, doc)
|
|
12
|
+
@root = doc.root
|
|
13
|
+
assert_instance_of(LibXML::XML::Node, @root)
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
def teardown()
|
|
17
|
+
@root = nil
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
def test_xml_node_xlink()
|
|
21
|
+
for elem in @root.find('fixnum')
|
|
22
|
+
assert_instance_of(LibXML::XML::Node, elem)
|
|
23
|
+
assert_instance_of(TrueClass, elem.xlink?)
|
|
24
|
+
assert_equal("simple", elem.xlink_type_name)
|
|
25
|
+
assert_equal(LibXML::XML::Node::XLINK_TYPE_SIMPLE, elem.xlink_type)
|
|
26
|
+
end
|
|
27
|
+
end
|
|
28
|
+
end
|