libxml-ruby 0.5.4 → 0.6.0

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