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.
Files changed (205) hide show
  1. checksums.yaml +5 -5
  2. data/HISTORY +859 -775
  3. data/LICENSE +20 -20
  4. data/MANIFEST +166 -166
  5. data/README.rdoc +217 -184
  6. data/Rakefile +98 -78
  7. data/ext/libxml/extconf.rb +61 -116
  8. data/ext/libxml/libxml.c +80 -76
  9. data/ext/libxml/ruby_libxml.h +67 -75
  10. data/ext/libxml/ruby_xml.c +937 -893
  11. data/ext/libxml/ruby_xml.h +10 -10
  12. data/ext/libxml/ruby_xml_attr.c +333 -333
  13. data/ext/libxml/ruby_xml_attr.h +12 -12
  14. data/ext/libxml/ruby_xml_attr_decl.c +153 -153
  15. data/ext/libxml/ruby_xml_attr_decl.h +11 -11
  16. data/ext/libxml/ruby_xml_attributes.c +275 -275
  17. data/ext/libxml/ruby_xml_attributes.h +15 -15
  18. data/ext/libxml/ruby_xml_cbg.c +85 -85
  19. data/ext/libxml/ruby_xml_document.c +1123 -1147
  20. data/ext/libxml/ruby_xml_document.h +11 -11
  21. data/ext/libxml/ruby_xml_dtd.c +248 -268
  22. data/ext/libxml/ruby_xml_dtd.h +9 -9
  23. data/ext/libxml/ruby_xml_encoding.c +250 -260
  24. data/ext/libxml/ruby_xml_encoding.h +16 -19
  25. data/ext/libxml/ruby_xml_error.c +996 -996
  26. data/ext/libxml/ruby_xml_error.h +12 -12
  27. data/ext/libxml/ruby_xml_html_parser.c +89 -92
  28. data/ext/libxml/ruby_xml_html_parser.h +10 -10
  29. data/ext/libxml/ruby_xml_html_parser_context.c +337 -338
  30. data/ext/libxml/ruby_xml_html_parser_context.h +10 -10
  31. data/ext/libxml/ruby_xml_html_parser_options.c +46 -46
  32. data/ext/libxml/ruby_xml_html_parser_options.h +10 -10
  33. data/ext/libxml/ruby_xml_input_cbg.c +191 -191
  34. data/ext/libxml/ruby_xml_input_cbg.h +20 -20
  35. data/ext/libxml/ruby_xml_io.c +47 -50
  36. data/ext/libxml/ruby_xml_io.h +10 -10
  37. data/ext/libxml/ruby_xml_namespace.c +154 -153
  38. data/ext/libxml/ruby_xml_namespace.h +10 -10
  39. data/ext/libxml/ruby_xml_namespaces.c +293 -293
  40. data/ext/libxml/ruby_xml_namespaces.h +9 -9
  41. data/ext/libxml/ruby_xml_node.c +1406 -1452
  42. data/ext/libxml/ruby_xml_node.h +13 -11
  43. data/ext/libxml/ruby_xml_parser.c +91 -94
  44. data/ext/libxml/ruby_xml_parser.h +12 -12
  45. data/ext/libxml/ruby_xml_parser_context.c +999 -1001
  46. data/ext/libxml/ruby_xml_parser_context.h +10 -10
  47. data/ext/libxml/ruby_xml_parser_options.c +66 -66
  48. data/ext/libxml/ruby_xml_parser_options.h +12 -12
  49. data/ext/libxml/ruby_xml_reader.c +1239 -1228
  50. data/ext/libxml/ruby_xml_reader.h +17 -17
  51. data/ext/libxml/ruby_xml_relaxng.c +110 -111
  52. data/ext/libxml/ruby_xml_relaxng.h +10 -10
  53. data/ext/libxml/ruby_xml_sax2_handler.c +326 -328
  54. data/ext/libxml/ruby_xml_sax2_handler.h +10 -10
  55. data/ext/libxml/ruby_xml_sax_parser.c +116 -120
  56. data/ext/libxml/ruby_xml_sax_parser.h +10 -10
  57. data/ext/libxml/ruby_xml_schema.c +350 -301
  58. data/ext/libxml/ruby_xml_schema.h +806 -809
  59. data/ext/libxml/ruby_xml_schema_attribute.c +61 -109
  60. data/ext/libxml/ruby_xml_schema_attribute.h +15 -15
  61. data/ext/libxml/ruby_xml_schema_element.c +69 -94
  62. data/ext/libxml/ruby_xml_schema_element.h +14 -14
  63. data/ext/libxml/ruby_xml_schema_facet.c +46 -52
  64. data/ext/libxml/ruby_xml_schema_facet.h +13 -13
  65. data/ext/libxml/ruby_xml_schema_type.c +214 -259
  66. data/ext/libxml/ruby_xml_schema_type.h +9 -9
  67. data/ext/libxml/ruby_xml_version.h +9 -9
  68. data/ext/libxml/ruby_xml_writer.c +1133 -1137
  69. data/ext/libxml/ruby_xml_writer.h +10 -10
  70. data/ext/libxml/ruby_xml_xinclude.c +16 -16
  71. data/ext/libxml/ruby_xml_xinclude.h +11 -11
  72. data/ext/libxml/ruby_xml_xpath.c +194 -188
  73. data/ext/libxml/ruby_xml_xpath.h +13 -13
  74. data/ext/libxml/ruby_xml_xpath_context.c +360 -361
  75. data/ext/libxml/ruby_xml_xpath_context.h +9 -9
  76. data/ext/libxml/ruby_xml_xpath_expression.c +81 -81
  77. data/ext/libxml/ruby_xml_xpath_expression.h +10 -10
  78. data/ext/libxml/ruby_xml_xpath_object.c +338 -335
  79. data/ext/libxml/ruby_xml_xpath_object.h +17 -17
  80. data/ext/libxml/ruby_xml_xpointer.c +99 -99
  81. data/ext/libxml/ruby_xml_xpointer.h +11 -11
  82. data/ext/vc/libxml_ruby.sln +17 -15
  83. data/lib/libxml/node.rb +2 -78
  84. data/lib/libxml/parser.rb +0 -266
  85. data/lib/libxml/sax_parser.rb +0 -17
  86. data/lib/libxml/schema/attribute.rb +19 -19
  87. data/lib/libxml/schema/element.rb +19 -27
  88. data/lib/libxml/schema/type.rb +21 -29
  89. data/lib/libxml/schema.rb +47 -66
  90. data/lib/libxml-ruby.rb +30 -0
  91. data/lib/libxml.rb +3 -33
  92. data/libxml-ruby.gemspec +48 -44
  93. data/script/benchmark/depixelate +634 -634
  94. data/script/benchmark/hamlet.xml +9054 -9054
  95. data/script/benchmark/parsecount +170 -170
  96. data/script/benchmark/throughput +41 -41
  97. data/script/test +6 -6
  98. data/setup.rb +0 -1
  99. data/test/c14n/given/example-1.xml +14 -14
  100. data/test/c14n/given/example-2.xml +11 -11
  101. data/test/c14n/given/example-3.xml +18 -18
  102. data/test/c14n/given/example-4.xml +9 -9
  103. data/test/c14n/given/example-5.xml +12 -12
  104. data/test/c14n/given/example-6.xml +2 -2
  105. data/test/c14n/given/example-7.xml +11 -11
  106. data/test/c14n/given/example-8.xml +11 -11
  107. data/test/c14n/given/example-8.xpath +9 -9
  108. data/test/c14n/result/1-1-without-comments/example-1 +3 -3
  109. data/test/c14n/result/1-1-without-comments/example-2 +10 -10
  110. data/test/c14n/result/1-1-without-comments/example-3 +13 -13
  111. data/test/c14n/result/1-1-without-comments/example-4 +8 -8
  112. data/test/c14n/result/1-1-without-comments/example-5 +2 -2
  113. data/test/c14n/result/with-comments/example-1 +5 -5
  114. data/test/c14n/result/with-comments/example-2 +10 -10
  115. data/test/c14n/result/with-comments/example-3 +13 -13
  116. data/test/c14n/result/with-comments/example-4 +8 -8
  117. data/test/c14n/result/with-comments/example-5 +3 -3
  118. data/test/c14n/result/without-comments/example-1 +3 -3
  119. data/test/c14n/result/without-comments/example-2 +10 -10
  120. data/test/c14n/result/without-comments/example-3 +13 -13
  121. data/test/c14n/result/without-comments/example-4 +8 -8
  122. data/test/c14n/result/without-comments/example-5 +2 -2
  123. data/test/model/atom.xml +12 -12
  124. data/test/model/bands.iso-8859-1.xml +4 -4
  125. data/test/model/bands.utf-8.xml +4 -4
  126. data/test/model/bands.xml +4 -4
  127. data/test/model/books.xml +153 -153
  128. data/test/model/cwm_1_0.xml +11336 -0
  129. data/test/model/merge_bug_data.xml +58 -58
  130. data/test/model/ruby-lang.html +238 -238
  131. data/test/model/rubynet.xml +79 -79
  132. data/test/model/shiporder.rnc +28 -28
  133. data/test/model/shiporder.rng +86 -86
  134. data/test/model/shiporder.xml +22 -22
  135. data/test/model/shiporder.xsd +44 -40
  136. data/test/model/shiporder_bad.xsd +40 -0
  137. data/test/model/shiporder_import.xsd +45 -0
  138. data/test/model/soap.xml +27 -27
  139. data/test/model/xinclude.xml +4 -4
  140. data/test/{tc_attr.rb → test_attr.rb} +23 -25
  141. data/test/{tc_attr_decl.rb → test_attr_decl.rb} +13 -14
  142. data/test/{tc_attributes.rb → test_attributes.rb} +11 -18
  143. data/test/{tc_canonicalize.rb → test_canonicalize.rb} +36 -41
  144. data/test/test_deprecated_require.rb +12 -0
  145. data/test/{tc_document.rb → test_document.rb} +33 -27
  146. data/test/test_document_write.rb +146 -0
  147. data/test/{tc_dtd.rb → test_dtd.rb} +29 -29
  148. data/test/{tc_encoding.rb → test_encoding.rb} +129 -126
  149. data/test/{tc_encoding_sax.rb → test_encoding_sax.rb} +7 -6
  150. data/test/test_error.rb +178 -0
  151. data/test/test_helper.rb +4 -9
  152. data/test/test_html_parser.rb +162 -0
  153. data/test/test_html_parser_context.rb +23 -0
  154. data/test/test_namespace.rb +60 -0
  155. data/test/{tc_namespaces.rb → test_namespaces.rb} +34 -44
  156. data/test/{tc_node.rb → test_node.rb} +68 -47
  157. data/test/{tc_node_cdata.rb → test_node_cdata.rb} +12 -13
  158. data/test/{tc_node_comment.rb → test_node_comment.rb} +7 -8
  159. data/test/{tc_node_copy.rb → test_node_copy.rb} +4 -6
  160. data/test/{tc_node_edit.rb → test_node_edit.rb} +23 -41
  161. data/test/{tc_node_pi.rb → test_node_pi.rb} +37 -40
  162. data/test/{tc_node_text.rb → test_node_text.rb} +10 -12
  163. data/test/{tc_node_write.rb → test_node_write.rb} +18 -29
  164. data/test/test_node_xlink.rb +28 -0
  165. data/test/test_parser.rb +324 -0
  166. data/test/{tc_parser_context.rb → test_parser_context.rb} +42 -49
  167. data/test/{tc_properties.rb → test_properties.rb} +6 -7
  168. data/test/test_reader.rb +364 -0
  169. data/test/test_relaxng.rb +53 -0
  170. data/test/{tc_sax_parser.rb → test_sax_parser.rb} +44 -38
  171. data/test/test_schema.rb +231 -0
  172. data/test/test_suite.rb +38 -40
  173. data/test/{tc_traversal.rb → test_traversal.rb} +5 -6
  174. data/test/{tc_writer.rb → test_writer.rb} +468 -448
  175. data/test/{tc_xinclude.rb → test_xinclude.rb} +4 -5
  176. data/test/test_xml.rb +263 -0
  177. data/test/{tc_xpath.rb → test_xpath.rb} +31 -32
  178. data/test/{tc_xpath_context.rb → test_xpath_context.rb} +8 -9
  179. data/test/test_xpath_expression.rb +37 -0
  180. data/test/{tc_xpointer.rb → test_xpointer.rb} +16 -18
  181. metadata +122 -100
  182. data/lib/libxml/ns.rb +0 -22
  183. data/lib/libxml/properties.rb +0 -23
  184. data/lib/libxml/reader.rb +0 -29
  185. data/lib/libxml/xpath_object.rb +0 -16
  186. data/test/etc_doc_to_s.rb +0 -21
  187. data/test/ets_doc_file.rb +0 -17
  188. data/test/ets_doc_to_s.rb +0 -23
  189. data/test/ets_gpx.rb +0 -28
  190. data/test/ets_node_gc.rb +0 -23
  191. data/test/ets_test.xml +0 -2
  192. data/test/ets_tsr.rb +0 -11
  193. data/test/tc_deprecated_require.rb +0 -13
  194. data/test/tc_document_write.rb +0 -196
  195. data/test/tc_error.rb +0 -180
  196. data/test/tc_html_parser.rb +0 -153
  197. data/test/tc_html_parser_context.rb +0 -24
  198. data/test/tc_namespace.rb +0 -62
  199. data/test/tc_node_xlink.rb +0 -29
  200. data/test/tc_parser.rb +0 -381
  201. data/test/tc_reader.rb +0 -400
  202. data/test/tc_relaxng.rb +0 -54
  203. data/test/tc_schema.rb +0 -162
  204. data/test/tc_xml.rb +0 -226
  205. data/test/tc_xpath_expression.rb +0 -38
@@ -0,0 +1,60 @@
1
+ # encoding: UTF-8
2
+
3
+ require_relative './test_helper'
4
+
5
+
6
+ class TestNS < Minitest::Test
7
+ def setup
8
+ file = File.join(File.dirname(__FILE__), 'model/soap.xml')
9
+ @doc = LibXML::XML::Document.file(file)
10
+ end
11
+
12
+ def teardown
13
+ @doc = nil
14
+ end
15
+
16
+ def test_create_ns
17
+ node = LibXML::XML::Node.new('foo')
18
+ ns = LibXML::XML::Namespace.new(node, 'my_namepace', 'http://www.mynamespace.com')
19
+ assert_equal(ns.prefix, 'my_namepace')
20
+ assert_equal(ns.href, 'http://www.mynamespace.com')
21
+ end
22
+
23
+ def test_create_default_ns
24
+ node = LibXML::XML::Node.new('foo')
25
+ ns = LibXML::XML::Namespace.new(node, nil, 'http://www.mynamespace.com')
26
+ assert_nil(ns.prefix)
27
+ assert_equal(ns.href, 'http://www.mynamespace.com')
28
+ end
29
+
30
+ def test_create_unbound_ns
31
+ error = assert_raises(TypeError) do
32
+ LibXML::XML::Namespace.new(nil, 'my_namepace', 'http://www.mynamespace.com')
33
+ end
34
+ assert_equal('wrong argument type nil (expected Data)', error.to_s)
35
+ end
36
+
37
+ def test_duplicate_ns
38
+ node = LibXML::XML::Node.new('foo')
39
+ LibXML::XML::Namespace.new(node, 'myname', 'http://www.mynamespace.com')
40
+ assert_raises(LibXML::XML::Error) do
41
+ LibXML::XML::Namespace.new(node, 'myname', 'http://www.mynamespace.com')
42
+ end
43
+ end
44
+
45
+ def test_eql
46
+ node = LibXML::XML::Node.new('Envelope')
47
+
48
+ assert(node.namespaces.namespace.eql?(node.namespaces.namespace))
49
+ end
50
+
51
+ def test_equal
52
+ node1 = LibXML::XML::Node.new('Envelope')
53
+ ns1 = LibXML::XML::Namespace.new(node1, 'soap', 'http://schemas.xmlsoap.org/soap/envelope/')
54
+
55
+ node2 = LibXML::XML::Node.new('Envelope')
56
+ ns2 = LibXML::XML::Namespace.new(node2, 'soap', 'http://schemas.xmlsoap.org/soap/envelope/')
57
+
58
+ assert(ns1 == ns2)
59
+ end
60
+ end
@@ -1,13 +1,12 @@
1
1
  # encoding: UTF-8
2
2
 
3
- require './test_helper'
3
+ require_relative './test_helper'
4
4
 
5
- require 'test/unit'
6
5
 
7
- class TestNamespaces < Test::Unit::TestCase
6
+ class TestNamespaces < Minitest::Test
8
7
  def setup
9
8
  file = File.join(File.dirname(__FILE__), 'model/soap.xml')
10
- @doc = XML::Document.file(file)
9
+ @doc = LibXML::XML::Document.file(file)
11
10
  end
12
11
 
13
12
  def teardown
@@ -29,62 +28,62 @@ class TestNamespaces < Test::Unit::TestCase
29
28
  end
30
29
 
31
30
  def test_set_namespace_node
32
- node = XML::Node.new('Envelope')
31
+ node = LibXML::XML::Node.new('Envelope')
33
32
  assert_equal('<Envelope/>', node.to_s)
34
33
 
35
- ns = XML::Namespace.new(node, 'soap', 'http://schemas.xmlsoap.org/soap/envelope/')
34
+ ns = LibXML::XML::Namespace.new(node, 'soap', 'http://schemas.xmlsoap.org/soap/envelope/')
36
35
  assert_equal("<Envelope xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\"/>", node.to_s)
37
36
  assert_nil(node.namespaces.namespace)
38
37
 
39
38
  # Now put the node in the soap namespace
40
39
  node.namespaces.namespace = ns
41
- assert_not_nil(node.namespaces.namespace)
40
+ refute_nil(node.namespaces.namespace)
42
41
  assert_equal("<soap:Envelope xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\"/>", node.to_s)
43
42
  end
44
43
 
45
44
  def test_set_namespace_attribute
46
45
  # Create node
47
- node = XML::Node.new('Envelope')
46
+ node = LibXML::XML::Node.new('Envelope')
48
47
  assert_equal('<Envelope/>', node.to_s)
49
48
 
50
49
  # Create attribute
51
- attr = XML::Attr.new(node, "encodingStyle", "http://www.w3.org/2001/12/soap-encoding")
50
+ attr = LibXML::XML::Attr.new(node, "encodingStyle", "http://www.w3.org/2001/12/soap-encoding")
52
51
  assert_equal('<Envelope encodingStyle="http://www.w3.org/2001/12/soap-encoding"/>',
53
52
  node.to_s)
54
53
 
55
54
  # Create namespace attribute
56
- ns = XML::Namespace.new(node, 'soap', 'http://schemas.xmlsoap.org/soap/envelope/')
55
+ ns = LibXML::XML::Namespace.new(node, 'soap', 'http://schemas.xmlsoap.org/soap/envelope/')
57
56
  assert_equal('<Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" encodingStyle="http://www.w3.org/2001/12/soap-encoding"/>',
58
57
  node.to_s)
59
58
  assert_nil(node.namespaces.namespace)
60
59
 
61
60
  # Now put the node in the soap namespace
62
61
  node.namespaces.namespace = ns
63
- assert_not_nil(node.namespaces.namespace)
62
+ refute_nil(node.namespaces.namespace)
64
63
  assert_equal('<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" encodingStyle="http://www.w3.org/2001/12/soap-encoding"/>',
65
64
  node.to_s)
66
65
 
67
66
  # Now put the attribute in the soap namespace
68
67
  attr.namespaces.namespace = ns
69
- assert_not_nil(node.namespaces.namespace)
68
+ refute_nil(node.namespaces.namespace)
70
69
  assert_equal('<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" soap:encodingStyle="http://www.w3.org/2001/12/soap-encoding"/>',
71
70
  node.to_s)
72
71
  end
73
72
 
74
73
  def test_define_namespace
75
- node = XML::Node.new('Envelope')
74
+ node = LibXML::XML::Node.new('Envelope')
76
75
  assert_equal('<Envelope/>', node.to_s)
77
76
 
78
- XML::Namespace.new(node, 'soap', 'http://schemas.xmlsoap.org/soap/envelope/')
77
+ LibXML::XML::Namespace.new(node, 'soap', 'http://schemas.xmlsoap.org/soap/envelope/')
79
78
  assert_equal("<Envelope xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\"/>", node.to_s)
80
79
  assert_nil(node.namespaces.namespace)
81
80
  end
82
81
 
83
82
  def test_define_default_namespace
84
- node = XML::Node.new('Envelope')
83
+ node = LibXML::XML::Node.new('Envelope')
85
84
  assert_equal('<Envelope/>', node.to_s)
86
85
 
87
- XML::Namespace.new(node, nil, 'http://schemas.xmlsoap.org/soap/envelope/')
86
+ LibXML::XML::Namespace.new(node, nil, 'http://schemas.xmlsoap.org/soap/envelope/')
88
87
  assert_equal("<Envelope xmlns=\"http://schemas.xmlsoap.org/soap/envelope/\"/>", node.to_s)
89
88
  # This seems wrong, but appears to be the way libxml works
90
89
  assert_nil(node.namespaces.namespace)
@@ -98,56 +97,47 @@ class TestNamespaces < Test::Unit::TestCase
98
97
  assert_equal(5, namespaces.length)
99
98
 
100
99
  namespace = namespaces[0]
101
- assert_instance_of(XML::Namespace, namespace)
102
- assert_equal(nil, namespace.prefix)
100
+ assert_instance_of(LibXML::XML::Namespace, namespace)
101
+ assert_nil(namespace.prefix)
103
102
  assert_equal('http://services.somewhere.com', namespace.href)
104
103
 
105
104
  namespace = namespaces[1]
106
- assert_instance_of(XML::Namespace, namespace)
105
+ assert_instance_of(LibXML::XML::Namespace, namespace)
107
106
  assert_equal('ns1', namespace.prefix)
108
107
  assert_equal('http://domain.somewhere.com', namespace.href)
109
108
 
110
109
  namespace = namespaces[2]
111
- assert_instance_of(XML::Namespace, namespace)
110
+ assert_instance_of(LibXML::XML::Namespace, namespace)
112
111
  assert_equal('soap', namespace.prefix)
113
112
  assert_equal('http://schemas.xmlsoap.org/soap/envelope/', namespace.href)
114
113
 
115
114
  namespace = namespaces[3]
116
- assert_instance_of(XML::Namespace, namespace)
115
+ assert_instance_of(LibXML::XML::Namespace, namespace)
117
116
  assert_equal('xsd', namespace.prefix)
118
117
  assert_equal('http://www.w3.org/2001/XMLSchema', namespace.href)
119
118
 
120
119
  namespace = namespaces[4]
121
- assert_instance_of(XML::Namespace, namespace)
120
+ assert_instance_of(LibXML::XML::Namespace, namespace)
122
121
  assert_equal('xsi', namespace.prefix)
123
122
  assert_equal('http://www.w3.org/2001/XMLSchema-instance', namespace.href)
124
123
  end
125
124
 
126
- def test_namespaces
127
- node = @doc.find_first('//ns1:IdAndName',
128
- :ns1 => 'http://domain.somewhere.com')
129
-
130
- node.namespaces.each do |namespace|
131
- assert_instance_of(XML::Namespace, namespace)
132
- end
133
- end
134
-
135
125
  def test_namespace_definitions
136
126
  ns_defs = @doc.root.namespaces.definitions
137
127
  assert_equal(3, ns_defs.size)
138
128
 
139
129
  namespace = ns_defs[0]
140
- assert_instance_of(XML::Namespace, namespace)
130
+ assert_instance_of(LibXML::XML::Namespace, namespace)
141
131
  assert_equal('soap', namespace.prefix)
142
132
  assert_equal('http://schemas.xmlsoap.org/soap/envelope/', namespace.href)
143
133
 
144
134
  namespace = ns_defs[1]
145
- assert_instance_of(XML::Namespace, namespace)
135
+ assert_instance_of(LibXML::XML::Namespace, namespace)
146
136
  assert_equal('xsd', namespace.prefix)
147
137
  assert_equal('http://www.w3.org/2001/XMLSchema', namespace.href)
148
138
 
149
139
  namespace = ns_defs[2]
150
- assert_instance_of(XML::Namespace, namespace)
140
+ assert_instance_of(LibXML::XML::Namespace, namespace)
151
141
  assert_equal('xsi', namespace.prefix)
152
142
  assert_equal('http://www.w3.org/2001/XMLSchema-instance', namespace.href)
153
143
 
@@ -157,15 +147,15 @@ class TestNamespaces < Test::Unit::TestCase
157
147
  assert_equal(1, ns_defs.size)
158
148
 
159
149
  namespace = ns_defs[0]
160
- assert_instance_of(XML::Namespace, namespace)
161
- assert_equal(nil, namespace.prefix)
150
+ assert_instance_of(LibXML::XML::Namespace, namespace)
151
+ assert_nil(namespace.prefix)
162
152
  assert_equal('http://services.somewhere.com', namespace.href)
163
153
  end
164
154
 
165
155
  def test_find_by_prefix
166
156
  namespace = @doc.root.namespaces.find_by_prefix('soap')
167
157
 
168
- assert_instance_of(XML::Namespace, namespace)
158
+ assert_instance_of(LibXML::XML::Namespace, namespace)
169
159
  assert_equal('soap', namespace.prefix)
170
160
  assert_equal('http://schemas.xmlsoap.org/soap/envelope/', namespace.href)
171
161
  end
@@ -178,8 +168,8 @@ class TestNamespaces < Test::Unit::TestCase
178
168
  :ns1 => 'http://services.somewhere.com')
179
169
  namespace = node.namespaces.find_by_prefix(nil)
180
170
 
181
- assert_instance_of(XML::Namespace, namespace)
182
- assert_equal(nil, namespace.prefix)
171
+ assert_instance_of(LibXML::XML::Namespace, namespace)
172
+ assert_nil(namespace.prefix)
183
173
  assert_equal('http://services.somewhere.com', namespace.href)
184
174
  end
185
175
 
@@ -189,22 +179,22 @@ class TestNamespaces < Test::Unit::TestCase
189
179
 
190
180
  namespace = node.namespaces.find_by_href('http://schemas.xmlsoap.org/soap/envelope/')
191
181
 
192
- assert_instance_of(XML::Namespace, namespace)
182
+ assert_instance_of(LibXML::XML::Namespace, namespace)
193
183
  assert_equal('soap', namespace.prefix)
194
184
  assert_equal('http://schemas.xmlsoap.org/soap/envelope/', namespace.href)
195
185
  end
196
186
 
197
187
  def test_default_namespace
198
- doc = XML::Document.string('<Envelope xmlns="http://schemas.xmlsoap.org/soap/envelope/"/>')
188
+ doc = LibXML::XML::Document.string('<Envelope xmlns="http://schemas.xmlsoap.org/soap/envelope/"/>')
199
189
  ns = doc.root.namespaces.default
200
190
  assert_equal(ns.href, 'http://schemas.xmlsoap.org/soap/envelope/')
201
191
  end
202
192
 
203
193
  def test_default_prefix
204
- doc = XML::Document.string('<Envelope xmlns="http://schemas.xmlsoap.org/soap/envelope/"/>')
194
+ doc = LibXML::XML::Document.string('<Envelope xmlns="http://schemas.xmlsoap.org/soap/envelope/"/>')
205
195
  doc.root.namespaces.default_prefix = 'soap'
206
196
 
207
197
  node = doc.root.find_first('/soap:Envelope')
208
- assert_not_nil(node)
198
+ refute_nil(node)
209
199
  end
210
- end
200
+ end
@@ -1,20 +1,19 @@
1
1
  # encoding: UTF-8
2
2
 
3
- require './test_helper'
4
- require 'test/unit'
3
+ require_relative './test_helper'
5
4
 
6
- class TestNode < Test::Unit::TestCase
5
+ class TestNode < Minitest::Test
7
6
  def setup
8
7
  @file_name = "model/bands.utf-8.xml"
9
8
 
10
9
  # Strip spaces to make testing easier
11
- XML.default_keep_blanks = false
10
+ LibXML::XML.default_keep_blanks = false
12
11
  file = File.join(File.dirname(__FILE__), @file_name)
13
- @doc = XML::Document.file(file)
12
+ @doc = LibXML::XML::Document.file(file)
14
13
  end
15
14
 
16
15
  def teardown
17
- XML.default_keep_blanks = true
16
+ LibXML::XML.default_keep_blanks = true
18
17
  @doc = nil
19
18
  end
20
19
 
@@ -24,55 +23,51 @@ class TestNode < Test::Unit::TestCase
24
23
  end
25
24
 
26
25
  def test_doc_class
27
- assert_instance_of(XML::Document, @doc)
26
+ assert_instance_of(LibXML::XML::Document, @doc)
28
27
  end
29
28
 
30
29
  def test_doc_node_type
31
- assert_equal XML::Node::DOCUMENT_NODE, @doc.node_type
30
+ assert_equal LibXML::XML::Node::DOCUMENT_NODE, @doc.node_type
32
31
  end
33
32
 
34
33
  def test_root_class
35
- assert_instance_of(XML::Node, @doc.root)
34
+ assert_instance_of(LibXML::XML::Node, @doc.root)
36
35
  end
37
36
 
38
37
  def test_root_node_type
39
- assert_equal XML::Node::ELEMENT_NODE, @doc.root.node_type
38
+ assert_equal LibXML::XML::Node::ELEMENT_NODE, @doc.root.node_type
40
39
  end
41
40
 
42
41
  def test_node_class
43
42
  for n in nodes
44
- assert_instance_of(XML::Node, n)
43
+ assert_instance_of(LibXML::XML::Node, n)
45
44
  end
46
45
  end
47
46
 
48
47
  def test_context
49
48
  node = @doc.root
50
49
  context = node.context
51
- assert_instance_of(XML::XPath::Context, context)
50
+ assert_instance_of(LibXML::XML::XPath::Context, context)
52
51
  end
53
52
 
54
53
  def test_find
55
- assert_instance_of(XML::XPath::Object, self.nodes)
54
+ assert_instance_of(LibXML::XML::XPath::Object, self.nodes)
56
55
  end
57
56
 
58
57
  def test_node_child_get
59
58
  assert_instance_of(TrueClass, @doc.root.child?)
60
- assert_instance_of(XML::Node, @doc.root.child)
59
+ assert_instance_of(LibXML::XML::Node, @doc.root.child)
61
60
 
62
- if defined?(Encoding)
63
- assert_equal(Encoding::UTF_8, @doc.root.child.name.encoding)
64
- assert_equal("m\u00F6tley_cr\u00FCe", @doc.root.child.name)
65
- else
66
- assert_equal("m\303\266tley_cr\303\274e", @doc.root.child.name)
67
- end
61
+ assert_equal(Encoding::UTF_8, @doc.root.child.name.encoding)
62
+ assert_equal("m\u00F6tley_cr\u00FCe", @doc.root.child.name)
68
63
  end
69
64
 
70
65
  def test_node_doc
71
66
  for n in nodes
72
- assert_instance_of(XML::Document, n.doc) if n.document?
67
+ assert_instance_of(LibXML::XML::Document, n.doc) if n.document?
73
68
  end
74
69
  end
75
-
70
+
76
71
  def test_name
77
72
  node = @doc.root.children.last
78
73
  assert_equal("iron_maiden", node.name)
@@ -81,7 +76,7 @@ class TestNode < Test::Unit::TestCase
81
76
  def test_node_find
82
77
  nodes = @doc.root.find('./fixnum')
83
78
  for node in nodes
84
- assert_instance_of(XML::Node, node)
79
+ assert_instance_of(LibXML::XML::Node, node)
85
80
  end
86
81
  end
87
82
 
@@ -89,19 +84,35 @@ class TestNode < Test::Unit::TestCase
89
84
  node_a = @doc.find_first('*[@country]')
90
85
  node_b = @doc.root.child
91
86
 
87
+ # On the ruby side these are different objects
88
+ refute(node_a.equal?(node_b))
89
+
90
+ # But they are the same underlying libxml node so specify they are equal
92
91
  assert(node_a == node_b)
93
92
  assert(node_a.eql?(node_b))
94
- assert(node_a.equal?(node_b))
95
93
 
96
94
  file = File.join(File.dirname(__FILE__), @file_name)
97
- doc2 = XML::Document.file(file)
95
+ doc2 = LibXML::XML::Document.file(file)
98
96
 
99
97
  node_a2 = doc2.find_first('*[@country]')
100
98
 
99
+ refute(node_a == node_a2)
100
+ refute(node_a.eql?(node_a2))
101
101
  assert_equal(node_a.to_s, node_a2.to_s)
102
- assert_equal(node_a, node_a2)
103
- assert(node_a.eql?(node_a2))
104
- assert(!node_a.equal?(node_a2))
102
+ refute(node_a.equal?(node_a2))
103
+ end
104
+
105
+ def test_equality_2
106
+ parent = LibXML::XML::Node.new('parent')
107
+ child = LibXML::XML::Node.new('child')
108
+ parent << child
109
+
110
+ node_a = child.parent
111
+ node_b = child.parent
112
+ # In this case the nodes are equal - the parent being the root
113
+ assert(node_a.equal?(node_b))
114
+ assert(node_a == node_b)
115
+ assert(node_a.eql?(node_b))
105
116
  end
106
117
 
107
118
  def test_equality_nil
@@ -112,7 +123,7 @@ class TestNode < Test::Unit::TestCase
112
123
  def test_equality_wrong_type
113
124
  node = @doc.root
114
125
 
115
- assert_raise(TypeError) do
126
+ assert_raises(TypeError) do
116
127
  assert(node != 'abc')
117
128
  end
118
129
  end
@@ -124,20 +135,20 @@ class TestNode < Test::Unit::TestCase
124
135
  end
125
136
 
126
137
  def test_base
127
- doc = XML::Parser.string('<person />').parse
138
+ doc = LibXML::XML::Parser.string('<person />').parse
128
139
  assert_nil(doc.root.base_uri)
129
140
  end
130
141
 
131
- # We use the same facility that libXSLT does here to disable output escaping.
132
- # This lets you specify that the node's content should be rendered unaltered
133
- # whenever it is being output. This is useful for things like <script> and
134
- # <style> nodes in HTML documents if you don't want to be forced to wrap them
135
- # in CDATA nodes. Or if you are sanitizing existing HTML documents and want
136
- # to preserve the content of any of the text nodes.
137
- #
138
- def test_output_escaping
142
+ # We use the same facility that libXSLT does here to disable output escaping.
143
+ # This lets you specify that the node's content should be rendered unaltered
144
+ # whenever it is being output. This is useful for things like <script> and
145
+ # <style> nodes in HTML documents if you don't want to be forced to wrap them
146
+ # in CDATA nodes. Or if you are sanitizing existing HTML documents and want
147
+ # to preserve the content of any of the text nodes.
148
+ #
149
+ def test_output_escaping
139
150
  text = '<bad-script>if (a &lt; b || b &gt; c) { return "text"; }<stop/>return "&gt;&gt;&gt;snip&lt;&lt;&lt;";</bad-script>'
140
- node = XML::Parser.string(text).parse.root
151
+ node = LibXML::XML::Parser.string(text).parse.root
141
152
  assert_equal text, node.to_s
142
153
 
143
154
  text_noenc = '<bad-script>if (a < b || b > c) { return "text"; }<stop/>return ">>>snip<<<";</bad-script>'
@@ -154,10 +165,10 @@ class TestNode < Test::Unit::TestCase
154
165
  assert_equal text, node.to_s
155
166
  end
156
167
 
157
- # Just a sanity check for output escaping.
158
- def test_output_escaping_sanity
168
+ # Just a sanity check for output escaping.
169
+ def test_output_escaping_sanity
159
170
  text = '<bad-script>if (a &lt; b || b &gt; c) { return "text"; }<stop/>return "&gt;&gt;&gt;snip&lt;&lt;&lt;";</bad-script>'
160
- node = XML::Parser.string(text).parse.root
171
+ node = LibXML::XML::Parser.string(text).parse.root
161
172
  affected = node.find('//text()')
162
173
 
163
174
  check_escaping = lambda do |flag|
@@ -190,25 +201,35 @@ class TestNode < Test::Unit::TestCase
190
201
  node = @doc.root
191
202
 
192
203
  node.space_preserve = false
193
- assert_equal XML::Node::SPACE_DEFAULT, node.space_preserve
204
+ assert_equal LibXML::XML::Node::SPACE_DEFAULT, node.space_preserve
194
205
 
195
206
  node.space_preserve = true
196
- assert_equal XML::Node::SPACE_PRESERVE, node.space_preserve
207
+ assert_equal LibXML::XML::Node::SPACE_PRESERVE, node.space_preserve
197
208
  end
198
209
 
199
210
  def test_empty
200
211
  text = '<name> </name>'
201
- doc = XML::Parser.string(text).parse
212
+ doc = LibXML::XML::Parser.string(text).parse
202
213
 
203
214
  node = doc.root
204
215
  assert(!node.empty?)
205
-
216
+
206
217
  text_node = node.first
207
218
  assert(text_node.empty?)
208
219
  end
209
220
 
221
+ def test_save_no_empty_tags
222
+ node = LibXML::XML::Node.new('test')
223
+ assert_equal '<test/>', node.to_s
224
+
225
+ LibXML::XML.default_save_no_empty_tags = true
226
+ assert_equal '<test></test>', node.to_s
227
+
228
+ LibXML::XML.default_save_no_empty_tags = false
229
+ end
230
+
210
231
  def test_set_content
211
- node = XML::Node.new('test')
232
+ node = LibXML::XML::Node.new('test')
212
233
  node.content = "unescaped & string"
213
234
  assert_equal("unescaped & string", node.content)
214
235
  assert_equal("<test>unescaped &amp; string</test>", node.to_s)
@@ -1,50 +1,49 @@
1
1
  # encoding: UTF-8
2
2
 
3
- require './test_helper'
4
- require 'test/unit'
3
+ require_relative './test_helper'
5
4
 
6
- class CDataCommentTest < Test::Unit::TestCase
5
+ class CDataCommentTest < Minitest::Test
7
6
  def setup
8
- xp = XML::Parser.string('<root></root>')
7
+ xp = LibXML::XML::Parser.string('<root></root>')
9
8
  @doc = xp.parse
10
- assert_instance_of(XML::Document, @doc)
9
+ assert_instance_of(LibXML::XML::Document, @doc)
11
10
  @root = @doc.root
12
11
  end
13
12
 
14
13
  def test_node_type
15
- cnode = XML::Node.new_cdata('test cdata')
16
- assert_equal(XML::Node::CDATA_SECTION_NODE, cnode.node_type)
14
+ cnode = LibXML::XML::Node.new_cdata('test cdata')
15
+ assert_equal(LibXML::XML::Node::CDATA_SECTION_NODE, cnode.node_type)
17
16
  end
18
17
 
19
18
  def test_add_cdata
20
- @root << XML::Node.new_cdata('mycdata')
19
+ @root << LibXML::XML::Node.new_cdata('mycdata')
21
20
  assert_equal '<root><![CDATA[mycdata]]></root>',
22
21
  @root.to_s.gsub(/\n\s*/,'')
23
22
  end
24
23
 
25
24
  def test_add_cdata_2
26
- @root << XML::Node.new_cdata('mycdata')
25
+ @root << LibXML::XML::Node.new_cdata('mycdata')
27
26
  assert_equal 'cdata',
28
27
  @root.child.node_type_name
29
28
  end
30
29
 
31
30
  def test_add_cdata_3
32
- @root << el = XML::Node.new_cdata('mycdata')
31
+ @root << el = LibXML::XML::Node.new_cdata('mycdata')
33
32
  el << "_this_is_added"
34
33
  assert_equal '<root><![CDATA[mycdata_this_is_added]]></root>',
35
34
  @root.to_s.gsub(/\n\s*/,'')
36
35
  end
37
36
 
38
37
  def test_attributes
39
- cnode = XML::Node.new_cdata('test cdata')
38
+ cnode = LibXML::XML::Node.new_cdata('test cdata')
40
39
  assert_equal(0, cnode.attributes.length)
41
40
  end
42
41
 
43
42
  def test_set_cdata_attribute
44
- cnode = XML::Node.new_cdata('test cdata')
43
+ cnode = LibXML::XML::Node.new_cdata('test cdata')
45
44
 
46
45
  # Can't create attributes on non-element nodes
47
- assert_raise(ArgumentError) do
46
+ assert_raises(ArgumentError) do
48
47
  cnode['attr'] = '123'
49
48
  end
50
49
  end
@@ -1,31 +1,30 @@
1
1
  # encoding: UTF-8
2
2
 
3
- require './test_helper'
3
+ require_relative './test_helper'
4
4
 
5
- require 'test/unit'
6
5
 
7
- class NodeCommentTest < Test::Unit::TestCase
6
+ class NodeCommentTest < Minitest::Test
8
7
  def setup
9
- xp = XML::Parser.string('<root></root>')
8
+ xp = LibXML::XML::Parser.string('<root></root>')
10
9
  @doc = xp.parse
11
- assert_instance_of(XML::Document, @doc)
10
+ assert_instance_of(LibXML::XML::Document, @doc)
12
11
  @root = @doc.root
13
12
  end
14
13
 
15
14
  def test_libxml_node_add_comment_01
16
- @root << XML::Node.new_comment('mycomment')
15
+ @root << LibXML::XML::Node.new_comment('mycomment')
17
16
  assert_equal '<root><!--mycomment--></root>',
18
17
  @root.to_s.gsub(/\n\s*/,'')
19
18
  end
20
19
 
21
20
  def test_libxml_node_add_comment_02
22
- @root << XML::Node.new_comment('mycomment')
21
+ @root << LibXML::XML::Node.new_comment('mycomment')
23
22
  assert_equal 'comment',
24
23
  @root.child.node_type_name
25
24
  end
26
25
 
27
26
  def test_libxml_node_add_comment_03
28
- @root << el = XML::Node.new_comment('mycomment')
27
+ @root << el = LibXML::XML::Node.new_comment('mycomment')
29
28
  el << "_this_is_added"
30
29
  assert_equal '<root><!--mycomment_this_is_added--></root>',
31
30
  @root.to_s.gsub(/\n\s*/,'')
@@ -1,13 +1,12 @@
1
1
  # encoding: UTF-8
2
2
 
3
- require './test_helper'
4
- require 'test/unit'
3
+ require_relative './test_helper'
5
4
 
6
5
  # see mailing list archive
7
6
  # [libxml-devel] Segmentation fault when add the cloned/copied node
8
7
  # 2007/11/27 20:51
9
8
 
10
- class TestNodeCopy < Test::Unit::TestCase
9
+ class TestNodeCopy < Minitest::Test
11
10
  def setup
12
11
  str = <<-STR
13
12
  <html><body>
@@ -16,7 +15,7 @@ class TestNodeCopy < Test::Unit::TestCase
16
15
  </body></html>
17
16
  STR
18
17
 
19
- doc = XML::Parser.string(str).parse
18
+ doc = LibXML::XML::Parser.string(str).parse
20
19
 
21
20
  xpath = "//div"
22
21
  @div1 = doc.find(xpath).to_a[0]
@@ -38,5 +37,4 @@ class TestNodeCopy < Test::Unit::TestCase
38
37
  end
39
38
  assert @div1.to_s =~ /foo/
40
39
  end
41
-
42
- end # TC_XML_Node_Copy
40
+ end