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,16 @@
1
+ require "libxml"
2
+ require 'test/unit'
3
+
4
+ class TC_XML_Parser2 < Test::Unit::TestCase
5
+ def setup()
6
+ @xp = XML::Parser.new()
7
+ end
8
+
9
+ def teardown()
10
+ @xp = nil
11
+ end
12
+
13
+ def test_ruby_xml_parser_new()
14
+ assert_instance_of(XML::Parser, @xp)
15
+ end
16
+ end # TC_XML_Document
@@ -0,0 +1,23 @@
1
+ # $Id: tc_xml_parser3.rb 251 2008-01-22 18:12:00Z transami $
2
+ require "libxml"
3
+ require 'test/unit'
4
+
5
+ class TC_XML_Parser3 < Test::Unit::TestCase
6
+ def setup()
7
+ @xp = XML::Parser.new()
8
+ assert_instance_of(XML::Parser, @xp)
9
+ s = @xp.string = '<u>a</u>'
10
+ assert_instance_of(String, s)
11
+ assert_instance_of(String, @xp.string)
12
+ assert_equal(s, @xp.string)
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(String, @xp.string)
22
+ end
23
+ end
@@ -0,0 +1,33 @@
1
+ # $Id: tc_xml_parser4.rb 251 2008-01-22 18:12:00Z transami $
2
+ require "libxml"
3
+ require 'test/unit'
4
+
5
+ class TC_XML_Parser4 < Test::Unit::TestCase
6
+ def setup()
7
+ @xp1 = XML::Parser.new()
8
+ assert_instance_of(XML::Parser, @xp1)
9
+ s1 = @xp1.string = '<u>a</u>'
10
+ assert_instance_of(String, s1)
11
+ assert_instance_of(String, @xp1.string)
12
+ assert_equal(s1, @xp1.string)
13
+
14
+ @xp2 = XML::Parser.string('<u>a</u>')
15
+ assert_instance_of(XML::Parser, @xp2)
16
+ assert_instance_of(String, @xp2.string)
17
+ assert_equal(s1, @xp2.string)
18
+ assert_equal(@xp1.string, @xp2.string)
19
+ end
20
+
21
+ def teardown()
22
+ @xp1 = nil
23
+ @xp2 = nil
24
+ end
25
+
26
+ def test_ruby_xml_parser_new()
27
+ assert_instance_of(XML::Parser, @xp1)
28
+ assert_instance_of(String, @xp1.string)
29
+ assert_instance_of(XML::Parser, @xp2)
30
+ assert_instance_of(String, @xp2.string)
31
+ assert_equal(@xp1.string, @xp2.string)
32
+ end
33
+ end # TC_XML_Document
@@ -0,0 +1,27 @@
1
+ # $Id: tc_xml_parser5.rb 251 2008-01-22 18:12:00Z transami $
2
+ require "libxml"
3
+ require 'test/unit'
4
+
5
+ class TC_XML_Parser5 < Test::Unit::TestCase
6
+ def setup()
7
+ @xp = XML::Parser.new()
8
+ assert_instance_of(XML::Parser, @xp)
9
+ s = @xp.string = '<u>a</u>'
10
+ assert_instance_of(String, s)
11
+ assert_instance_of(String, @xp.string)
12
+ assert_equal(s, @xp.string)
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(String, @xp.string)
25
+ assert_instance_of(XML::Document, @doc)
26
+ end
27
+ end
@@ -0,0 +1,23 @@
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
@@ -0,0 +1,28 @@
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
@@ -0,0 +1,32 @@
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
+
@@ -0,0 +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
@@ -0,0 +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
+ 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
@@ -0,0 +1,104 @@
1
+ require 'libxml'
2
+ require 'test/unit'
3
+
4
+ # TODO this is woefully inadequate
5
+
6
+ class TC_XML_SaxParser2 < Test::Unit::TestCase
7
+ class TestCaseCallbacks
8
+ include XML::SaxParser::Callbacks
9
+
10
+ attr_accessor :test
11
+
12
+ def initialize
13
+ @test = Hash.new { |h,k| h[k] = [] }
14
+ @i = 0
15
+ end
16
+
17
+ def on_start_document
18
+ @test[:startdoc] << @i+=1
19
+ end
20
+
21
+ def on_start_element(name, attr_hash)
22
+ @test[:startel] << [@i+=1,name,attr_hash]
23
+ end
24
+
25
+ def on_characters(chars)
26
+ @test[:chars] << [@i+=1,chars]
27
+ end
28
+
29
+ def on_comment(msg)
30
+ @test[:comment] << [@i+=1,msg]
31
+ end
32
+
33
+ def on_processing_instruction(target, data)
34
+ @test[:pinstr] << [@i+=1, target, data]
35
+ end
36
+
37
+ def on_cdata_block(cdata)
38
+ @test[:cdata] << [@i+=1,cdata]
39
+ end
40
+
41
+ def on_end_element(name)
42
+ @test[:endel] << [@i+=1,name]
43
+ end
44
+
45
+ def on_end_document
46
+ @test[:enddoc] << @i+=1
47
+ end
48
+ end
49
+
50
+ def setup()
51
+ @xp = XML::SaxParser.new
52
+ end
53
+
54
+ def teardown()
55
+ @xp = nil
56
+ end
57
+
58
+ def test_string_without_callbacks
59
+ @xp.string = File.read(File.join(File.dirname(__FILE__), 'model/saxtest.xml'))
60
+ assert_equal true, @xp.parse
61
+ end
62
+
63
+ def test_file_without_callbacks
64
+ @xp.filename = File.join(File.dirname(__FILE__), 'model/saxtest.xml')
65
+ assert_equal true, @xp.parse
66
+ end
67
+
68
+ def test_callbacks_with_string
69
+ @xp.callbacks = TestCaseCallbacks.new
70
+ @xp.string = File.read(File.join(File.dirname(__FILE__), 'model/saxtest.xml'))
71
+ do_test
72
+ end
73
+
74
+ def test_callbacks_with_file
75
+ @xp.callbacks = TestCaseCallbacks.new
76
+ @xp.filename = File.join(File.dirname(__FILE__), 'model/saxtest.xml')
77
+ do_test
78
+ end
79
+
80
+ def do_test
81
+ @xp.parse
82
+ assert_equal [1], @xp.callbacks.test[:startdoc]
83
+ assert_equal [[2,'test',{'uga'=>'booga','foo'=>'bar'}],[3,'fixnum',{}],[6,'fixnum',{}]],
84
+ @xp.callbacks.test[:startel]
85
+ assert_equal [[4,'one'],[7,'two'],[9,"\n "],[11,"\n "],[13,"\n "],[15,"\n"]],
86
+ @xp.callbacks.test[:chars]
87
+ assert_equal [[10, ' msg ']], @xp.callbacks.test[:comment]
88
+ assert_equal [[12, 'custom', 'foo="bar"']], @xp.callbacks.test[:pinstr]
89
+ assert_equal [[14, 'here it goes']], @xp.callbacks.test[:cdata]
90
+ assert_equal [[5,'fixnum'],[8,'fixnum'],[16,'test']], @xp.callbacks.test[:endel]
91
+ assert_equal [17], @xp.callbacks.test[:enddoc]
92
+ end
93
+
94
+ def test_doctype
95
+ @xp.callbacks = TestCaseCallbacks.new
96
+ @xp.string = <<-EOS
97
+ <?xml version="1.0" encoding="UTF-8"?>
98
+ <!DOCTYPE ONIXmessage SYSTEM "http://www.editeur.org/onix/2.1/short/onix-international.dtd">
99
+ <ONIXmessage release="2.1">
100
+ </ONIXmessage>
101
+ EOS
102
+ @xp.parse
103
+ end
104
+ end # TC_XML_Sax_Parser