libxml-ruby 0.6.0-x86-mswin32-60

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 (127) hide show
  1. data/CHANGES +122 -0
  2. data/LICENSE +23 -0
  3. data/README +144 -0
  4. data/ext/libxml/cbg.c +76 -0
  5. data/ext/libxml/extconf.rb +308 -0
  6. data/ext/libxml/libxml.c +62 -0
  7. data/ext/libxml/ruby_libxml.h +93 -0
  8. data/ext/libxml/ruby_xml_attr.c +405 -0
  9. data/ext/libxml/ruby_xml_attr.h +19 -0
  10. data/ext/libxml/ruby_xml_document.c +1111 -0
  11. data/ext/libxml/ruby_xml_document.h +27 -0
  12. data/ext/libxml/ruby_xml_dtd.c +168 -0
  13. data/ext/libxml/ruby_xml_dtd.h +17 -0
  14. data/ext/libxml/ruby_xml_html_parser.c +449 -0
  15. data/ext/libxml/ruby_xml_html_parser.h +29 -0
  16. data/ext/libxml/ruby_xml_input_cbg.c +158 -0
  17. data/ext/libxml/ruby_xml_input_cbg.h +20 -0
  18. data/ext/libxml/ruby_xml_node.c +2410 -0
  19. data/ext/libxml/ruby_xml_node.h +27 -0
  20. data/ext/libxml/ruby_xml_node_set.c +170 -0
  21. data/ext/libxml/ruby_xml_node_set.h +20 -0
  22. data/ext/libxml/ruby_xml_ns.c +153 -0
  23. data/ext/libxml/ruby_xml_ns.h +21 -0
  24. data/ext/libxml/ruby_xml_parser.c +1425 -0
  25. data/ext/libxml/ruby_xml_parser.h +31 -0
  26. data/ext/libxml/ruby_xml_parser_context.c +750 -0
  27. data/ext/libxml/ruby_xml_parser_context.h +22 -0
  28. data/ext/libxml/ruby_xml_reader.c +900 -0
  29. data/ext/libxml/ruby_xml_reader.h +14 -0
  30. data/ext/libxml/ruby_xml_sax_parser.c +485 -0
  31. data/ext/libxml/ruby_xml_sax_parser.h +56 -0
  32. data/ext/libxml/ruby_xml_schema.c +146 -0
  33. data/ext/libxml/ruby_xml_schema.h +16 -0
  34. data/ext/libxml/ruby_xml_state.c +113 -0
  35. data/ext/libxml/ruby_xml_state.h +12 -0
  36. data/ext/libxml/ruby_xml_tree.c +43 -0
  37. data/ext/libxml/ruby_xml_tree.h +12 -0
  38. data/ext/libxml/ruby_xml_xinclude.c +20 -0
  39. data/ext/libxml/ruby_xml_xinclude.h +13 -0
  40. data/ext/libxml/ruby_xml_xpath.c +243 -0
  41. data/ext/libxml/ruby_xml_xpath.h +23 -0
  42. data/ext/libxml/ruby_xml_xpath_context.c +118 -0
  43. data/ext/libxml/ruby_xml_xpath_context.h +20 -0
  44. data/ext/libxml/ruby_xml_xpath_object.c +293 -0
  45. data/ext/libxml/ruby_xml_xpath_object.h +28 -0
  46. data/ext/libxml/ruby_xml_xpointer.c +100 -0
  47. data/ext/libxml/ruby_xml_xpointer.h +27 -0
  48. data/ext/libxml/ruby_xml_xpointer_context.c +21 -0
  49. data/ext/libxml/ruby_xml_xpointer_context.h +18 -0
  50. data/ext/libxml/sax_parser_callbacks.inc +213 -0
  51. data/ext/libxml/version.h +9 -0
  52. data/lib/libxml.rb +125 -0
  53. data/lib/libxml_ruby.so +0 -0
  54. data/lib/xml/libxml.rb +5 -0
  55. data/mingw/libiconv-2.dll +0 -0
  56. data/mingw/libxml2-2.dll +0 -0
  57. data/mingw/libxml_ruby.so +0 -0
  58. data/mingw/mingw.rake +36 -0
  59. data/test/dtd-test.rb +24 -0
  60. data/test/etc_doc_to_s.rb +19 -0
  61. data/test/ets_copy_bug.rb +21 -0
  62. data/test/ets_copy_bug2.rb +32 -0
  63. data/test/ets_copy_bug3.rb +38 -0
  64. data/test/ets_doc_file.rb +15 -0
  65. data/test/ets_doc_to_s.rb +21 -0
  66. data/test/ets_gpx.rb +26 -0
  67. data/test/ets_node_gc.rb +21 -0
  68. data/test/ets_test.xml +2 -0
  69. data/test/ets_tsr.rb +9 -0
  70. data/test/gc.log +0 -0
  71. data/test/merge_bug.rb +55 -0
  72. data/test/schema-test.rb +74 -0
  73. data/test/tc_well_formed.rb +11 -0
  74. data/test/tc_xml_document.rb +52 -0
  75. data/test/tc_xml_document_write.rb +24 -0
  76. data/test/tc_xml_document_write2.rb +54 -0
  77. data/test/tc_xml_document_write3.rb +96 -0
  78. data/test/tc_xml_html_parser.rb +63 -0
  79. data/test/tc_xml_node.rb +59 -0
  80. data/test/tc_xml_node2.rb +25 -0
  81. data/test/tc_xml_node3.rb +27 -0
  82. data/test/tc_xml_node4.rb +86 -0
  83. data/test/tc_xml_node5.rb +52 -0
  84. data/test/tc_xml_node6.rb +27 -0
  85. data/test/tc_xml_node7.rb +35 -0
  86. data/test/tc_xml_node8.rb +32 -0
  87. data/test/tc_xml_node9.rb +32 -0
  88. data/test/tc_xml_node_copy.rb +40 -0
  89. data/test/tc_xml_node_set.rb +24 -0
  90. data/test/tc_xml_node_set2.rb +37 -0
  91. data/test/tc_xml_node_text.rb +17 -0
  92. data/test/tc_xml_node_xlink.rb +28 -0
  93. data/test/tc_xml_parser.rb +190 -0
  94. data/test/tc_xml_parser2.rb +16 -0
  95. data/test/tc_xml_parser3.rb +23 -0
  96. data/test/tc_xml_parser4.rb +33 -0
  97. data/test/tc_xml_parser5.rb +27 -0
  98. data/test/tc_xml_parser6.rb +23 -0
  99. data/test/tc_xml_parser7.rb +28 -0
  100. data/test/tc_xml_parser8.rb +32 -0
  101. data/test/tc_xml_parser9.rb +11 -0
  102. data/test/tc_xml_parser_context.rb +88 -0
  103. data/test/tc_xml_reader.rb +112 -0
  104. data/test/tc_xml_sax_parser.rb +104 -0
  105. data/test/tc_xml_sax_parser2.rb +51 -0
  106. data/test/tc_xml_xinclude.rb +30 -0
  107. data/test/tc_xml_xpath.rb +38 -0
  108. data/test/tc_xml_xpath2.rb +14 -0
  109. data/test/tc_xml_xpointer.rb +78 -0
  110. data/vc/libxml.sln +20 -0
  111. data/vc/libxml.vcproj +389 -0
  112. data/work/Rakefile +247 -0
  113. data/work/task/make +26 -0
  114. data/work/task/memory +37 -0
  115. data/work/task/rdoc +39 -0
  116. data/work/task/setup +1616 -0
  117. data/work/task/test +29 -0
  118. data/work/test/ets_runner.rb +33 -0
  119. data/work/test/libxml_test.rb +3 -0
  120. data/work/test/runner.rb +0 -0
  121. data/work/test/runner_ets.rb +33 -0
  122. data/work/vc/debug/libxml.exp +0 -0
  123. data/work/vc/debug/libxml.ilk +0 -0
  124. data/work/vc/debug/libxml.lib +0 -0
  125. data/work/vc/debug/libxml.pdb +0 -0
  126. data/work/vc/debug/libxml.so +0 -0
  127. metadata +224 -0
@@ -0,0 +1,52 @@
1
+ require "libxml"
2
+ require 'test/unit'
3
+
4
+
5
+ class TC_XML_Document < Test::Unit::TestCase
6
+ def setup()
7
+ xp = XML::Parser.new()
8
+ assert_instance_of(XML::Parser, xp)
9
+ str = '<ruby_array uga="booga" foo="bar"><fixnum>one</fixnum><fixnum>two</fixnum></ruby_array>'
10
+ assert_equal(str, xp.string = str)
11
+ @doc = xp.parse
12
+ assert_instance_of(XML::Document, @doc)
13
+ end
14
+
15
+ def teardown()
16
+ @doc = nil
17
+ end
18
+
19
+ def test_libxml_document_find()
20
+ set = @doc.find('/ruby_array/fixnum')
21
+ assert_instance_of(XML::XPath::Object, set)
22
+ assert_raise(NoMethodError) {
23
+ xpt = set.xpath
24
+ }
25
+ end
26
+
27
+ def test_ruby_xml_document_compression()
28
+ if XML::Parser::enabled_zlib?
29
+ 0.upto(9) do |i|
30
+ assert_equal(i, @doc.compression = i)
31
+ assert_equal(i, @doc.compression)
32
+ end
33
+
34
+ 9.downto(0) do |i|
35
+ assert_equal(i, @doc.compression = i)
36
+ assert_equal(i, @doc.compression)
37
+ end
38
+
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)
43
+ end
44
+
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)
49
+ end
50
+ end # if ...enabled_zlib?
51
+ end # test_ruby_xml_document_compression()
52
+ end # TC_XML_Document
@@ -0,0 +1,24 @@
1
+ require "libxml"
2
+ require 'test/unit'
3
+
4
+ class TC_XML_Document_Write < Test::Unit::TestCase
5
+ def setup()
6
+ @doc = XML::Document.new('1.0')
7
+ assert_instance_of(XML::Document, @doc)
8
+ end
9
+
10
+ def teardown()
11
+ @doc = nil
12
+ end
13
+
14
+ def test_ruby_xml_document_write_initialize()
15
+ assert_instance_of(XML::Document, XML::Document.new())
16
+ assert_equal('1.0', @doc.version)
17
+ end # def test_ruby_xml_document_initialize()
18
+
19
+ def test_ruby_xml_document_write_initialize2()
20
+ doc = XML::Document.new('6.9')
21
+ assert_instance_of(XML::Document, doc)
22
+ assert_equal('6.9', doc.version)
23
+ end # def test_ruby_xml_document_initialize2()
24
+ end # TC_XML_Document_Write
@@ -0,0 +1,54 @@
1
+ require "libxml"
2
+ require 'test/unit'
3
+
4
+ class TC_XML_Document_Write2 < Test::Unit::TestCase
5
+ def setup()
6
+ @doc = XML::Document.new('1.0')
7
+ assert_instance_of(XML::Document, @doc)
8
+ end
9
+
10
+ def teardown()
11
+ @doc = nil
12
+ end
13
+
14
+ def test_ruby_xml_document_write_root()
15
+ xml = "<?xml version=\"1.0\"?>\n<rubynet/>\n"
16
+ @doc.root = XML::Node.new('rubynet')
17
+ assert_instance_of(XML::Node, @doc.root)
18
+ assert_instance_of(XML::Document, @doc.root.doc)
19
+ assert_equal(xml, @doc.to_s)
20
+ end # def test_ruby_xml_document_write_root()
21
+
22
+ def test_ruby_xml_document_write_root2()
23
+ xml = "<?xml version=\"1.0\"?>\n<rubynet/>\n"
24
+ @doc.root = XML::Node.new('rubynet')
25
+ assert_instance_of(XML::Node, @doc.root)
26
+ assert_instance_of(XML::Document, @doc.root.doc)
27
+ assert_equal(xml, @doc.to_s(false))
28
+ end # def test_ruby_xml_document_write_root()
29
+
30
+ def test_ruby_xml_document_write_root3()
31
+ xml = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<rubynet/>\n"
32
+ @doc.root = XML::Node.new('rubynet')
33
+ @doc.encoding = 'UTF-8'
34
+ assert_instance_of(XML::Node, @doc.root)
35
+ assert_instance_of(XML::Document, @doc.root.doc)
36
+ assert_equal(xml, @doc.to_s)
37
+ end # def test_ruby_xml_document_write_root()
38
+
39
+ def test_ruby_xml_document_write_root4()
40
+ xml = "<?xml version=\"1.0\"?>\n<rubynet/>\n"
41
+ @doc.root = XML::Node.new('rubynet')
42
+ assert_instance_of(XML::Node, @doc.root)
43
+ assert_instance_of(XML::Document, @doc.root.doc)
44
+ assert_equal(xml, @doc.to_s(false))
45
+ end # def test_ruby_xml_document_write_root()
46
+
47
+ def test_ruby_xml_document_write_root5()
48
+ xml = "<?xml version=\"1.0\"?>\n<rubynet/>\n"
49
+ @doc.root = XML::Node.new('rubynet')
50
+ assert_instance_of(XML::Node, @doc.root)
51
+ assert_instance_of(XML::Document, @doc.root.doc)
52
+ assert_equal(xml, @doc.to_s(true))
53
+ end # def test_ruby_xml_document_write_root()
54
+ end
@@ -0,0 +1,96 @@
1
+ require "libxml"
2
+ require 'test/unit'
3
+
4
+ class TC_XML_Document_Write3 < Test::Unit::TestCase
5
+ def setup()
6
+ @doc = XML::Document.new('1.0')
7
+ assert_instance_of(XML::Document, @doc)
8
+ @doc.root = XML::Node.new('rubynet')
9
+ end
10
+
11
+ def teardown()
12
+ @doc = nil
13
+ end
14
+
15
+ def test_ruby_xml_document_write_child()
16
+ xml = "<?xml version=\"1.0\"?>\n<rubynet>\n <pkg/>\n</rubynet>\n"
17
+ @doc.root.child = XML::Node.new('pkg')
18
+ assert_equal(xml, @doc.to_s)
19
+ end
20
+
21
+ def test_ruby_xml_document_write_content_append()
22
+ xml = "<?xml version=\"1.0\"?>\n"
23
+ xml << "<rubynet>\n"
24
+ xml << " <pkg>\n"
25
+ xml << " <meta>\n"
26
+ xml << " <pkgname>libxml</pkgname>\n"
27
+ xml << " </meta>\n"
28
+ xml << " </pkg>\n"
29
+ xml << "</rubynet>\n"
30
+ pkg = @doc.root.child = XML::Node.new('pkg')
31
+ meta = pkg.child = XML::Node.new('meta')
32
+ assert_equal meta, meta << (pkgname = XML::Node.new('pkgname'))
33
+ pkgname << 'libxml'
34
+ assert_equal(xml, @doc.to_s)
35
+ end
36
+
37
+ def test_ruby_xml_document_write_node_search_href()
38
+ prefix = 'xlink'
39
+ uri = 'http://www.rubynet.org'
40
+ xml = "<?xml version=\"1.0\"?>\n"
41
+ xml << "<rubynet xmlns:#{prefix}=\"#{uri}\">\n"
42
+ xml << " <pkg/>\n"
43
+ xml << "</rubynet>\n"
44
+ @doc = XML::Parser.string(xml).parse
45
+ assert_equal(xml, @doc.to_s)
46
+ ns = @doc.root.search_href(uri)
47
+ assert_instance_of(XML::NS, ns)
48
+ assert_equal(uri, ns.href)
49
+ assert_equal(prefix, ns.prefix)
50
+ end
51
+
52
+ def test_ruby_xml_document_write_sibling()
53
+ xml = "<?xml version=\"1.0\"?>\n<rubynet>\n <pkg/>\n <pkg2/>\n</rubynet>\n"
54
+ child = @doc.root.child = XML::Node.new('pkg')
55
+ assert_instance_of(XML::Node, child)
56
+ child.sibling = XML::Node.new('pkg2')
57
+ assert_equal(xml, @doc.to_s)
58
+ end
59
+
60
+ def test_ruby_xml_document_write_set_doc_property()
61
+ xml = "<?xml version=\"1.0\"?>\n"
62
+ xml << "<rubynet xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n"
63
+ xml << " <pkg/>\n"
64
+ xml << "</rubynet>\n"
65
+ @doc['xmlns:xlink'] = "http://www.w3.org/1999/xlink"
66
+ pkg = @doc.root.child = XML::Node.new('pkg')
67
+ assert_equal(xml, @doc.to_s)
68
+ end
69
+
70
+ def test_ruby_xml_document_write_set_node_base()
71
+ xml = "<?xml version=\"1.0\"?>\n"
72
+ xml << "<rubynet>\n"
73
+ xml << " <pkg xml:base=\"http://www.rubynet.org/\"/>\n"
74
+ xml << "</rubynet>\n"
75
+ pkg = @doc.root.child = XML::Node.new('pkg')
76
+ pkg.base = 'http://www.rubynet.org/'
77
+ assert_equal(xml, @doc.to_s)
78
+ end
79
+
80
+ def test_ruby_xml_document_write_set_node_property()
81
+ xml = "<?xml version=\"1.0\"?>\n"
82
+ xml << "<rubynet xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n"
83
+ xml << " <pkg version=\"1.0\">\n"
84
+ xml << " <meta>\n"
85
+ xml << " <pkgname>libxml</pkgname>\n"
86
+ xml << " </meta>\n"
87
+ xml << " </pkg>\n"
88
+ xml << "</rubynet>\n"
89
+ @doc.root['xmlns:xlink'] = "http://www.w3.org/1999/xlink"
90
+ pkg = @doc.root.child = XML::Node.new('pkg')
91
+ pkg['version'] = '1.0'
92
+ meta = pkg.child = XML::Node.new('meta')
93
+ pkgname = meta.child = XML::Node.new('pkgname', 'libxml')
94
+ assert_equal(xml, @doc.to_s)
95
+ end
96
+ end
@@ -0,0 +1,63 @@
1
+ require "libxml"
2
+ require 'test/unit'
3
+
4
+ class TC_XML_HTMLParser < Test::Unit::TestCase
5
+ def setup()
6
+ @xp = XML::HTMLParser.new()
7
+ assert_not_nil(@xp)
8
+ str = '<html><head><meta name=keywords content=nasty></head><body>Hello<br>World</html>'
9
+ @xp.string = str
10
+ assert_equal(str, @xp.string)
11
+ end
12
+
13
+ def teardown()
14
+ @xp = nil
15
+ end
16
+
17
+ def test_libxml_html_parser_parse()
18
+ doc = @xp.parse
19
+
20
+ assert_instance_of XML::Document, doc
21
+
22
+ root = doc.root
23
+ assert_instance_of XML::Node, root
24
+ assert_equal 'html', root.name
25
+
26
+ head = root.child
27
+ assert_instance_of XML::Node, head
28
+ assert_equal 'head', head.name
29
+
30
+ meta = head.child
31
+ assert_instance_of XML::Node, meta
32
+ assert_equal 'meta', meta.name
33
+ assert_equal 'keywords', meta[:name]
34
+ assert_equal 'nasty', meta[:content]
35
+
36
+ body = head.next
37
+ assert_instance_of XML::Node, body
38
+ assert_equal 'body', body.name
39
+
40
+ hello = body.child
41
+ # It appears that some versions of libxml2 add a layer of <p>
42
+ # cant figure our why or how, so this skips it if there
43
+ hello = hello.child if hello.name == "p"
44
+
45
+ assert_instance_of XML::Node, hello
46
+ assert_equal 'Hello', hello.content
47
+
48
+ br = hello.next
49
+ assert_instance_of XML::Node, br
50
+ assert_equal 'br', br.name
51
+
52
+ world = br.next
53
+ assert_instance_of XML::Node, world
54
+ assert_equal 'World', world.content
55
+ end
56
+
57
+ def test_libxml_html_parser_parser_context()
58
+ doc = @xp.parse
59
+ assert_instance_of(XML::Document, doc)
60
+ assert_instance_of(XML::Parser::Context, @xp.parser_context)
61
+ assert @xp.parser_context.html?
62
+ end
63
+ end # TC_XML_HTMLParser
@@ -0,0 +1,59 @@
1
+ require "libxml"
2
+ require 'test/unit'
3
+
4
+ class TC_XML_Node < Test::Unit::TestCase
5
+ def setup()
6
+ xp = XML::Parser.new()
7
+ str = '<ruby_array uga="booga" foo="bar"><fixnum>one</fixnum><fixnum>two</fixnum></ruby_array>'
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
22
+ end
23
+
24
+ def teardown()
25
+ @nodes = nil
26
+ @root = nil
27
+ end
28
+
29
+ def test_libxml_node_class()
30
+ for n in @nodes
31
+ assert_instance_of(XML::Node, n)
32
+ end
33
+ end
34
+
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)
39
+ end
40
+
41
+ def test_libxml_node_doc()
42
+ for n in @nodes
43
+ assert_instance_of(XML::Document, n.doc) if n.document?
44
+ end
45
+ end
46
+
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)
50
+ end
51
+
52
+ def test_libxml_node_find()
53
+ set = @root.find('./fixnum').set
54
+ assert_instance_of(XML::Node::Set, set)
55
+ for node in set
56
+ assert_instance_of(XML::Node, node)
57
+ end
58
+ end
59
+ end # TC_XML_Document
@@ -0,0 +1,25 @@
1
+ require "libxml"
2
+ require 'test/unit'
3
+
4
+ class TC_XML_Node2 < Test::Unit::TestCase
5
+ def setup()
6
+ xp = XML::Parser.new()
7
+ str = '<ruby_array uga="booga" foo="bar"><fixnum>one</fixnum><fixnum>two</fixnum></ruby_array>'
8
+ assert_equal(str, xp.string = str)
9
+ doc = xp.parse
10
+ assert_instance_of(XML::Document, doc)
11
+ assert_instance_of(XML::Node, doc.root)
12
+ @root = doc.root
13
+ assert_instance_of(XML::Node, @root)
14
+ end
15
+
16
+ def teardown()
17
+ @root = nil
18
+ end
19
+
20
+ def test_xml_node_doc_get()
21
+ GC.start
22
+ assert_instance_of(XML::Node, @root)
23
+ assert_instance_of(XML::Document, @root.doc)
24
+ end
25
+ end
@@ -0,0 +1,27 @@
1
+ require "libxml"
2
+ require 'test/unit'
3
+
4
+ class TC_XML_Node3 < Test::Unit::TestCase
5
+ def setup()
6
+ xp = XML::Parser.new()
7
+ str = '<ruby_array uga="booga" foo="bar"><fixnum>one</fixnum><fixnum>two</fixnum></ruby_array>'
8
+ assert_equal(str, xp.string = str)
9
+ doc = xp.parse
10
+ assert_instance_of(XML::Document, doc)
11
+ assert_instance_of(XML::Node, doc.root)
12
+ @root = doc.root
13
+ assert_instance_of(XML::Node, @root)
14
+ end
15
+
16
+ def teardown()
17
+ @root = nil
18
+ end
19
+
20
+ def test_xml_node_doc_content()
21
+ assert_equal 'onetwo', @root.content
22
+ first = @root.child
23
+
24
+ assert_equal 'one', first.content
25
+ assert_equal 'two', first.next.content
26
+ end
27
+ end
@@ -0,0 +1,86 @@
1
+ require "libxml"
2
+ require 'test/unit'
3
+
4
+ class TC_XML_Node4 < Test::Unit::TestCase
5
+ def setup()
6
+ xp = XML::Parser.new()
7
+ @str = '<ruby_array uga="booga" foo="bar"><fixnum>one</fixnum><fixnum>two</fixnum></ruby_array>'
8
+ assert_equal(@str, xp.string = @str)
9
+ doc = xp.parse
10
+ xp2=XML::Parser.new()
11
+ xp2.string=@str
12
+ @doc2 = xp2.parse
13
+ assert_instance_of(XML::Document, doc)
14
+ assert_instance_of(XML::Node, doc.root)
15
+ @root = doc.root
16
+ assert_instance_of(XML::Node, @root)
17
+ end
18
+
19
+ def teardown()
20
+ @root = nil
21
+ end
22
+
23
+ def test_xml_node_eql?()
24
+ first1 = @root.child
25
+ first2 = @doc2.root.child
26
+
27
+ assert_not_equal first1.object_id, first2.object_id
28
+ assert first1.eql?(first2)
29
+ assert first2.eql?(first1)
30
+
31
+ assert_equal first1, first2
32
+ end
33
+
34
+ def test_xml_node_hash()
35
+ first1 = @root.child
36
+ first2 = @doc2.root.child
37
+
38
+ assert_not_equal first1.object_id, first2.object_id
39
+ assert_equal first1.hash, first2.hash
40
+ end
41
+
42
+ def test_01_xml_node_remove!()
43
+ first = @root.child
44
+
45
+ assert_equal 'fixnum', first.name
46
+ assert_equal 'fixnum', first.next.name
47
+
48
+ first.next.remove!
49
+
50
+ assert_equal 'fixnum', first.name
51
+ assert_equal nil, first.next
52
+ end
53
+
54
+ def test_02_xml_node_remove!()
55
+ first = @root.child
56
+
57
+ assert_equal 'fixnum', first.name
58
+ assert_equal 'fixnum', first.next.name
59
+ assert_equal 'one', first.content
60
+
61
+ first.remove!
62
+
63
+ first = @root.child
64
+ assert_equal 'fixnum', first.name
65
+ assert_equal nil, first.next
66
+ assert_equal 'two', first.content
67
+ end
68
+
69
+ # TODO need to test namespace support
70
+ def test_xml_node_find_first()
71
+ first = @root.find_first('//fixnum')
72
+
73
+ assert_equal 'one', first.content
74
+ end
75
+
76
+ def test_xml_node_property_set_remove()
77
+ assert_equal 'booga', @root['uga']
78
+ @root['uga'] = nil
79
+ assert_equal nil , @root['uga']
80
+ assert_equal "<ruby_array foo=\"bar\">\n <fixnum>one</fixnum>\n <fixnum>two</fixnum>\n</ruby_array>",
81
+ @root.to_s
82
+ end
83
+
84
+
85
+
86
+ end