libxml-ruby 0.3.6 → 0.3.8

Sign up to get free protection for your applications and to get access to all the features.
Files changed (54) hide show
  1. data/CHANGELOG +28 -3
  2. data/LICENSE +2 -2
  3. data/README +21 -6
  4. data/Rakefile +13 -8
  5. data/TODO +5 -12
  6. data/ext/xml/extconf.rb +17 -17
  7. data/ext/xml/libxml.c +2 -2
  8. data/ext/xml/libxml.h +5 -2
  9. data/ext/xml/libxml.rb +107 -0
  10. data/ext/xml/ruby_xml_dtd.c +3 -3
  11. data/ext/xml/ruby_xml_node.c +112 -25
  12. data/ext/xml/ruby_xml_node_set.c +61 -10
  13. data/ext/xml/ruby_xml_parser.c +62 -8
  14. data/ext/xml/ruby_xml_sax_parser.c +298 -53
  15. data/ext/xml/ruby_xml_sax_parser.h +32 -1
  16. data/ext/xml/ruby_xml_schema.c +1 -1
  17. data/ext/xml/ruby_xml_schema.h +1 -1
  18. data/ext/xml/ruby_xml_xpath.c +7 -1
  19. data/ext/xml/ruby_xml_xpath_context.c +2 -1
  20. data/ext/xml/ruby_xml_xpath_context.h +2 -2
  21. data/ext/xml/ruby_xml_xpointer_context.c +1 -2
  22. data/ext/xml/sax_parser_callbacks.inc +202 -0
  23. data/tests/copy_bug.rb +1 -2
  24. data/tests/dtd-test.rb +1 -1
  25. data/tests/libxml_test.rb +2 -0
  26. data/tests/model/saxtest.xml +5 -0
  27. data/tests/runner.rb +2 -4
  28. data/tests/schema-test.rb +1 -1
  29. data/tests/tc_xml_document.rb +2 -2
  30. data/tests/tc_xml_document_write.rb +2 -2
  31. data/tests/tc_xml_document_write2.rb +2 -2
  32. data/tests/tc_xml_document_write3.rb +2 -2
  33. data/tests/tc_xml_node.rb +2 -2
  34. data/tests/tc_xml_node2.rb +2 -2
  35. data/tests/tc_xml_node3.rb +28 -0
  36. data/tests/tc_xml_node4.rb +84 -0
  37. data/tests/tc_xml_node_set.rb +2 -2
  38. data/tests/tc_xml_node_set2.rb +38 -0
  39. data/tests/tc_xml_node_xlink.rb +2 -2
  40. data/tests/tc_xml_parser.rb +2 -2
  41. data/tests/tc_xml_parser2.rb +2 -2
  42. data/tests/tc_xml_parser3.rb +2 -2
  43. data/tests/tc_xml_parser4.rb +2 -2
  44. data/tests/tc_xml_parser5.rb +2 -2
  45. data/tests/tc_xml_parser6.rb +2 -2
  46. data/tests/tc_xml_parser7.rb +2 -2
  47. data/tests/tc_xml_parser8.rb +32 -0
  48. data/tests/tc_xml_parser_context.rb +2 -2
  49. data/tests/tc_xml_xinclude.rb +2 -2
  50. data/tests/tc_xml_xpath.rb +3 -2
  51. data/tests/tc_xml_xpointer.rb +3 -2
  52. data/tests/test_xml_sax_parser.rb +64 -0
  53. metadata +13 -6
  54. data/tests/tc_default_validation.rb +0 -0
@@ -0,0 +1,84 @@
1
+ # $Id: tc_xml_node4.rb,v 1.2 2006/04/17 13:30:19 roscopeco Exp $
2
+ require "libxml_test"
3
+ require 'test/unit'
4
+
5
+ class TC_XML_Node2 < Test::Unit::TestCase
6
+ def setup()
7
+ xp = XML::Parser.new()
8
+ str = '<ruby_array uga="booga" foo="bar"><fixnum>one</fixnum><fixnum>two</fixnum></ruby_array>'
9
+ assert_equal(str, xp.string = str)
10
+ doc = xp.parse
11
+ assert_instance_of(XML::Document, doc)
12
+ assert_instance_of(XML::Node, doc.root)
13
+ @root = doc.root
14
+ assert_instance_of(XML::Node, @root)
15
+ end
16
+
17
+ def teardown()
18
+ @root = nil
19
+ end
20
+
21
+ def test_xml_node_eql?()
22
+ first1 = @root.child
23
+ first2 = @root.child
24
+
25
+ assert_not_equal first1.object_id, first2.object_id
26
+ assert first1.eql?(first2)
27
+ assert first2.eql?(first1)
28
+
29
+ assert_equal first1, first2
30
+ end
31
+
32
+ def test_xml_node_hash()
33
+ first1 = @root.child
34
+ first2 = @root.child
35
+
36
+ assert_not_equal first1.object_id, first2.object_id
37
+ assert_equal first1.hash, first2.hash
38
+ end
39
+
40
+ def test_01_xml_node_remove!()
41
+ first = @root.child
42
+
43
+ assert_equal 'fixnum', first.name
44
+ assert_equal 'fixnum', first.next.name
45
+
46
+ first.next.remove!
47
+
48
+ assert_equal 'fixnum', first.name
49
+ assert_equal nil, first.next
50
+ end
51
+
52
+ def test_02_xml_node_remove!()
53
+ first = @root.child
54
+
55
+ assert_equal 'fixnum', first.name
56
+ assert_equal 'fixnum', first.next.name
57
+ assert_equal 'one', first.content
58
+
59
+ first.remove!
60
+
61
+ first = @root.child
62
+ assert_equal 'fixnum', first.name
63
+ assert_equal nil, first.next
64
+ assert_equal 'two', first.content
65
+ end
66
+
67
+ # TODO need to test namespace support
68
+ def test_xml_node_find_first()
69
+ first = @root.find_first('//fixnum')
70
+
71
+ assert_equal 'one', first.content
72
+ end
73
+
74
+ def test_xml_node_property_set_remove()
75
+ assert_equal 'booga', @root['uga']
76
+ @root['uga'] = nil
77
+ assert_equal nil , @root['uga']
78
+ assert_equal "<ruby_array foo=\"bar\">\n <fixnum>one</fixnum>\n <fixnum>two</fixnum>\n</ruby_array>",
79
+ @root.to_s
80
+ end
81
+
82
+
83
+
84
+ end
@@ -1,5 +1,5 @@
1
- # $Id: tc_xml_node_set.rb,v 1.2 2006/02/21 20:40:16 roscopeco Exp $
2
- require "#{File.dirname(__FILE__)}/../ext/xml/libxml" unless defined?(XML)
1
+ # $Id: tc_xml_node_set.rb,v 1.3 2006/04/17 13:30:19 roscopeco Exp $
2
+ require "libxml_test"
3
3
  require 'test/unit'
4
4
 
5
5
  class TC_XML_Node_Set < Test::Unit::TestCase
@@ -0,0 +1,38 @@
1
+ # $Id: tc_xml_node_set2.rb,v 1.2 2006/04/17 13:30:18 roscopeco Exp $
2
+ require "libxml_test"
3
+ require 'test/unit'
4
+
5
+ class TC_XML_Node_Set < Test::Unit::TestCase
6
+ def setup()
7
+ xp = XML::Parser.new()
8
+ str = '<ruby_array uga="booga" foo="bar"><fixnum>one</fixnum><fixnum>two</fixnum></ruby_array>'
9
+ assert_equal(str, xp.string = str)
10
+ doc = xp.parse
11
+ assert_instance_of(XML::Document, doc)
12
+ @one = doc.root.child
13
+ @two = @one.next
14
+ @set = doc.find('/ruby_array/fixnum')
15
+ @emptyset = doc.find('/fixnum')
16
+ assert_instance_of(XML::Node::Set, @set)
17
+ end
18
+
19
+ def teardown()
20
+ @set, @emptyset, @one, @two = [nil] * 4
21
+ end
22
+
23
+ def test_libxml_nodeset_to_a()
24
+ assert_equal [@one, @two], @set.to_a
25
+ assert_equal [], @emptyset.to_a
26
+ end
27
+
28
+ def test_libxml_nodeset_empty?()
29
+ assert ! @set.empty?
30
+ assert @emptyset.empty?
31
+ end
32
+
33
+ def test_libxml_nodeset_first()
34
+ assert_equal @one.to_s, @set.first.to_s
35
+ assert_equal nil, @emptyset.first
36
+ end
37
+
38
+ end # TC_XML_Document
@@ -1,5 +1,5 @@
1
- # $Id: tc_xml_node_xlink.rb,v 1.2 2006/02/21 20:40:16 roscopeco Exp $
2
- require "#{File.dirname(__FILE__)}/../ext/xml/libxml" unless defined?(XML)
1
+ # $Id: tc_xml_node_xlink.rb,v 1.3 2006/04/17 13:30:18 roscopeco Exp $
2
+ require "libxml_test"
3
3
  require 'test/unit'
4
4
 
5
5
  class TC_XML_Node3 < Test::Unit::TestCase
@@ -1,5 +1,5 @@
1
- # $Id: tc_xml_parser.rb,v 1.2 2006/02/21 20:40:16 roscopeco Exp $
2
- require "#{File.dirname(__FILE__)}/../ext/xml/libxml" unless defined?(XML)
1
+ # $Id: tc_xml_parser.rb,v 1.3 2006/04/17 13:30:19 roscopeco Exp $
2
+ require "libxml_test"
3
3
  require 'test/unit'
4
4
 
5
5
  class TC_XML_Parser < Test::Unit::TestCase
@@ -1,5 +1,5 @@
1
- # $Id: tc_xml_parser2.rb,v 1.2 2006/02/21 20:40:16 roscopeco Exp $
2
- require "#{File.dirname(__FILE__)}/../ext/xml/libxml" unless defined?(XML)
1
+ # $Id: tc_xml_parser2.rb,v 1.3 2006/04/17 13:30:18 roscopeco Exp $
2
+ require "libxml_test"
3
3
  require 'test/unit'
4
4
 
5
5
  class TC_XML_Parser2 < Test::Unit::TestCase
@@ -1,5 +1,5 @@
1
- # $Id: tc_xml_parser3.rb,v 1.2 2006/02/21 20:40:16 roscopeco Exp $
2
- require "#{File.dirname(__FILE__)}/../ext/xml/libxml" unless defined?(XML)
1
+ # $Id: tc_xml_parser3.rb,v 1.3 2006/04/17 13:30:18 roscopeco Exp $
2
+ require "libxml_test"
3
3
  require 'test/unit'
4
4
 
5
5
  class TC_XML_Parser3 < Test::Unit::TestCase
@@ -1,5 +1,5 @@
1
- # $Id: tc_xml_parser4.rb,v 1.2 2006/02/21 20:40:16 roscopeco Exp $
2
- require "#{File.dirname(__FILE__)}/../ext/xml/libxml" unless defined?(XML)
1
+ # $Id: tc_xml_parser4.rb,v 1.3 2006/04/17 13:30:19 roscopeco Exp $
2
+ require "libxml_test"
3
3
  require 'test/unit'
4
4
 
5
5
  class TC_XML_Parser4 < Test::Unit::TestCase
@@ -1,5 +1,5 @@
1
- # $Id: tc_xml_parser5.rb,v 1.2 2006/02/21 20:40:16 roscopeco Exp $
2
- require "#{File.dirname(__FILE__)}/../ext/xml/libxml" unless defined?(XML)
1
+ # $Id: tc_xml_parser5.rb,v 1.3 2006/04/17 13:30:19 roscopeco Exp $
2
+ require "libxml_test"
3
3
  require 'test/unit'
4
4
 
5
5
  class TC_XML_Parser5 < Test::Unit::TestCase
@@ -1,5 +1,5 @@
1
- # $Id: tc_xml_parser6.rb,v 1.2 2006/02/21 20:40:16 roscopeco Exp $
2
- require "#{File.dirname(__FILE__)}/../ext/xml/libxml" unless defined?(XML)
1
+ # $Id: tc_xml_parser6.rb,v 1.3 2006/04/17 13:30:21 roscopeco Exp $
2
+ require "libxml_test"
3
3
  require 'test/unit'
4
4
 
5
5
  class TC_XML_Parser6 < Test::Unit::TestCase
@@ -1,5 +1,5 @@
1
- # $Id: tc_xml_parser7.rb,v 1.2 2006/02/21 20:40:16 roscopeco Exp $
2
- require "#{File.dirname(__FILE__)}/../ext/xml/libxml" unless defined?(XML)
1
+ # $Id: tc_xml_parser7.rb,v 1.3 2006/04/17 13:30:18 roscopeco Exp $
2
+ require "libxml_test"
3
3
  require 'test/unit'
4
4
 
5
5
  class TC_XML_Parser7 < Test::Unit::TestCase
@@ -0,0 +1,32 @@
1
+ # $Id: tc_xml_parser8.rb,v 1.3 2006/04/17 13:30:22 roscopeco Exp $
2
+ require "libxml_test"
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,5 +1,5 @@
1
- # $Id: tc_xml_parser_context.rb,v 1.2 2006/02/21 20:40:16 roscopeco Exp $
2
- require "#{File.dirname(__FILE__)}/../ext/xml/libxml" unless defined?(XML)
1
+ # $Id: tc_xml_parser_context.rb,v 1.3 2006/04/17 13:30:18 roscopeco Exp $
2
+ require "libxml_test"
3
3
  require 'test/unit'
4
4
 
5
5
  class TC_XML_Parser_Context < Test::Unit::TestCase
@@ -1,5 +1,5 @@
1
- # $Id: tc_xml_xinclude.rb,v 1.2 2006/02/21 20:40:16 roscopeco Exp $
2
- require "#{File.dirname(__FILE__)}/../ext/xml/libxml" unless defined?(XML)
1
+ # $Id: tc_xml_xinclude.rb,v 1.3 2006/04/17 13:30:17 roscopeco Exp $
2
+ require "libxml_test"
3
3
  require 'test/unit'
4
4
 
5
5
  class TC_XML_XInclude < Test::Unit::TestCase
@@ -1,5 +1,6 @@
1
- # $Id: tc_xml_xpath.rb,v 1.2 2006/02/21 20:40:16 roscopeco Exp $
2
- require "#{File.dirname(__FILE__)}/../ext/xml/libxml" unless defined?(XML)
1
+ # $Id: tc_xml_xpath.rb,v 1.3 2006/04/17 13:30:19 roscopeco Exp $
2
+ require "libxml_test"
3
+ require "test/unit"
3
4
 
4
5
  class TC_XML_XPath < Test::Unit::TestCase
5
6
  def setup()
@@ -1,5 +1,6 @@
1
- # $Id: tc_xml_xpointer.rb,v 1.2 2006/02/21 20:40:16 roscopeco Exp $
2
- require "#{File.dirname(__FILE__)}/../ext/xml/libxml" unless defined?(XML)
1
+ # $Id: tc_xml_xpointer.rb,v 1.3 2006/04/17 13:30:19 roscopeco Exp $
2
+ require "libxml_test"
3
+ require "test/unit"
3
4
 
4
5
  class TC_XML_XPointer < Test::Unit::TestCase
5
6
  def setup()
@@ -0,0 +1,64 @@
1
+ # $Id: test_xml_sax_parser.rb,v 1.3 2006/04/17 13:30:17 roscopeco Exp $
2
+ require "libxml_test"
3
+ require 'test/unit'
4
+
5
+ # TODO this is woefully inadequate
6
+
7
+ class TC_XML_Parser < Test::Unit::TestCase
8
+ def setup()
9
+ @xp = XML::SaxParser.new
10
+ @test = Hash.new { |h,k| h[k] = [] }
11
+
12
+ i = 0
13
+
14
+ @xp.on_start_document { @test[:startdoc] << i+=1 }
15
+ @xp.on_start_element { |name, attr_hash| @test[:startel] << [i+=1,name,attr_hash] }
16
+ @xp.on_characters { |chars| @test[:chars] << [i+=1,chars] }
17
+ @xp.on_comment { |msg| @test[:comment] << [i+=1,msg] }
18
+ @xp.on_processing_instruction { |target, data| @test[:pinstr] << [i+=1, target, data] }
19
+ @xp.on_cdata_block { |cdata| @test[:cdata] << [i+=1,cdata] }
20
+ @xp.on_end_element { |name| @test[:endel] << [i+=1,name] }
21
+ @xp.on_end_document { @test[:enddoc] << i+=1 }
22
+ end
23
+
24
+ def teardown()
25
+ @xp = nil
26
+ end
27
+
28
+ def test_string_without_callbacks
29
+ xp = XML::SaxParser.new
30
+ xp.string = File.read(File.join(File.dirname(__FILE__), 'model/saxtest.xml'))
31
+ assert_equal true, xp.parse
32
+ end
33
+
34
+ def test_file_without_callbacks
35
+ xp = XML::SaxParser.new
36
+ xp.filename = File.join(File.dirname(__FILE__), 'model/saxtest.xml')
37
+ assert_equal true, xp.parse
38
+ end
39
+
40
+ def test_callbacks_with_string
41
+ @xp.string = File.read(File.join(File.dirname(__FILE__), 'model/saxtest.xml'))
42
+ do_test
43
+ end
44
+
45
+ def test_callbacks_with_file
46
+ @xp.filename = File.join(File.dirname(__FILE__), 'model/saxtest.xml')
47
+ do_test
48
+ end
49
+
50
+ def do_test
51
+ @xp.parse
52
+
53
+ assert_equal [1], @test[:startdoc]
54
+ assert_equal [[2,'test',{'uga'=>'booga','foo'=>'bar'}],[3,'fixnum',{}],[6,'fixnum',{}]],
55
+ @test[:startel]
56
+ assert_equal [[4,'one'],[7,'two'],[9,"\n "],[11,"\n "],[13,"\n "],[15,"\n"]],
57
+ @test[:chars]
58
+ assert_equal [[10, ' msg ']], @test[:comment]
59
+ assert_equal [[12, 'custom', 'foo="bar"']], @test[:pinstr]
60
+ assert_equal [[14, 'here it goes']], @test[:cdata]
61
+ assert_equal [[5,'fixnum'],[8,'fixnum'],[16,'test']], @test[:endel]
62
+ assert_equal [17], @test[:enddoc]
63
+ end
64
+ end # TC_XML_Sax_Parser
metadata CHANGED
@@ -3,8 +3,8 @@ rubygems_version: 0.8.11
3
3
  specification_version: 1
4
4
  name: libxml-ruby
5
5
  version: !ruby/object:Gem::Version
6
- version: 0.3.6
7
- date: 2006-02-23 00:00:00 +00:00
6
+ version: 0.3.8
7
+ date: 2006-04-24 00:00:00 +01:00
8
8
  summary: LibXML2 bindings for Ruby
9
9
  require_paths:
10
10
  - ext
@@ -31,7 +31,6 @@ files:
31
31
  - ext/xml/extconf.rb
32
32
  - Rakefile
33
33
  - README
34
- - PATCHES
35
34
  - TODO
36
35
  - LICENSE
37
36
  - CHANGELOG
@@ -55,6 +54,7 @@ files:
55
54
  - ext/xml/ruby_xml_xpath_context.c
56
55
  - ext/xml/cbg.c
57
56
  - ext/xml/ruby_xml_input_cbg.c
57
+ - ext/xml/sax_parser_callbacks.inc
58
58
  - ext/xml/ruby_xml_node.h
59
59
  - ext/xml/ruby_xml_xinclude.h
60
60
  - ext/xml/ruby_xml_schema.h
@@ -74,25 +74,30 @@ files:
74
74
  - ext/xml/ruby_xml_tree.h
75
75
  - ext/xml/ruby_xml_parser.h
76
76
  - ext/xml/libxml.h
77
+ - tests/test_xml_sax_parser.rb
77
78
  - tests/tc_xml_node2.rb
78
79
  - tests/tc_xml_parser2.rb
79
80
  - tests/tc_xml_parser.rb
81
+ - tests/tc_xml_node3.rb
80
82
  - tests/model
81
83
  - tests/tc_xml_parser3.rb
82
84
  - tests/tc_xml_parser_context.rb
83
85
  - tests/tc_xml_node.rb
86
+ - tests/tc_xml_node4.rb
87
+ - tests/tc_xml_parser8.rb
84
88
  - tests/tc_xml_node_set.rb
85
89
  - tests/tc_xml_parser4.rb
86
90
  - tests/tc_xml_document_write2.rb
87
91
  - tests/tc_xml_document_write.rb
88
92
  - tests/tc_xml_document_write3.rb
89
93
  - tests/tc_xml_node_xlink.rb
90
- - tests/tc_default_validation.rb
94
+ - tests/libxml_test.rb
91
95
  - tests/runner.rb
92
96
  - tests/tc_xml_xinclude.rb
93
97
  - tests/tc_xml_parser5.rb
94
98
  - tests/schema-test.rb
95
99
  - tests/tc_xml_xpointer.rb
100
+ - tests/tc_xml_node_set2.rb
96
101
  - tests/tc_xml_document.rb
97
102
  - tests/tc_xml_parser6.rb
98
103
  - tests/copy_bug.rb
@@ -102,7 +107,9 @@ files:
102
107
  - tests/model/rubynet_project
103
108
  - tests/model/rubynet.xml
104
109
  - tests/model/default_validation_bug.rb
110
+ - tests/model/saxtest.xml
105
111
  - tests/model/xinclude.xml
112
+ - ext/xml/libxml.rb
106
113
  test_files:
107
114
  - tests/runner.rb
108
115
  rdoc_options:
@@ -110,8 +117,6 @@ rdoc_options:
110
117
  - Libxml-Ruby API
111
118
  - --main
112
119
  - README
113
- - -o
114
- - rdoc
115
120
  extra_rdoc_files:
116
121
  - README
117
122
  - LICENSE
@@ -134,6 +139,8 @@ extra_rdoc_files:
134
139
  - ext/xml/ruby_xml_xinclude.c
135
140
  - ext/xml/ruby_xml_xpath_context.c
136
141
  - ext/xml/ruby_xml_input_cbg.c
142
+ - ext/xml/libxml.rb
143
+ - ext/xml/extconf.rb
137
144
  executables: []
138
145
 
139
146
  extensions:
File without changes