libxml-ruby 3.0.0 → 3.2.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (82) hide show
  1. checksums.yaml +5 -5
  2. data/HISTORY +37 -0
  3. data/MANIFEST +34 -34
  4. data/README.rdoc +65 -36
  5. data/Rakefile +21 -3
  6. data/ext/libxml/extconf.rb +30 -26
  7. data/ext/libxml/ruby_libxml.h +0 -8
  8. data/ext/libxml/ruby_xml.c +40 -0
  9. data/ext/libxml/ruby_xml_document.c +1 -5
  10. data/ext/libxml/ruby_xml_dtd.c +6 -8
  11. data/ext/libxml/ruby_xml_encoding.c +1 -13
  12. data/ext/libxml/ruby_xml_encoding.h +0 -3
  13. data/ext/libxml/ruby_xml_error.c +1 -1
  14. data/ext/libxml/ruby_xml_error.h +1 -1
  15. data/ext/libxml/ruby_xml_io.c +14 -18
  16. data/ext/libxml/ruby_xml_io.h +1 -1
  17. data/ext/libxml/ruby_xml_node.c +16 -17
  18. data/ext/libxml/ruby_xml_parser_context.c +1 -1
  19. data/ext/libxml/ruby_xml_reader.c +7 -2
  20. data/ext/libxml/ruby_xml_schema.c +44 -66
  21. data/ext/libxml/ruby_xml_schema_element.c +15 -14
  22. data/ext/libxml/ruby_xml_schema_type.c +66 -93
  23. data/ext/libxml/ruby_xml_version.h +4 -4
  24. data/ext/libxml/ruby_xml_writer.c +189 -192
  25. data/lib/libxml/schema/element.rb +0 -8
  26. data/lib/libxml/schema/type.rb +0 -8
  27. data/lib/libxml/schema.rb +0 -19
  28. data/lib/libxml-ruby.rb +30 -0
  29. data/lib/libxml.rb +3 -28
  30. data/libxml-ruby.gemspec +5 -4
  31. data/setup.rb +0 -1
  32. data/test/model/cwm_1_0.xml +11336 -0
  33. data/test/{tc_attr.rb → test_attr.rb} +18 -18
  34. data/test/{tc_attr_decl.rb → test_attr_decl.rb} +8 -8
  35. data/test/{tc_attributes.rb → test_attributes.rb} +10 -10
  36. data/test/{tc_canonicalize.rb → test_canonicalize.rb} +35 -39
  37. data/test/test_deprecated_require.rb +12 -0
  38. data/test/{tc_document.rb → test_document.rb} +31 -24
  39. data/test/test_document_write.rb +146 -0
  40. data/test/{tc_dtd.rb → test_dtd.rb} +26 -25
  41. data/test/{tc_encoding.rb → test_encoding.rb} +20 -17
  42. data/test/{tc_encoding_sax.rb → test_encoding_sax.rb} +3 -3
  43. data/test/test_error.rb +178 -0
  44. data/test/test_helper.rb +4 -11
  45. data/test/{tc_html_parser.rb → test_html_parser.rb} +31 -30
  46. data/test/test_html_parser_context.rb +23 -0
  47. data/test/test_namespace.rb +60 -0
  48. data/test/{tc_namespaces.rb → test_namespaces.rb} +29 -38
  49. data/test/{tc_node.rb → test_node.rb} +37 -31
  50. data/test/{tc_node_cdata.rb → test_node_cdata.rb} +10 -10
  51. data/test/{tc_node_comment.rb → test_node_comment.rb} +6 -6
  52. data/test/{tc_node_copy.rb → test_node_copy.rb} +3 -4
  53. data/test/{tc_node_edit.rb → test_node_edit.rb} +20 -21
  54. data/test/{tc_node_pi.rb → test_node_pi.rb} +8 -10
  55. data/test/{tc_node_text.rb → test_node_text.rb} +8 -9
  56. data/test/{tc_node_write.rb → test_node_write.rb} +16 -26
  57. data/test/test_node_xlink.rb +28 -0
  58. data/test/{tc_parser.rb → test_parser.rb} +72 -75
  59. data/test/{tc_parser_context.rb → test_parser_context.rb} +38 -44
  60. data/test/{tc_properties.rb → test_properties.rb} +5 -5
  61. data/test/test_reader.rb +364 -0
  62. data/test/{tc_relaxng.rb → test_relaxng.rb} +11 -11
  63. data/test/{tc_sax_parser.rb → test_sax_parser.rb} +38 -31
  64. data/test/{tc_schema.rb → test_schema.rb} +40 -33
  65. data/test/test_suite.rb +39 -40
  66. data/test/{tc_traversal.rb → test_traversal.rb} +4 -4
  67. data/test/{tc_writer.rb → test_writer.rb} +95 -74
  68. data/test/{tc_xinclude.rb → test_xinclude.rb} +3 -3
  69. data/test/test_xml.rb +263 -0
  70. data/test/{tc_xpath.rb → test_xpath.rb} +25 -25
  71. data/test/{tc_xpath_context.rb → test_xpath_context.rb} +5 -5
  72. data/test/{tc_xpath_expression.rb → test_xpath_expression.rb} +7 -7
  73. data/test/{tc_xpointer.rb → test_xpointer.rb} +15 -15
  74. metadata +91 -102
  75. data/test/tc_deprecated_require.rb +0 -12
  76. data/test/tc_document_write.rb +0 -195
  77. data/test/tc_error.rb +0 -178
  78. data/test/tc_html_parser_context.rb +0 -23
  79. data/test/tc_namespace.rb +0 -61
  80. data/test/tc_node_xlink.rb +0 -28
  81. data/test/tc_reader.rb +0 -358
  82. data/test/tc_xml.rb +0 -225
@@ -1,6 +1,6 @@
1
1
  # encoding: UTF-8
2
2
 
3
- require './test_helper'
3
+ require_relative './test_helper'
4
4
  require 'stringio'
5
5
 
6
6
  class HTMLParserTest < Minitest::Test
@@ -10,15 +10,15 @@ class HTMLParserTest < Minitest::Test
10
10
 
11
11
  # ----- Sources ------
12
12
  def test_file
13
- xp = XML::HTMLParser.file(html_file)
14
- assert_instance_of(XML::HTMLParser, xp)
13
+ xp = LibXML::XML::HTMLParser.file(html_file)
14
+ assert_instance_of(LibXML::XML::HTMLParser, xp)
15
15
  doc = xp.parse
16
16
  refute_nil(doc)
17
17
  end
18
18
 
19
19
  def test_noexistent_file
20
- error = assert_raises(XML::Error) do
21
- XML::HTMLParser.file('i_dont_exist.xml')
20
+ error = assert_raises(LibXML::XML::Error) do
21
+ LibXML::XML::HTMLParser.file('i_dont_exist.xml')
22
22
  end
23
23
 
24
24
  assert_equal('Warning: failed to load external entity "i_dont_exist.xml".', error.to_s)
@@ -26,7 +26,7 @@ class HTMLParserTest < Minitest::Test
26
26
 
27
27
  def test_nil_file
28
28
  error = assert_raises(TypeError) do
29
- XML::HTMLParser.file(nil)
29
+ LibXML::XML::HTMLParser.file(nil)
30
30
  end
31
31
 
32
32
  assert_match(/nil into String/, error.to_s)
@@ -34,11 +34,11 @@ class HTMLParserTest < Minitest::Test
34
34
 
35
35
  def test_io
36
36
  File.open(html_file) do |io|
37
- xp = XML::HTMLParser.io(io)
38
- assert_instance_of(XML::HTMLParser, xp)
37
+ xp = LibXML::XML::HTMLParser.io(io)
38
+ assert_instance_of(LibXML::XML::HTMLParser, xp)
39
39
 
40
40
  doc = xp.parse
41
- assert_instance_of(XML::Document, doc)
41
+ assert_instance_of(LibXML::XML::Document, doc)
42
42
  end
43
43
  end
44
44
 
@@ -46,7 +46,7 @@ class HTMLParserTest < Minitest::Test
46
46
  # Test that the reader keeps a reference
47
47
  # to the io object
48
48
  file = File.open(html_file)
49
- parser = XML::HTMLParser.io(file)
49
+ parser = LibXML::XML::HTMLParser.io(file)
50
50
  file = nil
51
51
  GC.start
52
52
  assert(parser.parse)
@@ -54,7 +54,7 @@ class HTMLParserTest < Minitest::Test
54
54
 
55
55
  def test_nil_io
56
56
  error = assert_raises(TypeError) do
57
- XML::HTMLParser.io(nil)
57
+ LibXML::XML::HTMLParser.io(nil)
58
58
  end
59
59
 
60
60
  assert_equal("Must pass in an IO object", error.to_s)
@@ -63,27 +63,27 @@ class HTMLParserTest < Minitest::Test
63
63
  def test_string_io
64
64
  data = File.read(html_file)
65
65
  io = StringIO.new(data)
66
- xp = XML::HTMLParser.io(io)
67
- assert_instance_of(XML::HTMLParser, xp)
66
+ xp = LibXML::XML::HTMLParser.io(io)
67
+ assert_instance_of(LibXML::XML::HTMLParser, xp)
68
68
 
69
69
  doc = xp.parse
70
- assert_instance_of(XML::Document, doc)
70
+ assert_instance_of(LibXML::XML::Document, doc)
71
71
  end
72
72
 
73
73
  def test_string
74
74
  str = '<html><body><p>hi</p></body></html>'
75
- xp = XML::HTMLParser.string(str)
75
+ xp = LibXML::XML::HTMLParser.string(str)
76
76
 
77
- assert_instance_of(XML::HTMLParser, xp)
78
- assert_instance_of(XML::HTMLParser, xp)
77
+ assert_instance_of(LibXML::XML::HTMLParser, xp)
78
+ assert_instance_of(LibXML::XML::HTMLParser, xp)
79
79
 
80
80
  doc = xp.parse
81
- assert_instance_of(XML::Document, doc)
81
+ assert_instance_of(LibXML::XML::Document, doc)
82
82
  end
83
83
 
84
84
  def test_nil_string
85
85
  error = assert_raises(TypeError) do
86
- XML::HTMLParser.string(nil)
86
+ LibXML::XML::HTMLParser.string(nil)
87
87
  end
88
88
 
89
89
  assert_equal("wrong argument type nil (expected String)", error.to_s)
@@ -98,26 +98,26 @@ class HTMLParserTest < Minitest::Test
98
98
  <body>Hello<br>World</html>
99
99
  EOS
100
100
 
101
- parser = XML::HTMLParser.string(html, :options => XML::HTMLParser::Options::NOBLANKS)
101
+ parser = LibXML::XML::HTMLParser.string(html, :options => LibXML::XML::HTMLParser::Options::NOBLANKS)
102
102
  doc = parser.parse
103
- assert_instance_of XML::Document, doc
103
+ assert_instance_of LibXML::XML::Document, doc
104
104
 
105
105
  root = doc.root
106
- assert_instance_of XML::Node, root
106
+ assert_instance_of LibXML::XML::Node, root
107
107
  assert_equal 'html', root.name
108
108
 
109
109
  head = root.child
110
- assert_instance_of XML::Node, head
110
+ assert_instance_of LibXML::XML::Node, head
111
111
  assert_equal 'head', head.name
112
112
 
113
113
  meta = head.child
114
- assert_instance_of XML::Node, meta
114
+ assert_instance_of LibXML::XML::Node, meta
115
115
  assert_equal 'meta', meta.name
116
116
  assert_equal 'keywords', meta[:name]
117
117
  assert_equal 'nasty', meta[:content]
118
118
 
119
119
  body = head.next
120
- assert_instance_of XML::Node, body
120
+ assert_instance_of LibXML::XML::Node, body
121
121
  assert_equal 'body', body.name
122
122
 
123
123
  hello = body.child
@@ -125,21 +125,21 @@ class HTMLParserTest < Minitest::Test
125
125
  # cant figure our why or how, so this skips it if there
126
126
  hello = hello.child if hello.name == "p"
127
127
 
128
- assert_instance_of XML::Node, hello
128
+ assert_instance_of LibXML::XML::Node, hello
129
129
  assert_equal 'Hello', hello.content
130
130
 
131
131
  br = hello.next
132
- assert_instance_of XML::Node, br
132
+ assert_instance_of LibXML::XML::Node, br
133
133
  assert_equal 'br', br.name
134
134
 
135
135
  world = br.next
136
- assert_instance_of XML::Node, world
136
+ assert_instance_of LibXML::XML::Node, world
137
137
  assert_equal 'World', world.content
138
138
  end
139
139
 
140
140
  def test_no_implied
141
141
  html = "hello world"
142
- parser = XML::HTMLParser.string(html, :options => XML::HTMLParser::Options::NOIMPLIED)
142
+ parser = LibXML::XML::HTMLParser.string(html, :options => LibXML::XML::HTMLParser::Options::NOIMPLIED)
143
143
  doc = parser.parse
144
144
  assert_equal("<p>#{html}</p>", doc.root.to_s)
145
145
  end
@@ -154,8 +154,9 @@ class HTMLParserTest < Minitest::Test
154
154
  end
155
155
 
156
156
  def test_open_many_files
157
+ file = File.expand_path(File.join(File.dirname(__FILE__), 'model/ruby-lang.html'))
157
158
  1000.times do
158
- doc = XML::HTMLParser.file('model/ruby-lang.html').parse
159
+ LibXML::XML::HTMLParser.file(file).parse
159
160
  end
160
161
  end
161
162
  end
@@ -0,0 +1,23 @@
1
+ # encoding: UTF-8
2
+
3
+ require_relative './test_helper'
4
+
5
+
6
+ class TestHtmlParserContext < Minitest::Test
7
+ def test_default_options
8
+ context = LibXML::XML::HTMLParser::Context.new
9
+ assert_equal(0, context.options)
10
+ end
11
+
12
+ def test_no_options
13
+ context = LibXML::XML::HTMLParser::Context.new
14
+ context.options = 0
15
+ assert_equal(0, context.options)
16
+ end
17
+
18
+ def test_options
19
+ context = LibXML::XML::HTMLParser::Context.new
20
+ context.options = LibXML::XML::HTMLParser::Options::NOERROR
21
+ assert_equal(LibXML::XML::HTMLParser::Options::NOERROR, context.options)
22
+ end
23
+ end
@@ -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,12 +1,12 @@
1
1
  # encoding: UTF-8
2
2
 
3
- require './test_helper'
3
+ require_relative './test_helper'
4
4
 
5
5
 
6
6
  class TestNamespaces < Minitest::Test
7
7
  def setup
8
8
  file = File.join(File.dirname(__FILE__), 'model/soap.xml')
9
- @doc = XML::Document.file(file)
9
+ @doc = LibXML::XML::Document.file(file)
10
10
  end
11
11
 
12
12
  def teardown
@@ -28,10 +28,10 @@ class TestNamespaces < Minitest::Test
28
28
  end
29
29
 
30
30
  def test_set_namespace_node
31
- node = XML::Node.new('Envelope')
31
+ node = LibXML::XML::Node.new('Envelope')
32
32
  assert_equal('<Envelope/>', node.to_s)
33
33
 
34
- 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/')
35
35
  assert_equal("<Envelope xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\"/>", node.to_s)
36
36
  assert_nil(node.namespaces.namespace)
37
37
 
@@ -43,16 +43,16 @@ class TestNamespaces < Minitest::Test
43
43
 
44
44
  def test_set_namespace_attribute
45
45
  # Create node
46
- node = XML::Node.new('Envelope')
46
+ node = LibXML::XML::Node.new('Envelope')
47
47
  assert_equal('<Envelope/>', node.to_s)
48
48
 
49
49
  # Create attribute
50
- 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")
51
51
  assert_equal('<Envelope encodingStyle="http://www.w3.org/2001/12/soap-encoding"/>',
52
52
  node.to_s)
53
53
 
54
54
  # Create namespace attribute
55
- 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/')
56
56
  assert_equal('<Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" encodingStyle="http://www.w3.org/2001/12/soap-encoding"/>',
57
57
  node.to_s)
58
58
  assert_nil(node.namespaces.namespace)
@@ -71,19 +71,19 @@ class TestNamespaces < Minitest::Test
71
71
  end
72
72
 
73
73
  def test_define_namespace
74
- node = XML::Node.new('Envelope')
74
+ node = LibXML::XML::Node.new('Envelope')
75
75
  assert_equal('<Envelope/>', node.to_s)
76
76
 
77
- XML::Namespace.new(node, 'soap', 'http://schemas.xmlsoap.org/soap/envelope/')
77
+ LibXML::XML::Namespace.new(node, 'soap', 'http://schemas.xmlsoap.org/soap/envelope/')
78
78
  assert_equal("<Envelope xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\"/>", node.to_s)
79
79
  assert_nil(node.namespaces.namespace)
80
80
  end
81
81
 
82
82
  def test_define_default_namespace
83
- node = XML::Node.new('Envelope')
83
+ node = LibXML::XML::Node.new('Envelope')
84
84
  assert_equal('<Envelope/>', node.to_s)
85
85
 
86
- XML::Namespace.new(node, nil, 'http://schemas.xmlsoap.org/soap/envelope/')
86
+ LibXML::XML::Namespace.new(node, nil, 'http://schemas.xmlsoap.org/soap/envelope/')
87
87
  assert_equal("<Envelope xmlns=\"http://schemas.xmlsoap.org/soap/envelope/\"/>", node.to_s)
88
88
  # This seems wrong, but appears to be the way libxml works
89
89
  assert_nil(node.namespaces.namespace)
@@ -97,56 +97,47 @@ class TestNamespaces < Minitest::Test
97
97
  assert_equal(5, namespaces.length)
98
98
 
99
99
  namespace = namespaces[0]
100
- assert_instance_of(XML::Namespace, namespace)
101
- assert_equal(nil, namespace.prefix)
100
+ assert_instance_of(LibXML::XML::Namespace, namespace)
101
+ assert_nil(namespace.prefix)
102
102
  assert_equal('http://services.somewhere.com', namespace.href)
103
103
 
104
104
  namespace = namespaces[1]
105
- assert_instance_of(XML::Namespace, namespace)
105
+ assert_instance_of(LibXML::XML::Namespace, namespace)
106
106
  assert_equal('ns1', namespace.prefix)
107
107
  assert_equal('http://domain.somewhere.com', namespace.href)
108
108
 
109
109
  namespace = namespaces[2]
110
- assert_instance_of(XML::Namespace, namespace)
110
+ assert_instance_of(LibXML::XML::Namespace, namespace)
111
111
  assert_equal('soap', namespace.prefix)
112
112
  assert_equal('http://schemas.xmlsoap.org/soap/envelope/', namespace.href)
113
113
 
114
114
  namespace = namespaces[3]
115
- assert_instance_of(XML::Namespace, namespace)
115
+ assert_instance_of(LibXML::XML::Namespace, namespace)
116
116
  assert_equal('xsd', namespace.prefix)
117
117
  assert_equal('http://www.w3.org/2001/XMLSchema', namespace.href)
118
118
 
119
119
  namespace = namespaces[4]
120
- assert_instance_of(XML::Namespace, namespace)
120
+ assert_instance_of(LibXML::XML::Namespace, namespace)
121
121
  assert_equal('xsi', namespace.prefix)
122
122
  assert_equal('http://www.w3.org/2001/XMLSchema-instance', namespace.href)
123
123
  end
124
124
 
125
- def test_namespaces
126
- node = @doc.find_first('//ns1:IdAndName',
127
- :ns1 => 'http://domain.somewhere.com')
128
-
129
- node.namespaces.each do |namespace|
130
- assert_instance_of(XML::Namespace, namespace)
131
- end
132
- end
133
-
134
125
  def test_namespace_definitions
135
126
  ns_defs = @doc.root.namespaces.definitions
136
127
  assert_equal(3, ns_defs.size)
137
128
 
138
129
  namespace = ns_defs[0]
139
- assert_instance_of(XML::Namespace, namespace)
130
+ assert_instance_of(LibXML::XML::Namespace, namespace)
140
131
  assert_equal('soap', namespace.prefix)
141
132
  assert_equal('http://schemas.xmlsoap.org/soap/envelope/', namespace.href)
142
133
 
143
134
  namespace = ns_defs[1]
144
- assert_instance_of(XML::Namespace, namespace)
135
+ assert_instance_of(LibXML::XML::Namespace, namespace)
145
136
  assert_equal('xsd', namespace.prefix)
146
137
  assert_equal('http://www.w3.org/2001/XMLSchema', namespace.href)
147
138
 
148
139
  namespace = ns_defs[2]
149
- assert_instance_of(XML::Namespace, namespace)
140
+ assert_instance_of(LibXML::XML::Namespace, namespace)
150
141
  assert_equal('xsi', namespace.prefix)
151
142
  assert_equal('http://www.w3.org/2001/XMLSchema-instance', namespace.href)
152
143
 
@@ -156,15 +147,15 @@ class TestNamespaces < Minitest::Test
156
147
  assert_equal(1, ns_defs.size)
157
148
 
158
149
  namespace = ns_defs[0]
159
- assert_instance_of(XML::Namespace, namespace)
160
- assert_equal(nil, namespace.prefix)
150
+ assert_instance_of(LibXML::XML::Namespace, namespace)
151
+ assert_nil(namespace.prefix)
161
152
  assert_equal('http://services.somewhere.com', namespace.href)
162
153
  end
163
154
 
164
155
  def test_find_by_prefix
165
156
  namespace = @doc.root.namespaces.find_by_prefix('soap')
166
157
 
167
- assert_instance_of(XML::Namespace, namespace)
158
+ assert_instance_of(LibXML::XML::Namespace, namespace)
168
159
  assert_equal('soap', namespace.prefix)
169
160
  assert_equal('http://schemas.xmlsoap.org/soap/envelope/', namespace.href)
170
161
  end
@@ -177,8 +168,8 @@ class TestNamespaces < Minitest::Test
177
168
  :ns1 => 'http://services.somewhere.com')
178
169
  namespace = node.namespaces.find_by_prefix(nil)
179
170
 
180
- assert_instance_of(XML::Namespace, namespace)
181
- assert_equal(nil, namespace.prefix)
171
+ assert_instance_of(LibXML::XML::Namespace, namespace)
172
+ assert_nil(namespace.prefix)
182
173
  assert_equal('http://services.somewhere.com', namespace.href)
183
174
  end
184
175
 
@@ -188,22 +179,22 @@ class TestNamespaces < Minitest::Test
188
179
 
189
180
  namespace = node.namespaces.find_by_href('http://schemas.xmlsoap.org/soap/envelope/')
190
181
 
191
- assert_instance_of(XML::Namespace, namespace)
182
+ assert_instance_of(LibXML::XML::Namespace, namespace)
192
183
  assert_equal('soap', namespace.prefix)
193
184
  assert_equal('http://schemas.xmlsoap.org/soap/envelope/', namespace.href)
194
185
  end
195
186
 
196
187
  def test_default_namespace
197
- 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/"/>')
198
189
  ns = doc.root.namespaces.default
199
190
  assert_equal(ns.href, 'http://schemas.xmlsoap.org/soap/envelope/')
200
191
  end
201
192
 
202
193
  def test_default_prefix
203
- 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/"/>')
204
195
  doc.root.namespaces.default_prefix = 'soap'
205
196
 
206
197
  node = doc.root.find_first('/soap:Envelope')
207
198
  refute_nil(node)
208
199
  end
209
- end
200
+ end
@@ -1,19 +1,19 @@
1
1
  # encoding: UTF-8
2
2
 
3
- require './test_helper'
3
+ require_relative './test_helper'
4
4
 
5
5
  class TestNode < Minitest::Test
6
6
  def setup
7
7
  @file_name = "model/bands.utf-8.xml"
8
8
 
9
9
  # Strip spaces to make testing easier
10
- XML.default_keep_blanks = false
10
+ LibXML::XML.default_keep_blanks = false
11
11
  file = File.join(File.dirname(__FILE__), @file_name)
12
- @doc = XML::Document.file(file)
12
+ @doc = LibXML::XML::Document.file(file)
13
13
  end
14
14
 
15
15
  def teardown
16
- XML.default_keep_blanks = true
16
+ LibXML::XML.default_keep_blanks = true
17
17
  @doc = nil
18
18
  end
19
19
 
@@ -23,52 +23,48 @@ class TestNode < Minitest::Test
23
23
  end
24
24
 
25
25
  def test_doc_class
26
- assert_instance_of(XML::Document, @doc)
26
+ assert_instance_of(LibXML::XML::Document, @doc)
27
27
  end
28
28
 
29
29
  def test_doc_node_type
30
- assert_equal XML::Node::DOCUMENT_NODE, @doc.node_type
30
+ assert_equal LibXML::XML::Node::DOCUMENT_NODE, @doc.node_type
31
31
  end
32
32
 
33
33
  def test_root_class
34
- assert_instance_of(XML::Node, @doc.root)
34
+ assert_instance_of(LibXML::XML::Node, @doc.root)
35
35
  end
36
36
 
37
37
  def test_root_node_type
38
- assert_equal XML::Node::ELEMENT_NODE, @doc.root.node_type
38
+ assert_equal LibXML::XML::Node::ELEMENT_NODE, @doc.root.node_type
39
39
  end
40
40
 
41
41
  def test_node_class
42
42
  for n in nodes
43
- assert_instance_of(XML::Node, n)
43
+ assert_instance_of(LibXML::XML::Node, n)
44
44
  end
45
45
  end
46
46
 
47
47
  def test_context
48
48
  node = @doc.root
49
49
  context = node.context
50
- assert_instance_of(XML::XPath::Context, context)
50
+ assert_instance_of(LibXML::XML::XPath::Context, context)
51
51
  end
52
52
 
53
53
  def test_find
54
- assert_instance_of(XML::XPath::Object, self.nodes)
54
+ assert_instance_of(LibXML::XML::XPath::Object, self.nodes)
55
55
  end
56
56
 
57
57
  def test_node_child_get
58
58
  assert_instance_of(TrueClass, @doc.root.child?)
59
- assert_instance_of(XML::Node, @doc.root.child)
59
+ assert_instance_of(LibXML::XML::Node, @doc.root.child)
60
60
 
61
- if defined?(Encoding)
62
- assert_equal(Encoding::UTF_8, @doc.root.child.name.encoding)
63
- assert_equal("m\u00F6tley_cr\u00FCe", @doc.root.child.name)
64
- else
65
- assert_equal("m\303\266tley_cr\303\274e", @doc.root.child.name)
66
- end
61
+ assert_equal(Encoding::UTF_8, @doc.root.child.name.encoding)
62
+ assert_equal("m\u00F6tley_cr\u00FCe", @doc.root.child.name)
67
63
  end
68
64
 
69
65
  def test_node_doc
70
66
  for n in nodes
71
- assert_instance_of(XML::Document, n.doc) if n.document?
67
+ assert_instance_of(LibXML::XML::Document, n.doc) if n.document?
72
68
  end
73
69
  end
74
70
 
@@ -80,11 +76,11 @@ class TestNode < Minitest::Test
80
76
  def test_node_find
81
77
  nodes = @doc.root.find('./fixnum')
82
78
  for node in nodes
83
- assert_instance_of(XML::Node, node)
79
+ assert_instance_of(LibXML::XML::Node, node)
84
80
  end
85
81
  end
86
82
 
87
- def test_equality
83
+ def test_equality
88
84
  node_a = @doc.find_first('*[@country]')
89
85
  node_b = @doc.root.child
90
86
 
@@ -96,7 +92,7 @@ class TestNode < Minitest::Test
96
92
  assert(node_a.eql?(node_b))
97
93
 
98
94
  file = File.join(File.dirname(__FILE__), @file_name)
99
- doc2 = XML::Document.file(file)
95
+ doc2 = LibXML::XML::Document.file(file)
100
96
 
101
97
  node_a2 = doc2.find_first('*[@country]')
102
98
 
@@ -107,8 +103,8 @@ class TestNode < Minitest::Test
107
103
  end
108
104
 
109
105
  def test_equality_2
110
- parent = XML::Node.new('parent')
111
- child = XML::Node.new('child')
106
+ parent = LibXML::XML::Node.new('parent')
107
+ child = LibXML::XML::Node.new('child')
112
108
  parent << child
113
109
 
114
110
  node_a = child.parent
@@ -139,7 +135,7 @@ class TestNode < Minitest::Test
139
135
  end
140
136
 
141
137
  def test_base
142
- doc = XML::Parser.string('<person />').parse
138
+ doc = LibXML::XML::Parser.string('<person />').parse
143
139
  assert_nil(doc.root.base_uri)
144
140
  end
145
141
 
@@ -152,7 +148,7 @@ class TestNode < Minitest::Test
152
148
  #
153
149
  def test_output_escaping
154
150
  text = '<bad-script>if (a &lt; b || b &gt; c) { return "text"; }<stop/>return "&gt;&gt;&gt;snip&lt;&lt;&lt;";</bad-script>'
155
- node = XML::Parser.string(text).parse.root
151
+ node = LibXML::XML::Parser.string(text).parse.root
156
152
  assert_equal text, node.to_s
157
153
 
158
154
  text_noenc = '<bad-script>if (a < b || b > c) { return "text"; }<stop/>return ">>>snip<<<";</bad-script>'
@@ -172,7 +168,7 @@ class TestNode < Minitest::Test
172
168
  # Just a sanity check for output escaping.
173
169
  def test_output_escaping_sanity
174
170
  text = '<bad-script>if (a &lt; b || b &gt; c) { return "text"; }<stop/>return "&gt;&gt;&gt;snip&lt;&lt;&lt;";</bad-script>'
175
- node = XML::Parser.string(text).parse.root
171
+ node = LibXML::XML::Parser.string(text).parse.root
176
172
  affected = node.find('//text()')
177
173
 
178
174
  check_escaping = lambda do |flag|
@@ -205,15 +201,15 @@ class TestNode < Minitest::Test
205
201
  node = @doc.root
206
202
 
207
203
  node.space_preserve = false
208
- assert_equal XML::Node::SPACE_DEFAULT, node.space_preserve
204
+ assert_equal LibXML::XML::Node::SPACE_DEFAULT, node.space_preserve
209
205
 
210
206
  node.space_preserve = true
211
- assert_equal XML::Node::SPACE_PRESERVE, node.space_preserve
207
+ assert_equal LibXML::XML::Node::SPACE_PRESERVE, node.space_preserve
212
208
  end
213
209
 
214
210
  def test_empty
215
211
  text = '<name> </name>'
216
- doc = XML::Parser.string(text).parse
212
+ doc = LibXML::XML::Parser.string(text).parse
217
213
 
218
214
  node = doc.root
219
215
  assert(!node.empty?)
@@ -222,8 +218,18 @@ class TestNode < Minitest::Test
222
218
  assert(text_node.empty?)
223
219
  end
224
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
+
225
231
  def test_set_content
226
- node = XML::Node.new('test')
232
+ node = LibXML::XML::Node.new('test')
227
233
  node.content = "unescaped & string"
228
234
  assert_equal("unescaped & string", node.content)
229
235
  assert_equal("<test>unescaped &amp; string</test>", node.to_s)