libxml-ruby 0.6.0-x86-mswin32-60 → 0.7.0-x86-mswin32-60

Sign up to get free protection for your applications and to get access to all the features.
Files changed (171) hide show
  1. data/CHANGES +42 -0
  2. data/README +123 -117
  3. data/doc/classes/XML.html +226 -0
  4. data/doc/classes/XML/Attr.html +969 -0
  5. data/doc/classes/XML/Attributes.html +487 -0
  6. data/doc/classes/XML/Document.html +1423 -0
  7. data/doc/classes/XML/Dtd.html +159 -0
  8. data/doc/classes/XML/Error.html +111 -0
  9. data/doc/classes/XML/HTMLParser.html +330 -0
  10. data/doc/classes/XML/InputCallbacks.html +154 -0
  11. data/doc/classes/XML/NS.html +366 -0
  12. data/doc/classes/XML/Node.html +3292 -0
  13. data/doc/classes/XML/Node/FailedModify.html +111 -0
  14. data/doc/classes/XML/Node/Set.html +435 -0
  15. data/doc/classes/XML/Node/SetNamespace.html +111 -0
  16. data/doc/classes/XML/Node/UnknownType.html +111 -0
  17. data/doc/classes/XML/Parser.html +2178 -0
  18. data/doc/classes/XML/Parser/Context.html +1233 -0
  19. data/doc/classes/XML/Parser/ParseError.html +111 -0
  20. data/doc/classes/XML/Reader.html +2173 -0
  21. data/doc/classes/XML/SaxParser.html +396 -0
  22. data/doc/classes/XML/SiblingEnum.html +142 -0
  23. data/doc/classes/XML/State.html +118 -0
  24. data/doc/classes/XML/Tree.html +224 -0
  25. data/doc/classes/XML/XInclude.html +117 -0
  26. data/doc/classes/XML/XInclude/Error.html +111 -0
  27. data/doc/classes/XML/XMLParserOptions.html +198 -0
  28. data/doc/classes/XML/XPath.html +269 -0
  29. data/doc/classes/XML/XPath/Context.html +193 -0
  30. data/doc/classes/XML/XPath/InvalidPath.html +111 -0
  31. data/doc/classes/XML/XPath/Object.html +439 -0
  32. data/doc/classes/XML/XPointer.html +164 -0
  33. data/doc/classes/XML/XPointer/Context.html +117 -0
  34. data/doc/classes/XML/XPointer/Context/InvalidPath.html +111 -0
  35. data/doc/classes/XML/XPointer/InvalidExpression.html +111 -0
  36. data/doc/classes/singleton.html +114 -0
  37. data/doc/created.rid +1 -0
  38. data/doc/files/CHANGES.html +375 -0
  39. data/doc/files/LICENSE.html +133 -0
  40. data/doc/files/README.html +279 -0
  41. data/doc/files/VERSION.html +107 -0
  42. data/doc/files/ext/libxml/cbg_c.html +101 -0
  43. data/doc/files/ext/libxml/libxml_c.html +101 -0
  44. data/doc/files/ext/libxml/ruby_xml_attr_c.html +101 -0
  45. data/doc/files/ext/libxml/ruby_xml_attributes_c.html +101 -0
  46. data/doc/files/ext/libxml/ruby_xml_document_c.html +101 -0
  47. data/doc/files/ext/libxml/ruby_xml_dtd_c.html +101 -0
  48. data/doc/files/ext/libxml/ruby_xml_html_parser_c.html +101 -0
  49. data/doc/files/ext/libxml/ruby_xml_input_cbg_c.html +101 -0
  50. data/doc/files/ext/libxml/ruby_xml_node_c.html +101 -0
  51. data/doc/files/ext/libxml/ruby_xml_node_set_c.html +101 -0
  52. data/doc/files/ext/libxml/ruby_xml_ns_c.html +101 -0
  53. data/doc/files/ext/libxml/ruby_xml_parser_c.html +101 -0
  54. data/doc/files/ext/libxml/ruby_xml_parser_context_c.html +101 -0
  55. data/doc/files/ext/libxml/ruby_xml_reader_c.html +101 -0
  56. data/doc/files/ext/libxml/ruby_xml_sax_parser_c.html +101 -0
  57. data/doc/files/ext/libxml/ruby_xml_schema_c.html +101 -0
  58. data/doc/files/ext/libxml/ruby_xml_state_c.html +101 -0
  59. data/doc/files/ext/libxml/ruby_xml_tree_c.html +101 -0
  60. data/doc/files/ext/libxml/ruby_xml_xinclude_c.html +101 -0
  61. data/doc/files/ext/libxml/ruby_xml_xpath_c.html +101 -0
  62. data/doc/files/ext/libxml/ruby_xml_xpath_context_c.html +101 -0
  63. data/doc/files/ext/libxml/ruby_xml_xpath_object_c.html +101 -0
  64. data/doc/files/ext/libxml/ruby_xml_xpointer_c.html +101 -0
  65. data/doc/files/ext/libxml/ruby_xml_xpointer_context_c.html +101 -0
  66. data/doc/files/lib/libxml_rb.html +115 -0
  67. data/doc/files/lib/xml/libxml_rb.html +114 -0
  68. data/doc/fr_class_index.html +60 -0
  69. data/doc/fr_file_index.html +56 -0
  70. data/doc/fr_method_index.html +373 -0
  71. data/doc/index.html +24 -0
  72. data/doc/rdoc-style.css +208 -0
  73. data/ext/libxml/cbg.c +76 -76
  74. data/ext/libxml/extconf.rb +308 -308
  75. data/ext/libxml/libxml.c +58 -62
  76. data/ext/libxml/ruby_libxml.h +1 -0
  77. data/ext/libxml/ruby_xml_attr.c +201 -113
  78. data/ext/libxml/ruby_xml_attr.h +6 -9
  79. data/ext/libxml/ruby_xml_attributes.c +268 -0
  80. data/ext/libxml/ruby_xml_attributes.h +17 -0
  81. data/ext/libxml/ruby_xml_document.c +80 -66
  82. data/ext/libxml/ruby_xml_dtd.c +2 -2
  83. data/ext/libxml/ruby_xml_dtd.h +17 -17
  84. data/ext/libxml/ruby_xml_html_parser.c +18 -19
  85. data/ext/libxml/ruby_xml_html_parser.h +29 -29
  86. data/ext/libxml/ruby_xml_input_cbg.c +6 -0
  87. data/ext/libxml/ruby_xml_input_cbg.h +20 -20
  88. data/ext/libxml/ruby_xml_node.c +438 -536
  89. data/ext/libxml/ruby_xml_node.h +17 -27
  90. data/ext/libxml/ruby_xml_node_set.c +10 -9
  91. data/ext/libxml/ruby_xml_node_set.h +20 -20
  92. data/ext/libxml/ruby_xml_ns.c +60 -69
  93. data/ext/libxml/ruby_xml_ns.h +12 -21
  94. data/ext/libxml/ruby_xml_parser.c +54 -53
  95. data/ext/libxml/ruby_xml_parser.h +31 -31
  96. data/ext/libxml/ruby_xml_parser_context.c +37 -91
  97. data/ext/libxml/ruby_xml_parser_context.h +20 -22
  98. data/ext/libxml/ruby_xml_reader.h +14 -14
  99. data/ext/libxml/ruby_xml_sax_parser.c +55 -55
  100. data/ext/libxml/ruby_xml_sax_parser.h +56 -56
  101. data/ext/libxml/ruby_xml_schema.c +44 -51
  102. data/ext/libxml/ruby_xml_schema.h +16 -16
  103. data/ext/libxml/ruby_xml_state.c +35 -96
  104. data/ext/libxml/ruby_xml_state.h +2 -3
  105. data/ext/libxml/ruby_xml_tree.h +12 -12
  106. data/ext/libxml/ruby_xml_xinclude.h +13 -13
  107. data/ext/libxml/ruby_xml_xpath.c +57 -18
  108. data/ext/libxml/ruby_xml_xpath.h +23 -23
  109. data/ext/libxml/ruby_xml_xpath_context.c +11 -7
  110. data/ext/libxml/ruby_xml_xpath_context.h +20 -20
  111. data/ext/libxml/ruby_xml_xpath_object.c +9 -16
  112. data/ext/libxml/ruby_xml_xpath_object.h +4 -10
  113. data/ext/libxml/ruby_xml_xpointer.c +11 -11
  114. data/ext/libxml/ruby_xml_xpointer.h +27 -27
  115. data/ext/libxml/ruby_xml_xpointer_context.h +18 -18
  116. data/ext/libxml/version.h +2 -2
  117. data/lib/libxml.rb +134 -125
  118. data/lib/libxml_ruby.so +0 -0
  119. data/mingw/libiconv-2.dll +0 -0
  120. data/mingw/libxml2-2.dll +0 -0
  121. data/mingw/libxml_ruby.so +0 -0
  122. data/test/ets_copy_bug.rb +1 -1
  123. data/test/ets_copy_bug2.rb +16 -27
  124. data/test/ets_doc_to_s.rb +1 -1
  125. data/test/ets_gpx.rb +1 -1
  126. data/test/ets_node_gc.rb +1 -1
  127. data/test/ets_tsr.rb +1 -1
  128. data/test/tc_well_formed.rb +1 -1
  129. data/test/tc_xml_attributes.rb +106 -0
  130. data/test/tc_xml_document.rb +10 -10
  131. data/test/tc_xml_document_write3.rb +1 -1
  132. data/test/tc_xml_dtd.rb +49 -0
  133. data/test/tc_xml_html_parser.rb +3 -3
  134. data/test/tc_xml_node.rb +69 -33
  135. data/test/tc_xml_node_attr.rb +170 -0
  136. data/test/{tc_xml_node8.rb → tc_xml_node_cdata.rb} +2 -2
  137. data/test/{tc_xml_node9.rb → tc_xml_node_comment.rb} +3 -3
  138. data/test/tc_xml_node_edit.rb +91 -0
  139. data/test/tc_xml_parser.rb +97 -50
  140. data/test/tc_xml_parser_context.rb +61 -23
  141. data/test/tc_xml_schema.rb +39 -0
  142. data/test/tc_xml_xinclude.rb +5 -6
  143. data/test/tc_xml_xpath.rb +51 -27
  144. data/test/test_suite.rb +27 -0
  145. data/vc/{libxml.sln → libxml_ruby.sln} +5 -5
  146. data/vc/{libxml.vcproj → libxml_ruby.vcproj} +9 -1
  147. metadata +106 -54
  148. data/mingw/mingw.rake +0 -36
  149. data/test/dtd-test.rb +0 -24
  150. data/test/merge_bug.rb +0 -55
  151. data/test/schema-test.rb +0 -74
  152. data/test/tc_xml_node2.rb +0 -25
  153. data/test/tc_xml_node3.rb +0 -27
  154. data/test/tc_xml_node4.rb +0 -86
  155. data/test/tc_xml_node5.rb +0 -52
  156. data/test/tc_xml_node6.rb +0 -27
  157. data/test/tc_xml_node7.rb +0 -35
  158. data/test/tc_xml_parser2.rb +0 -16
  159. data/test/tc_xml_parser3.rb +0 -23
  160. data/test/tc_xml_parser4.rb +0 -33
  161. data/test/tc_xml_parser5.rb +0 -27
  162. data/test/tc_xml_parser6.rb +0 -23
  163. data/test/tc_xml_parser7.rb +0 -28
  164. data/test/tc_xml_parser8.rb +0 -32
  165. data/test/tc_xml_parser9.rb +0 -11
  166. data/test/tc_xml_xpath2.rb +0 -14
  167. data/work/vc/debug/libxml.exp +0 -0
  168. data/work/vc/debug/libxml.ilk +0 -0
  169. data/work/vc/debug/libxml.lib +0 -0
  170. data/work/vc/debug/libxml.pdb +0 -0
  171. data/work/vc/debug/libxml.so +0 -0
data/lib/libxml_ruby.so CHANGED
Binary file
data/mingw/libiconv-2.dll CHANGED
Binary file
data/mingw/libxml2-2.dll CHANGED
Binary file
data/mingw/libxml_ruby.so CHANGED
Binary file
data/test/ets_copy_bug.rb CHANGED
@@ -4,7 +4,7 @@ def test( doc2 )
4
4
  doc = XML::Document.new('1.0')
5
5
  doc.root = XML::Node.new("ccc")
6
6
  doc.root['aaa'] = 'aaa'
7
- doc.root.child_add(doc2.root) # BUG!
7
+ doc.root.child_add(doc2.root.copy(true)) # BUG!
8
8
  doc.root << doc2.root.copy(true)
9
9
  return doc
10
10
  end
@@ -1,32 +1,21 @@
1
1
  require 'libxml'
2
2
 
3
- $FAILS = []
4
-
5
- def test( doc, doc2, iter )
6
- doc.root = XML::Node.new("ccc")
7
- iter.times { |i|
8
- doc.root.child_add(doc2.root)
9
- # doc.root << doc2.root.copy(true)
10
- }
11
- return doc
12
- end
13
-
14
- def test2(iter)
3
+ # This will cause a segmentation fault by
4
+ # freeing a xml_node_object twice. Haven't
5
+ # figured out why this is happening yet.
6
+ 2.times do
15
7
  doc = XML::Document.new('1.0')
16
- doc2 = XML::Document.new('1.0')
17
- doc2.root = XML::Node.new("aaa")
18
- ret = test( doc, doc2, iter )
19
- li=ret.find('aaa').length
20
- $FAILS << [li,iter] unless li == iter
21
- end
8
+ doc.root = XML::Node.new("header")
22
9
 
23
- test2(5)
24
- 1000.times do |i|
25
- test2(i)
26
- print "\r#{i}"; $stdout.flush
10
+ doc2 = XML::Document.new('1.0')
11
+ doc2.root = XML::Node.new("footer")
12
+
13
+ 4000.times do
14
+ doc.root << doc2.root.copy(false)
15
+ end
16
+
17
+ nodes = doc.find('/header/footer')
18
+ nodes = nil
19
+
27
20
  end
28
-
29
- puts "\n#{$FAILS.length} failures"
30
- p $FAILS
31
-
32
-
21
+ puts 'hi'
data/test/ets_doc_to_s.rb CHANGED
@@ -1,6 +1,6 @@
1
1
  require 'libxml'
2
2
 
3
- 1000.times do |count|
3
+ 100.times do |count|
4
4
 
5
5
  xml_doc = XML::Document.new()
6
6
  xml_doc.encoding = "UTF-8"
data/test/ets_gpx.rb CHANGED
@@ -17,7 +17,7 @@ require 'libxml'
17
17
  trkseg = XML::Node.new 'trkseg'
18
18
  track << trkseg
19
19
 
20
- 1.upto(10000) do |n|
20
+ 1.upto(1000) do |n|
21
21
  trkpt = XML::Node.new 'trkpt'
22
22
  trkpt['lat'] = n.to_s
23
23
  trkpt['lon'] = n.to_s
data/test/ets_node_gc.rb CHANGED
@@ -13,7 +13,7 @@ save = nil
13
13
  doc = XML::Document.new
14
14
  doc.root = outer
15
15
  # Uncomment the following line and it won't crash
16
- # save = doc
16
+ save = doc
17
17
  end
18
18
  garbage_collect
19
19
  end
data/test/ets_tsr.rb CHANGED
@@ -1,6 +1,6 @@
1
1
  require 'libxml'
2
2
 
3
- 1_000_000.times {|n|
3
+ 10_000.times {|n|
4
4
  j=XML::Node.new2(nil,"happy#{n}")
5
5
  10.times {|r|
6
6
  j1=XML::Node.new("happy#{r}","farts")
@@ -1,7 +1,7 @@
1
1
  require "libxml"
2
2
  require 'test/unit'
3
3
 
4
- class TC_WELL_FORMED < Test::Unit::TestCase
4
+ class TestWellFormed < Test::Unit::TestCase
5
5
  def test_xml_node_doc_get()
6
6
  parser = XML::Parser.new
7
7
  parser.string = "<p>I am well formed</p>"
@@ -0,0 +1,106 @@
1
+ require "libxml"
2
+ require 'test/unit'
3
+
4
+ class AttributesTest < Test::Unit::TestCase
5
+ def setup()
6
+ xp = XML::Parser.string(<<-EOS)
7
+ <CityModel
8
+ xmlns="http://www.opengis.net/examples"
9
+ xmlns:city="http://www.opengis.net/examples"
10
+ xmlns:gml="http://www.opengis.net/gml"
11
+ xmlns:xlink="http://www.w3.org/1999/xlink"
12
+ xmlns:xsi="http://www.w3.org/2000/10/XMLSchema-instance"
13
+ xsi:schemaLocation="http://www.opengis.net/examples city.xsd">
14
+ <cityMember name="Cambridge"
15
+ xlink:type="simple"
16
+ xlink:title="Trinity Lane"
17
+ xlink:href="http://www.foo.net/cgi-bin/wfs?FeatureID=C10239"
18
+ gml:remoteSchema="city.xsd#xpointer(//complexType[@name='RoadType'])"/>
19
+ </CityModel>
20
+ EOS
21
+
22
+ @doc = xp.parse
23
+ end
24
+
25
+ def teardown()
26
+ @doc = nil
27
+ end
28
+
29
+ def city_member
30
+ @doc.find('/city:CityModel/city:cityMember').first
31
+ end
32
+
33
+ def test_attributes
34
+ attributes = city_member.attributes
35
+ assert_instance_of(XML::Attributes, attributes)
36
+ assert_equal(5, attributes.length)
37
+ end
38
+
39
+ def test_each
40
+ attributes = city_member.attributes
41
+ length = attributes.inject(0) do |result, attr|
42
+ assert_instance_of(XML::Attr, attr)
43
+ result + 1
44
+ end
45
+ assert_equal(5, length)
46
+ end
47
+
48
+ def test_get_attribute
49
+ attributes = city_member.attributes
50
+
51
+ attr = attributes.get_attribute('name')
52
+ assert_instance_of(XML::Attr, attr)
53
+
54
+ attr = attributes.get_attribute('does_not_exist')
55
+ assert_nil(attr)
56
+
57
+ attr = attributes.get_attribute('name')
58
+ assert_instance_of(XML::Attr, attr)
59
+
60
+ attr = attributes.get_attribute('href')
61
+ assert_instance_of(XML::Attr, attr)
62
+ assert_instance_of(XML::NS, attr.ns)
63
+ assert_equal('xlink', attr.ns.prefix)
64
+ assert_equal('http://www.w3.org/1999/xlink', attr.ns.href)
65
+
66
+ attr = attributes.get_attribute_ns('http://www.w3.org/1999/xlink', 'href')
67
+ assert_instance_of(XML::Attr, attr)
68
+
69
+ attr = attributes.get_attribute_ns('http://www.opengis.net/gml', 'remoteSchema')
70
+ assert_instance_of(XML::Attr, attr)
71
+
72
+ attr = attributes.get_attribute_ns('http://i.dont.exist', 'nor do i')
73
+ assert_nil(attr)
74
+ end
75
+
76
+ def test_get_values
77
+ assert_equal('Cambridge', city_member[:name])
78
+ assert_equal('http://www.foo.net/cgi-bin/wfs?FeatureID=C10239', city_member[:href])
79
+
80
+ attributes = city_member.attributes
81
+ assert_equal('Cambridge', attributes[:name])
82
+ assert_equal('http://www.foo.net/cgi-bin/wfs?FeatureID=C10239', attributes[:href])
83
+ end
84
+
85
+ def test_set_values
86
+ city_member[:name] = 'London'
87
+ assert_equal('London', city_member[:name])
88
+
89
+ city_member[:href] = 'foo'
90
+ assert_equal('foo', city_member[:href])
91
+
92
+ attributes = city_member.attributes
93
+
94
+ attributes[:name] = 'London'
95
+ assert_equal('London', attributes[:name])
96
+
97
+ attributes[:href] = 'foo'
98
+ assert_equal('foo', attributes[:href])
99
+ end
100
+
101
+ def test_str_sym()
102
+ attributes = city_member.attributes
103
+ assert_equal('Cambridge', attributes[:name])
104
+ assert_equal('Cambridge', attributes['name'])
105
+ end
106
+ end
@@ -27,25 +27,25 @@ class TC_XML_Document < Test::Unit::TestCase
27
27
  def test_ruby_xml_document_compression()
28
28
  if XML::Parser::enabled_zlib?
29
29
  0.upto(9) do |i|
30
- assert_equal(i, @doc.compression = i)
31
- assert_equal(i, @doc.compression)
30
+ assert_equal(i, @doc.compression = i)
31
+ assert_equal(i, @doc.compression)
32
32
  end
33
33
 
34
34
  9.downto(0) do |i|
35
- assert_equal(i, @doc.compression = i)
36
- assert_equal(i, @doc.compression)
35
+ assert_equal(i, @doc.compression = i)
36
+ assert_equal(i, @doc.compression)
37
37
  end
38
38
 
39
39
  10.upto(20) do |i|
40
- # assert_equal(9, @doc.compression = i)
41
- assert_equal(i, @doc.compression = i) # This works around a bug in Ruby 1.8
42
- assert_equal(9, @doc.compression)
40
+ # assert_equal(9, @doc.compression = i)
41
+ assert_equal(i, @doc.compression = i) # This works around a bug in Ruby 1.8
42
+ assert_equal(9, @doc.compression)
43
43
  end
44
44
 
45
45
  -1.downto(-10) do |i|
46
- # assert_equal(0, @doc.compression = i)
47
- assert_equal(i, @doc.compression = i) # FIXME This bug should get fixed ASAP
48
- assert_equal(0, @doc.compression)
46
+ # assert_equal(0, @doc.compression = i)
47
+ assert_equal(i, @doc.compression = i) # FIXME This bug should get fixed ASAP
48
+ assert_equal(0, @doc.compression)
49
49
  end
50
50
  end # if ...enabled_zlib?
51
51
  end # test_ruby_xml_document_compression()
@@ -62,7 +62,7 @@ class TC_XML_Document_Write3 < Test::Unit::TestCase
62
62
  xml << "<rubynet xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n"
63
63
  xml << " <pkg/>\n"
64
64
  xml << "</rubynet>\n"
65
- @doc['xmlns:xlink'] = "http://www.w3.org/1999/xlink"
65
+ @doc.root['xmlns:xlink'] = "http://www.w3.org/1999/xlink"
66
66
  pkg = @doc.root.child = XML::Node.new('pkg')
67
67
  assert_equal(xml, @doc.to_s)
68
68
  end
@@ -0,0 +1,49 @@
1
+ require "libxml"
2
+ require 'test/unit'
3
+
4
+ class TestDtd < Test::Unit::TestCase
5
+ def setup
6
+ xp = XML::Parser.string(<<-EOS)
7
+ <root>
8
+ <head a="ee" id="1">Colorado</head>
9
+ <descr>Lots of nice mountains</descr>
10
+ </root>
11
+ EOS
12
+ @doc = xp.parse
13
+ end
14
+
15
+ def teardown
16
+ @doc = nil
17
+ end
18
+
19
+ def dtd
20
+ XML::Dtd.new(<<-EOS)
21
+ <!ELEMENT root (head, descr)>
22
+ <!ELEMENT head (#PCDATA)>
23
+ <!ATTLIST head
24
+ id NMTOKEN #REQUIRED
25
+ a CDATA #IMPLIED
26
+ >
27
+ <!ELEMENT descr (#PCDATA)>
28
+ EOS
29
+ end
30
+
31
+ def test_valid
32
+ assert(@doc.validate(dtd))
33
+ end
34
+
35
+ def test_invalid
36
+ new_node = XML::Node.new('invalid', 'this will mess up validation')
37
+ @doc.root.child_add(new_node)
38
+
39
+ messages = Hash.new
40
+ assert(!@doc.validate(dtd) do |message, error|
41
+ messages[message] = error
42
+ end)
43
+
44
+ expected = {"No declaration for element invalid\n" => true,
45
+ "Element root content does not follow the DTD, expecting (head , descr), got (head descr invalid)\n" => true}
46
+
47
+ assert_equal(expected, messages)
48
+ end
49
+ end
@@ -54,10 +54,10 @@ class TC_XML_HTMLParser < Test::Unit::TestCase
54
54
  assert_equal 'World', world.content
55
55
  end
56
56
 
57
- def test_libxml_html_parser_parser_context()
57
+ def test_libxml_html_parser_context()
58
58
  doc = @xp.parse
59
59
  assert_instance_of(XML::Document, doc)
60
- assert_instance_of(XML::Parser::Context, @xp.parser_context)
61
- assert @xp.parser_context.html?
60
+ assert_instance_of(XML::Parser::Context, @xp.context)
61
+ assert @xp.context.html?
62
62
  end
63
63
  end # TC_XML_HTMLParser
data/test/tc_xml_node.rb CHANGED
@@ -1,59 +1,95 @@
1
1
  require "libxml"
2
2
  require 'test/unit'
3
3
 
4
- class TC_XML_Node < Test::Unit::TestCase
5
- def setup()
4
+ class TestNode < Test::Unit::TestCase
5
+ def setup
6
6
  xp = XML::Parser.new()
7
7
  str = '<ruby_array uga="booga" foo="bar"><fixnum>one</fixnum><fixnum>two</fixnum></ruby_array>'
8
8
  assert_equal(str, xp.string = str)
9
- doc = xp.parse
10
- assert_instance_of(XML::Document, doc)
11
- @root = doc.root
12
- assert_instance_of(XML::Node, @root)
13
- set = doc.find('/ruby_array/fixnum')
14
- assert_instance_of(XML::XPath::Object, set)
15
- assert_raise(NoMethodError) {
16
- xpt = set.xpath
17
- }
18
- @nodes = []
19
- set.each do |n|
20
- @nodes.push(n)
21
- end
9
+ @doc = xp.parse
22
10
  end
23
-
24
- def teardown()
25
- @nodes = nil
26
- @root = nil
11
+
12
+ def teardown
13
+ @doc = nil
14
+ end
15
+
16
+ def nodes
17
+ @doc.find('/ruby_array/fixnum')
27
18
  end
28
19
 
29
- def test_libxml_node_class()
30
- for n in @nodes
20
+ def test_doc_class
21
+ assert_instance_of(XML::Document, @doc)
22
+ end
23
+
24
+ def test_root_class
25
+ assert_instance_of(XML::Node, @doc.root)
26
+ end
27
+
28
+ def test_node_class
29
+ for n in nodes
31
30
  assert_instance_of(XML::Node, n)
32
31
  end
33
32
  end
34
33
 
35
- def test_libxml_node_child_get()
36
- assert_instance_of(TrueClass, @root.child?)
37
- assert_instance_of(XML::Node, @root.child)
38
- assert_equal('fixnum', @root.child.name)
34
+ def test_find_class
35
+ set = @doc.find('/ruby_array/fixnum')
36
+ assert_instance_of(XML::XPath::Object, set)
39
37
  end
40
38
 
41
- def test_libxml_node_doc()
42
- for n in @nodes
39
+ def test_node_child_get
40
+ assert_instance_of(TrueClass, @doc.root.child?)
41
+ assert_instance_of(XML::Node, @doc.root.child)
42
+ assert_equal('fixnum', @doc.root.child.name)
43
+ end
44
+
45
+ def test_node_doc
46
+ for n in nodes
43
47
  assert_instance_of(XML::Document, n.doc) if n.document?
44
48
  end
45
49
  end
46
50
 
47
- def test_libxml_node_type_name()
48
- assert_equal('element', @nodes[0].node_type_name)
49
- assert_equal('element', @nodes[1].node_type_name)
51
+ def test_node_type_name
52
+ assert_equal('element', nodes[0].node_type_name)
53
+ assert_equal('element', nodes[1].node_type_name)
50
54
  end
51
55
 
52
- def test_libxml_node_find()
53
- set = @root.find('./fixnum').set
56
+ def test_node_find
57
+ set = @doc.root.find('./fixnum').set
54
58
  assert_instance_of(XML::Node::Set, set)
55
59
  for node in set
56
60
  assert_instance_of(XML::Node, node)
57
61
  end
58
62
  end
59
- end # TC_XML_Document
63
+
64
+ def test_equality
65
+ node_a = @doc.find('/ruby_array/fixnum').first
66
+ node_b = @doc.root.child
67
+ assert(node_a == node_b)
68
+ assert(node_a.eql?(node_b))
69
+ assert(node_a.equal?(node_b))
70
+
71
+ xp2 = XML::Parser.new()
72
+ xp2.string = '<ruby_array uga="booga" foo="bar"><fixnum>one</fixnum><fixnum>two</fixnum></ruby_array>'
73
+ doc2 = xp2.parse
74
+
75
+ node_a2 = doc2.find('/ruby_array/fixnum').first
76
+
77
+ assert(node_a.to_s == node_a2.to_s)
78
+ assert(node_a == node_a2)
79
+ assert(node_a.eql?(node_a2))
80
+ assert(!node_a.equal?(node_a2))
81
+ end
82
+
83
+ def test_content()
84
+ assert_equal('onetwo', @doc.root.content)
85
+
86
+ first = @doc.root.child
87
+ assert_equal('one', first.content)
88
+ assert_equal('two', first.next.content)
89
+ end
90
+
91
+ def test_base
92
+ doc = XML::Parser.string('<person />').parse
93
+ assert_nil(doc.root.base)
94
+ end
95
+ end