libxml-ruby 0.6.0-x86-mswin32-60

Sign up to get free protection for your applications and to get access to all the features.
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