libxml-ruby 0.5.4 → 0.6.0

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 (139) hide show
  1. data/LICENSE +23 -23
  2. data/README +144 -144
  3. data/ext/libxml/extconf.rb +26 -27
  4. data/ext/libxml/libxml.c +7 -37
  5. data/ext/libxml/{libxml.h → ruby_libxml.h} +93 -98
  6. data/ext/libxml/ruby_xml_attr.c +405 -387
  7. data/ext/libxml/ruby_xml_attr.h +19 -18
  8. data/ext/libxml/ruby_xml_document.c +1111 -1115
  9. data/ext/libxml/ruby_xml_document.h +27 -24
  10. data/ext/libxml/ruby_xml_dtd.c +168 -168
  11. data/ext/libxml/ruby_xml_html_parser.c +449 -450
  12. data/ext/libxml/ruby_xml_html_parser.h +1 -1
  13. data/ext/libxml/ruby_xml_input_cbg.c +158 -158
  14. data/ext/libxml/ruby_xml_node.c +2410 -2395
  15. data/ext/libxml/ruby_xml_node.h +1 -1
  16. data/ext/libxml/ruby_xml_node_set.c +170 -170
  17. data/ext/libxml/ruby_xml_node_set.h +1 -1
  18. data/ext/libxml/ruby_xml_ns.c +153 -153
  19. data/ext/libxml/ruby_xml_ns.h +1 -1
  20. data/ext/libxml/ruby_xml_parser.c +1425 -1422
  21. data/ext/libxml/ruby_xml_parser.h +1 -1
  22. data/ext/libxml/ruby_xml_parser_context.c +750 -716
  23. data/ext/libxml/ruby_xml_parser_context.h +1 -1
  24. data/ext/libxml/ruby_xml_reader.c +900 -896
  25. data/ext/libxml/ruby_xml_sax_parser.c +485 -485
  26. data/ext/libxml/ruby_xml_sax_parser.h +1 -1
  27. data/ext/libxml/ruby_xml_schema.c +146 -142
  28. data/ext/libxml/ruby_xml_state.c +5 -6
  29. data/ext/libxml/ruby_xml_state.h +1 -0
  30. data/ext/libxml/ruby_xml_tree.c +43 -43
  31. data/ext/libxml/ruby_xml_tree.h +1 -1
  32. data/ext/libxml/ruby_xml_xinclude.c +20 -20
  33. data/ext/libxml/ruby_xml_xinclude.h +1 -1
  34. data/ext/libxml/ruby_xml_xpath.c +243 -252
  35. data/ext/libxml/ruby_xml_xpath.h +1 -1
  36. data/ext/libxml/ruby_xml_xpath_context.c +118 -118
  37. data/ext/libxml/ruby_xml_xpath_context.h +1 -1
  38. data/ext/libxml/ruby_xml_xpath_object.c +43 -29
  39. data/ext/libxml/ruby_xml_xpath_object.h +0 -1
  40. data/ext/libxml/ruby_xml_xpointer.c +100 -100
  41. data/ext/libxml/ruby_xml_xpointer.h +1 -1
  42. data/ext/libxml/ruby_xml_xpointer_context.c +21 -21
  43. data/ext/libxml/ruby_xml_xpointer_context.h +1 -1
  44. data/ext/libxml/sax_parser_callbacks.inc +213 -213
  45. data/ext/libxml/version.h +9 -9
  46. data/lib/libxml.rb +24 -3
  47. data/mingw/libiconv-2.dll +0 -0
  48. data/mingw/libxml2-2.dll +0 -0
  49. data/mingw/libxml_ruby.so +0 -0
  50. data/mingw/mingw.rake +36 -0
  51. data/test/dtd-test.rb +24 -24
  52. data/test/etc_doc_to_s.rb +1 -3
  53. data/test/ets_copy_bug.rb +21 -21
  54. data/test/ets_copy_bug2.rb +32 -32
  55. data/test/ets_copy_bug3.rb +38 -0
  56. data/test/ets_doc_file.rb +1 -0
  57. data/test/{model/default_validation_bug.rb → gc.log} +0 -0
  58. data/test/merge_bug.rb +55 -55
  59. data/test/schema-test.rb +74 -74
  60. data/test/tc_well_formed.rb +11 -0
  61. data/test/tc_xml_document.rb +52 -52
  62. data/test/tc_xml_document_write.rb +24 -24
  63. data/test/tc_xml_document_write2.rb +54 -54
  64. data/test/tc_xml_document_write3.rb +96 -96
  65. data/test/tc_xml_html_parser.rb +63 -63
  66. data/test/tc_xml_node.rb +59 -59
  67. data/test/tc_xml_node2.rb +25 -25
  68. data/test/tc_xml_node3.rb +27 -27
  69. data/test/tc_xml_node4.rb +86 -86
  70. data/test/tc_xml_node5.rb +52 -52
  71. data/test/tc_xml_node6.rb +27 -27
  72. data/test/tc_xml_node7.rb +35 -35
  73. data/test/tc_xml_node8.rb +32 -32
  74. data/test/tc_xml_node9.rb +32 -32
  75. data/test/tc_xml_node_set.rb +24 -24
  76. data/test/tc_xml_node_set2.rb +37 -37
  77. data/test/tc_xml_node_xlink.rb +28 -28
  78. data/test/tc_xml_parser.rb +190 -178
  79. data/test/tc_xml_parser2.rb +16 -17
  80. data/test/tc_xml_parser3.rb +23 -23
  81. data/test/tc_xml_parser4.rb +33 -33
  82. data/test/tc_xml_parser5.rb +27 -27
  83. data/test/tc_xml_parser6.rb +23 -23
  84. data/test/tc_xml_parser7.rb +28 -28
  85. data/test/tc_xml_parser8.rb +32 -32
  86. data/test/tc_xml_parser9.rb +11 -0
  87. data/test/tc_xml_parser_context.rb +88 -88
  88. data/test/tc_xml_reader.rb +112 -109
  89. data/test/tc_xml_sax_parser.rb +104 -94
  90. data/test/tc_xml_sax_parser2.rb +51 -0
  91. data/test/tc_xml_xinclude.rb +30 -30
  92. data/test/tc_xml_xpath.rb +38 -38
  93. data/test/tc_xml_xpath2.rb +14 -0
  94. data/test/tc_xml_xpointer.rb +78 -78
  95. data/vc/libxml.sln +20 -0
  96. data/vc/libxml.vcproj +389 -0
  97. data/work/Rakefile +247 -0
  98. data/work/task/make +26 -0
  99. data/work/task/memory +37 -0
  100. data/work/task/rdoc +39 -0
  101. data/work/task/setup +1616 -0
  102. data/work/task/test +29 -0
  103. data/work/test/ets_runner.rb +33 -0
  104. data/work/test/libxml_test.rb +3 -0
  105. data/work/test/runner.rb +0 -0
  106. data/work/test/runner_ets.rb +33 -0
  107. data/work/vc/debug/libxml.exp +0 -0
  108. data/work/vc/debug/libxml.ilk +0 -0
  109. data/work/vc/debug/libxml.lib +0 -0
  110. data/work/vc/debug/libxml.pdb +0 -0
  111. data/work/vc/debug/libxml.so +0 -0
  112. metadata +158 -189
  113. data/MANIFEST +0 -138
  114. data/NOTES +0 -9
  115. data/Rakefile +0 -38
  116. data/TODO +0 -75
  117. data/VERSION +0 -1
  118. data/log/Changelog-0.txt +0 -426
  119. data/log/Changelog.txt +0 -435
  120. data/meta/project.yaml +0 -27
  121. data/meta/unixname +0 -1
  122. data/setup.rb +0 -1472
  123. data/site/css/normal.css +0 -182
  124. data/site/img/raze-tiny.png +0 -0
  125. data/site/img/red-cube.jpg +0 -0
  126. data/site/img/xml-ruby.png +0 -0
  127. data/site/index.xml +0 -43
  128. data/site/install.xml +0 -77
  129. data/site/layout.rhtml +0 -38
  130. data/site/layout.xsl +0 -67
  131. data/site/license.xml +0 -32
  132. data/site/log/changelog.xml +0 -1324
  133. data/site/log/changelog.xsl +0 -42
  134. data/test/model/merge_bug_data.xml +0 -58
  135. data/test/model/rubynet.xml +0 -78
  136. data/test/model/rubynet_project +0 -13
  137. data/test/model/saxtest.xml +0 -5
  138. data/test/model/simple.xml +0 -7
  139. data/test/model/xinclude.xml +0 -5
@@ -1,23 +1,23 @@
1
- # $Id: tc_xml_parser6.rb 261 2008-02-01 21:14:24Z transami $
2
- require "libxml"
3
- require 'test/unit'
4
-
5
- class TC_XML_Parser6 < Test::Unit::TestCase
6
- def setup()
7
- @xp = XML::Parser.new()
8
- assert_instance_of(XML::Parser, @xp)
9
- f = File.open('test/model/rubynet.xml')
10
- f1 = @xp.io = f
11
- assert_instance_of(File, f1)
12
- assert_instance_of(File, @xp.io)
13
- end
14
-
15
- def teardown()
16
- @xp = nil
17
- end
18
-
19
- def test_ruby_xml_parser_new()
20
- assert_instance_of(XML::Parser, @xp)
21
- assert_instance_of(File, @xp.io)
22
- end
23
- end
1
+ # $Id: tc_xml_parser6.rb 283 2008-07-01 06:48:35Z cfis $
2
+ require "libxml"
3
+ require 'test/unit'
4
+
5
+ class TC_XML_Parser6 < Test::Unit::TestCase
6
+ def setup()
7
+ @xp = XML::Parser.new()
8
+ assert_instance_of(XML::Parser, @xp)
9
+ f = File.open('model/rubynet.xml')
10
+ f1 = @xp.io = f
11
+ assert_instance_of(File, f1)
12
+ assert_instance_of(File, @xp.io)
13
+ end
14
+
15
+ def teardown()
16
+ @xp = nil
17
+ end
18
+
19
+ def test_ruby_xml_parser_new()
20
+ assert_instance_of(XML::Parser, @xp)
21
+ assert_instance_of(File, @xp.io)
22
+ end
23
+ end
@@ -1,28 +1,28 @@
1
- # $Id: tc_xml_parser7.rb 261 2008-02-01 21:14:24Z transami $
2
- require "libxml"
3
- require 'test/unit'
4
-
5
- class TC_XML_Parser7 < Test::Unit::TestCase
6
- def setup()
7
- @xp = XML::Parser.new()
8
- assert_instance_of(XML::Parser, @xp)
9
- f = File.open('test/model/rubynet.xml')
10
- f1 = @xp.io = f
11
- assert_instance_of(File, f1)
12
- assert_instance_of(File, @xp.io)
13
- @doc = @xp.parse
14
- assert_instance_of(XML::Document, @doc)
15
- end
16
-
17
- def teardown()
18
- @xp = nil
19
- @doc = nil
20
- end
21
-
22
- def test_ruby_xml_parser_new()
23
- assert_instance_of(XML::Parser, @xp)
24
- assert_instance_of(File, @xp.io)
25
- assert_instance_of(XML::Document, @doc)
26
- assert_instance_of(String, @doc.version)
27
- end
28
- end
1
+ # $Id: tc_xml_parser7.rb 283 2008-07-01 06:48:35Z cfis $
2
+ require "libxml"
3
+ require 'test/unit'
4
+
5
+ class TC_XML_Parser7 < Test::Unit::TestCase
6
+ def setup()
7
+ @xp = XML::Parser.new()
8
+ assert_instance_of(XML::Parser, @xp)
9
+ f = File.open('model/rubynet.xml')
10
+ f1 = @xp.io = f
11
+ assert_instance_of(File, f1)
12
+ assert_instance_of(File, @xp.io)
13
+ @doc = @xp.parse
14
+ assert_instance_of(XML::Document, @doc)
15
+ end
16
+
17
+ def teardown()
18
+ @xp = nil
19
+ @doc = nil
20
+ end
21
+
22
+ def test_ruby_xml_parser_new()
23
+ assert_instance_of(XML::Parser, @xp)
24
+ assert_instance_of(File, @xp.io)
25
+ assert_instance_of(XML::Document, @doc)
26
+ assert_instance_of(String, @doc.version)
27
+ end
28
+ end
@@ -1,32 +1,32 @@
1
- # $Id: tc_xml_parser8.rb 260 2008-02-01 20:56:58Z transami $
2
- require "libxml"
3
- require 'test/unit'
4
-
5
- class TC_XML_Parser8 < Test::Unit::TestCase
6
- def test_ruby_xml_parser_error_handler
7
- $stderr.puts "\nEXPECTING: TWO ERRORS:"
8
- # this will send message to stderr
9
- assert_raise(XML::Parser::ParseError) {
10
- d = XML::Parser.string('<foo><bar/></foz>').parse
11
- }
12
-
13
- ary = []
14
- assert_nil XML::Parser.register_error_handler(lambda { |msg| ary << msg })
15
-
16
- # this will use our error handler
17
- assert_raise(XML::Parser::ParseError) {
18
- d = XML::Parser.string('<foo><bar/></foz>').parse
19
- }
20
-
21
- assert (first_len = ary.length) > 0
22
-
23
- assert_instance_of Proc, XML::Parser.register_error_handler(nil)
24
-
25
- # this will go to stderr again
26
- assert_raise(XML::Parser::ParseError) {
27
- d = XML::Parser.string('<foo><bar/></foz>').parse
28
- }
29
-
30
- assert_equal first_len, ary.length
31
- end
32
- end
1
+ # $Id: tc_xml_parser8.rb 251 2008-01-22 18:12:00Z transami $
2
+ require "libxml"
3
+ require 'test/unit'
4
+
5
+ class TC_XML_Parser8 < Test::Unit::TestCase
6
+ def test_ruby_xml_parser_error_handler
7
+ $stderr.puts "\nEXPECTING: TWO ERRORS:"
8
+ # this will send message to stderr
9
+ assert_raise(XML::Parser::ParseError) {
10
+ d = XML::Parser.string('<foo><bar/></foz>').parse
11
+ }
12
+
13
+ ary = []
14
+ assert_nil XML::Parser.register_error_handler(lambda { |msg| ary << msg })
15
+
16
+ # this will use our error handler
17
+ assert_raise(XML::Parser::ParseError) {
18
+ d = XML::Parser.string('<foo><bar/></foz>').parse
19
+ }
20
+
21
+ assert (first_len = ary.length) > 0
22
+
23
+ assert_instance_of Proc, XML::Parser.register_error_handler(nil)
24
+
25
+ # this will go to stderr again
26
+ assert_raise(XML::Parser::ParseError) {
27
+ d = XML::Parser.string('<foo><bar/></foz>').parse
28
+ }
29
+
30
+ assert_equal first_len, ary.length
31
+ end
32
+ end
@@ -0,0 +1,11 @@
1
+ require "libxml"
2
+ require 'test/unit'
3
+
4
+ class TC_XML_Parser9 < Test::Unit::TestCase
5
+ def test_double_parse
6
+ parser = XML::Parser.string("<test>something</test>")
7
+ doc = parser.parse
8
+ parser.parse
9
+ end
10
+ end
11
+
@@ -1,88 +1,88 @@
1
- require "libxml"
2
- require 'test/unit'
3
-
4
- class TC_XML_Parser_Context < Test::Unit::TestCase
5
- def setup()
6
- str = '<ruby_array uga="booga" foo="bar"><fixnum>one</fixnum><fixnum>two</fixnum></ruby_array>'
7
- xp = XML::Parser.string(str)
8
- assert_equal(str, xp.string = str)
9
- doc = xp.parse
10
- assert_instance_of(XML::Document, doc)
11
- @ctxt = xp.parser_context()
12
- assert_instance_of(XML::Parser::Context, @ctxt)
13
- end
14
-
15
- def teardown()
16
- @ctxt = nil
17
- end
18
-
19
- def test_libxml_parser_context_well_formed()
20
- if @ctxt.well_formed?
21
- assert_instance_of(TrueClass, @ctxt.well_formed?)
22
- else
23
- assert_instance_of(FalseClass, @ctxt.well_formed?)
24
- end
25
- end
26
-
27
- def test_ruby_xml_parser_context_version_info()
28
- assert_instance_of(String, @ctxt.version)
29
- end
30
-
31
- def test_ruby_xml_parser_context_depth()
32
- assert_instance_of(Fixnum, @ctxt.depth)
33
- end
34
-
35
- def test_ruby_xml_parser_context_doc()
36
- assert_instance_of(XML::Document, @ctxt.doc)
37
- end
38
-
39
- def test_ruby_xml_parser_context_disable_sax()
40
- assert(!@ctxt.disable_sax?)
41
- end
42
-
43
- def test_ruby_xml_parser_context_docbook()
44
- assert(!@ctxt.docbook?)
45
- end
46
-
47
- def test_ruby_xml_parser_context_encoding()
48
- assert(!@ctxt.encoding)
49
- end
50
-
51
- def test_ruby_xml_parser_context_html()
52
- assert(!@ctxt.html?)
53
- end
54
-
55
- def test_ruby_xml_parser_context_keep_blanks()
56
- if @ctxt.keep_blanks?
57
- assert_instance_of(TrueClass, @ctxt.keep_blanks?)
58
- else
59
- assert_instance_of(FalseClass, @ctxt.keep_blanks?)
60
- end
61
- end
62
-
63
- if ENV['NOTWORKING']
64
- def test_ruby_xml_parser_context_num_chars()
65
- assert_equal(17, @ctxt.num_chars)
66
- end
67
- end
68
-
69
- def test_ruby_xml_parser_context_replace_entities()
70
- if @ctxt.replace_entities?
71
- assert_instance_of(TrueClass, @ctxt.replace_entities?)
72
- else
73
- assert_instance_of(FalseClass, @ctxt.replace_entities?)
74
- end
75
- end
76
-
77
- def test_ruby_xml_parser_context_space_depth()
78
- assert_equal(1, @ctxt.space_depth)
79
- end
80
-
81
- def test_ruby_xml_parser_context_subset_external()
82
- assert(!@ctxt.subset_external?)
83
- end
84
-
85
- def test_ruby_xml_parser_context_data_directory_get()
86
- # assert_instance_of(String, @ctxt.data_directory)
87
- end
88
- end # TC_XML_Parser_Context
1
+ require "libxml"
2
+ require 'test/unit'
3
+
4
+ class TC_XML_Parser_Context < Test::Unit::TestCase
5
+ def setup()
6
+ str = '<ruby_array uga="booga" foo="bar"><fixnum>one</fixnum><fixnum>two</fixnum></ruby_array>'
7
+ xp = XML::Parser.string(str)
8
+ assert_equal(str, xp.string = str)
9
+ doc = xp.parse
10
+ assert_instance_of(XML::Document, doc)
11
+ @ctxt = xp.parser_context()
12
+ assert_instance_of(XML::Parser::Context, @ctxt)
13
+ end
14
+
15
+ def teardown()
16
+ @ctxt = nil
17
+ end
18
+
19
+ def test_libxml_parser_context_well_formed()
20
+ if @ctxt.well_formed?
21
+ assert_instance_of(TrueClass, @ctxt.well_formed?)
22
+ else
23
+ assert_instance_of(FalseClass, @ctxt.well_formed?)
24
+ end
25
+ end
26
+
27
+ def test_ruby_xml_parser_context_version_info()
28
+ assert_instance_of(String, @ctxt.version)
29
+ end
30
+
31
+ def test_ruby_xml_parser_context_depth()
32
+ assert_instance_of(Fixnum, @ctxt.depth)
33
+ end
34
+
35
+ def test_ruby_xml_parser_context_doc()
36
+ assert_instance_of(XML::Document, @ctxt.doc)
37
+ end
38
+
39
+ def test_ruby_xml_parser_context_disable_sax()
40
+ assert(!@ctxt.disable_sax?)
41
+ end
42
+
43
+ def test_ruby_xml_parser_context_docbook()
44
+ assert(!@ctxt.docbook?)
45
+ end
46
+
47
+ def test_ruby_xml_parser_context_encoding()
48
+ assert(!@ctxt.encoding)
49
+ end
50
+
51
+ def test_ruby_xml_parser_context_html()
52
+ assert(!@ctxt.html?)
53
+ end
54
+
55
+ def test_ruby_xml_parser_context_keep_blanks()
56
+ if @ctxt.keep_blanks?
57
+ assert_instance_of(TrueClass, @ctxt.keep_blanks?)
58
+ else
59
+ assert_instance_of(FalseClass, @ctxt.keep_blanks?)
60
+ end
61
+ end
62
+
63
+ if ENV['NOTWORKING']
64
+ def test_ruby_xml_parser_context_num_chars()
65
+ assert_equal(17, @ctxt.num_chars)
66
+ end
67
+ end
68
+
69
+ def test_ruby_xml_parser_context_replace_entities()
70
+ if @ctxt.replace_entities?
71
+ assert_instance_of(TrueClass, @ctxt.replace_entities?)
72
+ else
73
+ assert_instance_of(FalseClass, @ctxt.replace_entities?)
74
+ end
75
+ end
76
+
77
+ def test_ruby_xml_parser_context_space_depth()
78
+ assert_equal(1, @ctxt.space_depth)
79
+ end
80
+
81
+ def test_ruby_xml_parser_context_subset_external()
82
+ assert(!@ctxt.subset_external?)
83
+ end
84
+
85
+ def test_ruby_xml_parser_context_data_directory_get()
86
+ # assert_instance_of(String, @ctxt.data_directory)
87
+ end
88
+ end # TC_XML_Parser_Context
@@ -1,109 +1,112 @@
1
- require 'libxml'
2
- require 'test/unit'
3
-
4
- class TC_XML_Reader < Test::Unit::TestCase
5
-
6
- SIMPLE_XML = File.join(File.dirname(__FILE__), 'model/simple.xml')
7
-
8
- def test_new_file
9
- reader = XML::Reader.file(SIMPLE_XML)
10
- do_test_simple(reader)
11
- assert_raises(RuntimeError) { XML::Reader.file('/does/not/exist') }
12
- end
13
-
14
- def test_new_data
15
- reader = XML::Reader.new(File.read(SIMPLE_XML))
16
- do_test_simple(reader)
17
- end
18
-
19
- def test_new_walker
20
- reader = XML::Reader.walker(XML::Document.file(SIMPLE_XML))
21
- do_test_simple(reader)
22
- end
23
-
24
- def test_reader_error
25
- reader = XML::Reader.new('<foo/>')
26
- assert_raises(RuntimeError) { reader.set_error_handler }
27
- called = false
28
- reader.set_error_handler { |*a| called = true }
29
- while reader.read > 0; end
30
- assert(!called)
31
- reader = XML::Reader.new('<foo blah')
32
- reader.set_error_handler do |*a|
33
- assert_equal(5, a.size)
34
- assert_equal(reader, a[0])
35
- assert_equal(XML::Reader::SEVERITY_ERROR, a[2])
36
- assert_nil(a[3])
37
- assert_equal(1, a[4])
38
- called = true
39
- end
40
- while reader.read > 0; end
41
- assert(called)
42
- end
43
-
44
- def test_attr
45
- parser = XML::Reader.new("<foo x='1' y='2'/>")
46
- assert_equal(1, parser.read)
47
- assert_equal('foo', parser.name)
48
- assert_equal('1', parser['x'])
49
- assert_equal('1', parser[0])
50
- assert_equal('2', parser['y'])
51
- assert_equal('2', parser[1])
52
- assert_equal(nil, parser['z'])
53
- assert_equal(nil, parser[2])
54
- end
55
-
56
- def test_value
57
- parser = XML::Reader.new("<foo><bar>1</bar><bar>2</bar><bar>3</bar></foo>")
58
- assert_equal(1, parser.read)
59
- assert_equal('foo', parser.name)
60
- assert_equal(nil, parser.value)
61
- 3.times do |i|
62
- assert_equal(1, parser.read)
63
- assert_equal(XML::Reader::TYPE_ELEMENT, parser.node_type)
64
- assert_equal('bar', parser.name)
65
- assert_equal(1, parser.read)
66
- assert_equal(XML::Reader::TYPE_TEXT, parser.node_type)
67
- assert_equal((i + 1).to_s, parser.value)
68
- assert_equal(1, parser.read)
69
- assert_equal(XML::Reader::TYPE_END_ELEMENT, parser.node_type)
70
- end
71
- end
72
-
73
- def test_expand
74
- reader = XML::Reader.file(SIMPLE_XML)
75
- reader.read
76
- reader.expand
77
- GC.start
78
- reader.close
79
- end
80
-
81
- def do_test_simple(reader)
82
- node_types = []
83
- 19.times do
84
- assert_equal(1, reader.read)
85
- node_types << reader.node_type
86
- end
87
- assert_equal(0, reader.read)
88
- assert_equal(node_types,
89
- [XML::Reader::TYPE_ELEMENT,
90
- XML::Reader::TYPE_SIGNIFICANT_WHITESPACE,
91
- XML::Reader::TYPE_ELEMENT,
92
- XML::Reader::TYPE_TEXT,
93
- XML::Reader::TYPE_END_ELEMENT,
94
- XML::Reader::TYPE_SIGNIFICANT_WHITESPACE,
95
- XML::Reader::TYPE_ELEMENT,
96
- XML::Reader::TYPE_SIGNIFICANT_WHITESPACE,
97
- XML::Reader::TYPE_ELEMENT,
98
- XML::Reader::TYPE_TEXT,
99
- XML::Reader::TYPE_END_ELEMENT,
100
- XML::Reader::TYPE_SIGNIFICANT_WHITESPACE,
101
- XML::Reader::TYPE_ELEMENT,
102
- XML::Reader::TYPE_TEXT,
103
- XML::Reader::TYPE_END_ELEMENT,
104
- XML::Reader::TYPE_SIGNIFICANT_WHITESPACE,
105
- XML::Reader::TYPE_END_ELEMENT,
106
- XML::Reader::TYPE_SIGNIFICANT_WHITESPACE,
107
- XML::Reader::TYPE_END_ELEMENT])
108
- end
109
- end
1
+ require 'libxml'
2
+ require 'test/unit'
3
+
4
+ class TC_XML_Reader < Test::Unit::TestCase
5
+
6
+ SIMPLE_XML = File.join(File.dirname(__FILE__), 'model/simple.xml')
7
+
8
+ def test_new_file
9
+ reader = XML::Reader.file(SIMPLE_XML)
10
+ do_test_simple(reader)
11
+ assert_raises(RuntimeError) { XML::Reader.file('/does/not/exist') }
12
+ end
13
+
14
+ def test_new_data
15
+ reader = XML::Reader.new(File.read(SIMPLE_XML))
16
+ do_test_simple(reader)
17
+ end
18
+
19
+ def test_new_walker
20
+ reader = XML::Reader.walker(XML::Document.file(SIMPLE_XML))
21
+ do_test_simple(reader)
22
+ end
23
+
24
+ def test_reader_error
25
+ reader = XML::Reader.new('<foo/>')
26
+ assert_raises(RuntimeError) { reader.set_error_handler }
27
+ called = false
28
+ reader.set_error_handler { |*a| called = true }
29
+ while reader.read > 0; end
30
+ assert(!called)
31
+ reader = XML::Reader.new('<foo blah')
32
+ reader.set_error_handler do |*a|
33
+ assert_equal(5, a.size)
34
+ assert_equal(reader, a[0])
35
+ assert_equal(XML::Reader::SEVERITY_ERROR, a[2])
36
+ assert_nil(a[3])
37
+ assert_equal(1, a[4])
38
+ called = true
39
+ end
40
+ while reader.read > 0; end
41
+ assert(called)
42
+ end
43
+
44
+ def test_attr
45
+ parser = XML::Reader.new("<foo x='1' y='2'/>")
46
+ assert_equal(1, parser.read)
47
+ assert_equal('foo', parser.name)
48
+ assert_equal('1', parser['x'])
49
+ assert_equal('1', parser[0])
50
+ assert_equal('2', parser['y'])
51
+ assert_equal('2', parser[1])
52
+ assert_equal(nil, parser['z'])
53
+ assert_equal(nil, parser[2])
54
+ end
55
+
56
+ def test_value
57
+ parser = XML::Reader.new("<foo><bar>1</bar><bar>2</bar><bar>3</bar></foo>")
58
+ assert_equal(1, parser.read)
59
+ assert_equal('foo', parser.name)
60
+ assert_equal(nil, parser.value)
61
+ 3.times do |i|
62
+ assert_equal(1, parser.read)
63
+ assert_equal(XML::Reader::TYPE_ELEMENT, parser.node_type)
64
+ assert_equal('bar', parser.name)
65
+ assert_equal(1, parser.read)
66
+ assert_equal(XML::Reader::TYPE_TEXT, parser.node_type)
67
+ assert_equal((i + 1).to_s, parser.value)
68
+ assert_equal(1, parser.read)
69
+ assert_equal(XML::Reader::TYPE_END_ELEMENT, parser.node_type)
70
+ end
71
+ end
72
+
73
+ def test_expand
74
+ reader = XML::Reader.file(SIMPLE_XML)
75
+ reader.read
76
+ node = reader.expand
77
+ doc = node.doc
78
+ reader.close
79
+ GC.start
80
+
81
+ doc.standalone?
82
+ end
83
+
84
+ def do_test_simple(reader)
85
+ node_types = []
86
+ 19.times do
87
+ assert_equal(1, reader.read)
88
+ node_types << reader.node_type
89
+ end
90
+ assert_equal(0, reader.read)
91
+ assert_equal(node_types,
92
+ [XML::Reader::TYPE_ELEMENT,
93
+ XML::Reader::TYPE_SIGNIFICANT_WHITESPACE,
94
+ XML::Reader::TYPE_ELEMENT,
95
+ XML::Reader::TYPE_TEXT,
96
+ XML::Reader::TYPE_END_ELEMENT,
97
+ XML::Reader::TYPE_SIGNIFICANT_WHITESPACE,
98
+ XML::Reader::TYPE_ELEMENT,
99
+ XML::Reader::TYPE_SIGNIFICANT_WHITESPACE,
100
+ XML::Reader::TYPE_ELEMENT,
101
+ XML::Reader::TYPE_TEXT,
102
+ XML::Reader::TYPE_END_ELEMENT,
103
+ XML::Reader::TYPE_SIGNIFICANT_WHITESPACE,
104
+ XML::Reader::TYPE_ELEMENT,
105
+ XML::Reader::TYPE_TEXT,
106
+ XML::Reader::TYPE_END_ELEMENT,
107
+ XML::Reader::TYPE_SIGNIFICANT_WHITESPACE,
108
+ XML::Reader::TYPE_END_ELEMENT,
109
+ XML::Reader::TYPE_SIGNIFICANT_WHITESPACE,
110
+ XML::Reader::TYPE_END_ELEMENT])
111
+ end
112
+ end