libxml-ruby 0.6.0-x86-mswin32-60 → 0.7.0-x86-mswin32-60

Sign up to get free protection for your applications and to get access to all the features.
Files changed (171) hide show
  1. data/CHANGES +42 -0
  2. data/README +123 -117
  3. data/doc/classes/XML.html +226 -0
  4. data/doc/classes/XML/Attr.html +969 -0
  5. data/doc/classes/XML/Attributes.html +487 -0
  6. data/doc/classes/XML/Document.html +1423 -0
  7. data/doc/classes/XML/Dtd.html +159 -0
  8. data/doc/classes/XML/Error.html +111 -0
  9. data/doc/classes/XML/HTMLParser.html +330 -0
  10. data/doc/classes/XML/InputCallbacks.html +154 -0
  11. data/doc/classes/XML/NS.html +366 -0
  12. data/doc/classes/XML/Node.html +3292 -0
  13. data/doc/classes/XML/Node/FailedModify.html +111 -0
  14. data/doc/classes/XML/Node/Set.html +435 -0
  15. data/doc/classes/XML/Node/SetNamespace.html +111 -0
  16. data/doc/classes/XML/Node/UnknownType.html +111 -0
  17. data/doc/classes/XML/Parser.html +2178 -0
  18. data/doc/classes/XML/Parser/Context.html +1233 -0
  19. data/doc/classes/XML/Parser/ParseError.html +111 -0
  20. data/doc/classes/XML/Reader.html +2173 -0
  21. data/doc/classes/XML/SaxParser.html +396 -0
  22. data/doc/classes/XML/SiblingEnum.html +142 -0
  23. data/doc/classes/XML/State.html +118 -0
  24. data/doc/classes/XML/Tree.html +224 -0
  25. data/doc/classes/XML/XInclude.html +117 -0
  26. data/doc/classes/XML/XInclude/Error.html +111 -0
  27. data/doc/classes/XML/XMLParserOptions.html +198 -0
  28. data/doc/classes/XML/XPath.html +269 -0
  29. data/doc/classes/XML/XPath/Context.html +193 -0
  30. data/doc/classes/XML/XPath/InvalidPath.html +111 -0
  31. data/doc/classes/XML/XPath/Object.html +439 -0
  32. data/doc/classes/XML/XPointer.html +164 -0
  33. data/doc/classes/XML/XPointer/Context.html +117 -0
  34. data/doc/classes/XML/XPointer/Context/InvalidPath.html +111 -0
  35. data/doc/classes/XML/XPointer/InvalidExpression.html +111 -0
  36. data/doc/classes/singleton.html +114 -0
  37. data/doc/created.rid +1 -0
  38. data/doc/files/CHANGES.html +375 -0
  39. data/doc/files/LICENSE.html +133 -0
  40. data/doc/files/README.html +279 -0
  41. data/doc/files/VERSION.html +107 -0
  42. data/doc/files/ext/libxml/cbg_c.html +101 -0
  43. data/doc/files/ext/libxml/libxml_c.html +101 -0
  44. data/doc/files/ext/libxml/ruby_xml_attr_c.html +101 -0
  45. data/doc/files/ext/libxml/ruby_xml_attributes_c.html +101 -0
  46. data/doc/files/ext/libxml/ruby_xml_document_c.html +101 -0
  47. data/doc/files/ext/libxml/ruby_xml_dtd_c.html +101 -0
  48. data/doc/files/ext/libxml/ruby_xml_html_parser_c.html +101 -0
  49. data/doc/files/ext/libxml/ruby_xml_input_cbg_c.html +101 -0
  50. data/doc/files/ext/libxml/ruby_xml_node_c.html +101 -0
  51. data/doc/files/ext/libxml/ruby_xml_node_set_c.html +101 -0
  52. data/doc/files/ext/libxml/ruby_xml_ns_c.html +101 -0
  53. data/doc/files/ext/libxml/ruby_xml_parser_c.html +101 -0
  54. data/doc/files/ext/libxml/ruby_xml_parser_context_c.html +101 -0
  55. data/doc/files/ext/libxml/ruby_xml_reader_c.html +101 -0
  56. data/doc/files/ext/libxml/ruby_xml_sax_parser_c.html +101 -0
  57. data/doc/files/ext/libxml/ruby_xml_schema_c.html +101 -0
  58. data/doc/files/ext/libxml/ruby_xml_state_c.html +101 -0
  59. data/doc/files/ext/libxml/ruby_xml_tree_c.html +101 -0
  60. data/doc/files/ext/libxml/ruby_xml_xinclude_c.html +101 -0
  61. data/doc/files/ext/libxml/ruby_xml_xpath_c.html +101 -0
  62. data/doc/files/ext/libxml/ruby_xml_xpath_context_c.html +101 -0
  63. data/doc/files/ext/libxml/ruby_xml_xpath_object_c.html +101 -0
  64. data/doc/files/ext/libxml/ruby_xml_xpointer_c.html +101 -0
  65. data/doc/files/ext/libxml/ruby_xml_xpointer_context_c.html +101 -0
  66. data/doc/files/lib/libxml_rb.html +115 -0
  67. data/doc/files/lib/xml/libxml_rb.html +114 -0
  68. data/doc/fr_class_index.html +60 -0
  69. data/doc/fr_file_index.html +56 -0
  70. data/doc/fr_method_index.html +373 -0
  71. data/doc/index.html +24 -0
  72. data/doc/rdoc-style.css +208 -0
  73. data/ext/libxml/cbg.c +76 -76
  74. data/ext/libxml/extconf.rb +308 -308
  75. data/ext/libxml/libxml.c +58 -62
  76. data/ext/libxml/ruby_libxml.h +1 -0
  77. data/ext/libxml/ruby_xml_attr.c +201 -113
  78. data/ext/libxml/ruby_xml_attr.h +6 -9
  79. data/ext/libxml/ruby_xml_attributes.c +268 -0
  80. data/ext/libxml/ruby_xml_attributes.h +17 -0
  81. data/ext/libxml/ruby_xml_document.c +80 -66
  82. data/ext/libxml/ruby_xml_dtd.c +2 -2
  83. data/ext/libxml/ruby_xml_dtd.h +17 -17
  84. data/ext/libxml/ruby_xml_html_parser.c +18 -19
  85. data/ext/libxml/ruby_xml_html_parser.h +29 -29
  86. data/ext/libxml/ruby_xml_input_cbg.c +6 -0
  87. data/ext/libxml/ruby_xml_input_cbg.h +20 -20
  88. data/ext/libxml/ruby_xml_node.c +438 -536
  89. data/ext/libxml/ruby_xml_node.h +17 -27
  90. data/ext/libxml/ruby_xml_node_set.c +10 -9
  91. data/ext/libxml/ruby_xml_node_set.h +20 -20
  92. data/ext/libxml/ruby_xml_ns.c +60 -69
  93. data/ext/libxml/ruby_xml_ns.h +12 -21
  94. data/ext/libxml/ruby_xml_parser.c +54 -53
  95. data/ext/libxml/ruby_xml_parser.h +31 -31
  96. data/ext/libxml/ruby_xml_parser_context.c +37 -91
  97. data/ext/libxml/ruby_xml_parser_context.h +20 -22
  98. data/ext/libxml/ruby_xml_reader.h +14 -14
  99. data/ext/libxml/ruby_xml_sax_parser.c +55 -55
  100. data/ext/libxml/ruby_xml_sax_parser.h +56 -56
  101. data/ext/libxml/ruby_xml_schema.c +44 -51
  102. data/ext/libxml/ruby_xml_schema.h +16 -16
  103. data/ext/libxml/ruby_xml_state.c +35 -96
  104. data/ext/libxml/ruby_xml_state.h +2 -3
  105. data/ext/libxml/ruby_xml_tree.h +12 -12
  106. data/ext/libxml/ruby_xml_xinclude.h +13 -13
  107. data/ext/libxml/ruby_xml_xpath.c +57 -18
  108. data/ext/libxml/ruby_xml_xpath.h +23 -23
  109. data/ext/libxml/ruby_xml_xpath_context.c +11 -7
  110. data/ext/libxml/ruby_xml_xpath_context.h +20 -20
  111. data/ext/libxml/ruby_xml_xpath_object.c +9 -16
  112. data/ext/libxml/ruby_xml_xpath_object.h +4 -10
  113. data/ext/libxml/ruby_xml_xpointer.c +11 -11
  114. data/ext/libxml/ruby_xml_xpointer.h +27 -27
  115. data/ext/libxml/ruby_xml_xpointer_context.h +18 -18
  116. data/ext/libxml/version.h +2 -2
  117. data/lib/libxml.rb +134 -125
  118. data/lib/libxml_ruby.so +0 -0
  119. data/mingw/libiconv-2.dll +0 -0
  120. data/mingw/libxml2-2.dll +0 -0
  121. data/mingw/libxml_ruby.so +0 -0
  122. data/test/ets_copy_bug.rb +1 -1
  123. data/test/ets_copy_bug2.rb +16 -27
  124. data/test/ets_doc_to_s.rb +1 -1
  125. data/test/ets_gpx.rb +1 -1
  126. data/test/ets_node_gc.rb +1 -1
  127. data/test/ets_tsr.rb +1 -1
  128. data/test/tc_well_formed.rb +1 -1
  129. data/test/tc_xml_attributes.rb +106 -0
  130. data/test/tc_xml_document.rb +10 -10
  131. data/test/tc_xml_document_write3.rb +1 -1
  132. data/test/tc_xml_dtd.rb +49 -0
  133. data/test/tc_xml_html_parser.rb +3 -3
  134. data/test/tc_xml_node.rb +69 -33
  135. data/test/tc_xml_node_attr.rb +170 -0
  136. data/test/{tc_xml_node8.rb → tc_xml_node_cdata.rb} +2 -2
  137. data/test/{tc_xml_node9.rb → tc_xml_node_comment.rb} +3 -3
  138. data/test/tc_xml_node_edit.rb +91 -0
  139. data/test/tc_xml_parser.rb +97 -50
  140. data/test/tc_xml_parser_context.rb +61 -23
  141. data/test/tc_xml_schema.rb +39 -0
  142. data/test/tc_xml_xinclude.rb +5 -6
  143. data/test/tc_xml_xpath.rb +51 -27
  144. data/test/test_suite.rb +27 -0
  145. data/vc/{libxml.sln → libxml_ruby.sln} +5 -5
  146. data/vc/{libxml.vcproj → libxml_ruby.vcproj} +9 -1
  147. metadata +106 -54
  148. data/mingw/mingw.rake +0 -36
  149. data/test/dtd-test.rb +0 -24
  150. data/test/merge_bug.rb +0 -55
  151. data/test/schema-test.rb +0 -74
  152. data/test/tc_xml_node2.rb +0 -25
  153. data/test/tc_xml_node3.rb +0 -27
  154. data/test/tc_xml_node4.rb +0 -86
  155. data/test/tc_xml_node5.rb +0 -52
  156. data/test/tc_xml_node6.rb +0 -27
  157. data/test/tc_xml_node7.rb +0 -35
  158. data/test/tc_xml_parser2.rb +0 -16
  159. data/test/tc_xml_parser3.rb +0 -23
  160. data/test/tc_xml_parser4.rb +0 -33
  161. data/test/tc_xml_parser5.rb +0 -27
  162. data/test/tc_xml_parser6.rb +0 -23
  163. data/test/tc_xml_parser7.rb +0 -28
  164. data/test/tc_xml_parser8.rb +0 -32
  165. data/test/tc_xml_parser9.rb +0 -11
  166. data/test/tc_xml_xpath2.rb +0 -14
  167. data/work/vc/debug/libxml.exp +0 -0
  168. data/work/vc/debug/libxml.ilk +0 -0
  169. data/work/vc/debug/libxml.lib +0 -0
  170. data/work/vc/debug/libxml.pdb +0 -0
  171. data/work/vc/debug/libxml.so +0 -0
@@ -0,0 +1,170 @@
1
+ require "libxml"
2
+ require 'test/unit'
3
+
4
+ class AttrNodeTest < Test::Unit::TestCase
5
+ def setup()
6
+ xp = XML::Parser.string(<<-EOS)
7
+ <CityModel
8
+ xmlns="http://www.opengis.net/examples"
9
+ xmlns:city="http://www.opengis.net/examples"
10
+ xmlns:gml="http://www.opengis.net/gml"
11
+ xmlns:xlink="http://www.w3.org/1999/xlink"
12
+ xmlns:xsi="http://www.w3.org/2000/10/XMLSchema-instance"
13
+ xsi:schemaLocation="http://www.opengis.net/examples city.xsd">
14
+ <type>City</type>
15
+ <cityMember name="Cambridge"
16
+ xlink:type="simple"
17
+ xlink:title="Trinity Lane"
18
+ xlink:href="http://www.foo.net/cgi-bin/wfs?FeatureID=C10239"
19
+ gml:remoteSchema="city.xsd#xpointer(//complexType[@name='RoadType'])"/>
20
+ </CityModel>
21
+ EOS
22
+
23
+ @doc = xp.parse
24
+ end
25
+
26
+ def teardown()
27
+ @doc = nil
28
+ end
29
+
30
+ def city_member
31
+ @doc.find('/city:CityModel/city:cityMember').first
32
+ end
33
+
34
+ def test_types
35
+ attribute = city_member.attributes.get_attribute('name')
36
+ assert_instance_of(XML::Attr, attribute)
37
+ assert_equal('attribute', attribute.node_type_name)
38
+ end
39
+
40
+ def test_name
41
+ attribute = city_member.attributes.get_attribute('name')
42
+ assert_equal('name', attribute.name)
43
+
44
+ attribute = city_member.attributes.get_attribute('href')
45
+ assert_equal('href', attribute.name)
46
+ assert_equal('xlink', attribute.ns.prefix)
47
+ assert_equal('http://www.w3.org/1999/xlink', attribute.ns.href)
48
+
49
+ attribute = city_member.attributes.get_attribute_ns('http://www.w3.org/1999/xlink', 'href')
50
+ assert_equal('href', attribute.name)
51
+ assert_equal('xlink', attribute.ns.prefix)
52
+ assert_equal('http://www.w3.org/1999/xlink', attribute.ns.href)
53
+ end
54
+
55
+ def test_value
56
+ attribute = city_member.attributes.get_attribute('name')
57
+ assert_equal('Cambridge', attribute.value)
58
+
59
+ attribute = city_member.attributes.get_attribute('href')
60
+ assert_equal('http://www.foo.net/cgi-bin/wfs?FeatureID=C10239', attribute.value)
61
+ end
62
+
63
+ def test_set_value
64
+ attribute = city_member.attributes.get_attribute('name')
65
+ attribute.value = 'London'
66
+ assert_equal('London', attribute.value)
67
+
68
+ attribute = city_member.attributes.get_attribute('href')
69
+ attribute.value = 'http://i.have.changed'
70
+ assert_equal('http://i.have.changed', attribute.value)
71
+ end
72
+
73
+ def test_set_nil
74
+ attribute = city_member.attributes.get_attribute('name')
75
+ assert_raise(TypeError) do
76
+ attribute.value = nil
77
+ end
78
+ end
79
+
80
+ def test_create
81
+ attributes = city_member.attributes
82
+ assert_equal(5, attributes.length)
83
+
84
+ attr = XML::Attr.new(city_member, 'size', '50,000')
85
+ assert_instance_of(XML::Attr, attr)
86
+
87
+ attributes = city_member.attributes
88
+ assert_equal(6, attributes.length)
89
+
90
+ assert_equal(attributes['size'], '50,000')
91
+ end
92
+
93
+ def test_create_on_node
94
+ attributes = city_member.attributes
95
+ assert_equal(5, attributes.length)
96
+
97
+ attributes['country'] = 'England'
98
+
99
+ attributes = city_member.attributes
100
+ assert_equal(6, attributes.length)
101
+
102
+ assert_equal(attributes['country'], 'England')
103
+ end
104
+
105
+ def test_create_ns
106
+ assert_equal(5, city_member.attributes.length)
107
+
108
+ ns = XML::NS.new(city_member, 'my_namepace', 'http://www.mynamespace.com')
109
+ attr = XML::Attr.new(city_member, 'rating', 'rocks', ns)
110
+ assert_instance_of(XML::Attr, attr)
111
+ assert_equal('rating', attr.name)
112
+ assert_equal('rocks', attr.value)
113
+
114
+ attributes = city_member.attributes
115
+ assert_equal(6, attributes.length)
116
+
117
+ assert_equal('rocks', city_member['rating'])
118
+ end
119
+
120
+ def test_remove
121
+ attributes = city_member.attributes
122
+ assert_equal(5, attributes.length)
123
+
124
+ attribute = attributes.get_attribute('name')
125
+ assert_not_nil(attribute.parent)
126
+ assert(attribute.parent?)
127
+
128
+ attribute.remove!
129
+ assert_equal(4, attributes.length)
130
+ assert_nil(attribute.parent)
131
+ assert(!attribute.parent?)
132
+ end
133
+
134
+ def test_first
135
+ attribute = city_member.attributes.first
136
+ assert_instance_of(XML::Attr, attribute)
137
+ assert_equal('name', attribute.name)
138
+ assert_equal('Cambridge', attribute.value)
139
+
140
+ attribute = attribute.next
141
+ assert_instance_of(XML::Attr, attribute)
142
+ assert_equal('type', attribute.name)
143
+ assert_equal('simple', attribute.value)
144
+
145
+ attribute = attribute.next
146
+ assert_instance_of(XML::Attr, attribute)
147
+ assert_equal('title', attribute.name)
148
+ assert_equal('Trinity Lane', attribute.value)
149
+
150
+ attribute = attribute.next
151
+ assert_instance_of(XML::Attr, attribute)
152
+ assert_equal('href', attribute.name)
153
+ assert_equal('http://www.foo.net/cgi-bin/wfs?FeatureID=C10239', attribute.value)
154
+
155
+ attribute = attribute.next
156
+ assert_instance_of(XML::Attr, attribute)
157
+ assert_equal('remoteSchema', attribute.name)
158
+ assert_equal("city.xsd#xpointer(//complexType[@name='RoadType'])", attribute.value)
159
+
160
+ attribute = attribute.next
161
+ assert_nil(attribute)
162
+ end
163
+
164
+ def test_no_attributes
165
+ element = @doc.find('/city:CityModel/city:type').first
166
+
167
+ assert_not_nil(element.attributes)
168
+ assert_equal(0, element.attributes.length)
169
+ end
170
+ end
@@ -1,7 +1,7 @@
1
1
  require "libxml"
2
2
  require 'test/unit'
3
3
 
4
- class TC_XML_Node8 < Test::Unit::TestCase
4
+ class CDataCommentTest < Test::Unit::TestCase
5
5
  def setup()
6
6
  xp = XML::Parser.new()
7
7
  str = '<root></root>'
@@ -20,7 +20,7 @@ class TC_XML_Node8 < Test::Unit::TestCase
20
20
  def test_libxml_node_add_cdata_02
21
21
  @root << XML::Node.new_cdata('mycdata')
22
22
  assert_equal 'cdata',
23
- @root.child.node_type_name
23
+ @root.child.node_type_name
24
24
  end
25
25
 
26
26
  def test_libxml_node_add_cdata_03
@@ -1,7 +1,7 @@
1
1
  require "libxml"
2
2
  require 'test/unit'
3
3
 
4
- class TC_XML_Node9 < Test::Unit::TestCase
4
+ class NodeCommentTest < Test::Unit::TestCase
5
5
  def setup()
6
6
  xp = XML::Parser.new()
7
7
  str = '<root></root>'
@@ -20,13 +20,13 @@ class TC_XML_Node9 < Test::Unit::TestCase
20
20
  def test_libxml_node_add_comment_02
21
21
  @root << XML::Node.new_comment('mycomment')
22
22
  assert_equal 'comment',
23
- @root.child.node_type_name
23
+ @root.child.node_type_name
24
24
  end
25
25
 
26
26
  def test_libxml_node_add_comment_03
27
27
  @root << el = XML::Node.new_comment('mycomment')
28
28
  el << "_this_is_added"
29
29
  assert_equal '<root><!--mycomment_this_is_added--></root>',
30
- @root.to_s.gsub(/\n\s*/,'')
30
+ @root.to_s.gsub(/\n\s*/,'')
31
31
  end
32
32
  end
@@ -0,0 +1,91 @@
1
+ require "libxml"
2
+ require 'test/unit'
3
+
4
+ class TextNodeEdit < Test::Unit::TestCase
5
+ def setup
6
+ xp = XML::Parser.new()
7
+ xp.string = '<test><num>one</num><num>two</num><num>three</num></test>'
8
+ @doc = xp.parse
9
+ end
10
+
11
+ def teardown
12
+ @doc = nil
13
+ end
14
+
15
+ def first_node
16
+ @doc.root.child
17
+ end
18
+
19
+ def second_node
20
+ first_node.next
21
+ end
22
+
23
+ def third_node
24
+ second_node.next
25
+ end
26
+
27
+ def test_add_next_01
28
+ first_node.next = XML::Node.new('num', 'one-and-a-half')
29
+ assert_equal('<test><num>one</num><num>one-and-a-half</num><num>two</num><num>three</num></test>',
30
+ @doc.root.to_s.gsub(/\n\s*/,''))
31
+ end
32
+
33
+ def test_add_next_02
34
+ second_node.next = XML::Node.new('num', 'two-and-a-half')
35
+ assert_equal('<test><num>one</num><num>two</num><num>two-and-a-half</num><num>three</num></test>',
36
+ @doc.root.to_s.gsub(/\n\s*/,''))
37
+ end
38
+
39
+ def test_add_next_03
40
+ third_node.next = XML::Node.new('num', 'four')
41
+ assert_equal '<test><num>one</num><num>two</num><num>three</num><num>four</num></test>',
42
+ @doc.root.to_s.gsub(/\n\s*/,'')
43
+ end
44
+
45
+ def test_add_prev_01
46
+ first_node.prev = XML::Node.new('num', 'half')
47
+ assert_equal '<test><num>half</num><num>one</num><num>two</num><num>three</num></test>',
48
+ @doc.root.to_s.gsub(/\n\s*/,'')
49
+ end
50
+
51
+ def test_add_prev_02
52
+ second_node.prev = XML::Node.new('num', 'one-and-a-half')
53
+ assert_equal '<test><num>one</num><num>one-and-a-half</num><num>two</num><num>three</num></test>',
54
+ @doc.root.to_s.gsub(/\n\s*/,'')
55
+ end
56
+
57
+ def test_add_prev_03
58
+ third_node.prev = XML::Node.new('num', 'two-and-a-half')
59
+ assert_equal '<test><num>one</num><num>two</num><num>two-and-a-half</num><num>three</num></test>',
60
+ @doc.root.to_s.gsub(/\n\s*/,'')
61
+ end
62
+
63
+ def test_remove_node()
64
+ first_node.remove!
65
+ assert_equal('<test><num>two</num><num>three</num></test>',
66
+ @doc.root.to_s.gsub(/\n\s*/,''))
67
+ end
68
+
69
+ # This test is to verify that an earlier reported bug has been fixed
70
+ def test_merge
71
+ documents = []
72
+
73
+ # Read in 500 documents
74
+ 500.times do
75
+ documents << XML::Parser.string(File.read(File.join(File.dirname(__FILE__), 'model', 'merge_bug_data.xml'))).parse
76
+ end
77
+
78
+ master_doc = documents.shift
79
+ documents.inject(master_doc) do |master_doc, child_doc|
80
+ master_body = master_doc.find("//body").first
81
+ child_body = child_doc.find("//body").first
82
+
83
+ child_element = child_body.detect do |node|
84
+ node.element?
85
+ end
86
+
87
+ master_body << child_element.copy(true)
88
+ master_doc
89
+ end
90
+ end
91
+ end
@@ -1,44 +1,22 @@
1
1
  require "libxml"
2
2
  require 'test/unit'
3
3
 
4
- class TC_XML_Parser < Test::Unit::TestCase
5
- def setup()
6
- @xp = XML::Parser.new()
4
+ class TextParser < Test::Unit::TestCase
5
+ def setup
6
+ @xp = XML::Parser.new
7
7
  assert_not_nil(@xp)
8
8
  end
9
9
 
10
- def teardown()
10
+ def teardown
11
11
  @xp = nil
12
12
  end
13
-
14
- def test_libxml_parser_string()
15
- str = '<ruby_array uga="booga" foo="bar"><fixnum>one</fixnum><fixnum>two</fixnum></ruby_array>'
16
- assert_equal(str, @xp.string = str)
17
- assert_instance_of(XML::Document, @xp.parse)
18
- end
19
-
20
- def test_libxml_parser_bad_xml()
21
- @xp.string = '<ruby_array uga="booga" foo="bar"<fixnum>one</fixnum><fixnum>two</fixnum></ruby_array>'
22
- assert_raise(XML::Parser::ParseError) do
23
- assert_not_nil(@xp.parse)
24
- end
25
- end
26
-
27
- def test_libxml_parser_empty_string
28
- assert_raise(XML::Parser::ParseError) do
29
- @xp.string = ''
30
- end
31
-
32
- assert_raise(TypeError) do
33
- @xp.string = nil
34
- end
35
- end
36
13
 
37
- def test_ruby_xml_parser_check_lib_versions()
14
+ # ----- Constants ------
15
+ def test_lib_versions
38
16
  assert(XML::Parser::check_lib_versions)
39
17
  end
40
18
 
41
- def test_ruby_xml_parser_debug_entities()
19
+ def test_debug_entities
42
20
  XML::Parser::debug_entities = false
43
21
  assert(!XML::Parser::debug_entities)
44
22
 
@@ -49,7 +27,9 @@ class TC_XML_Parser < Test::Unit::TestCase
49
27
  assert(!XML::Parser::debug_entities)
50
28
  end
51
29
 
52
- def test_ruby_xml_parser_default_compression()
30
+ def test_default_compression
31
+ return unless XML::Parser::default_compression
32
+
53
33
  0.upto(9) do |i|
54
34
  XML::Parser::default_compression = i
55
35
  assert_equal(i, XML::Parser::default_compression)
@@ -71,7 +51,7 @@ class TC_XML_Parser < Test::Unit::TestCase
71
51
  end
72
52
  end
73
53
 
74
- def test_ruby_xml_parser_default_keep_blanks()
54
+ def test_default_keep_blanks
75
55
  XML::Parser::default_keep_blanks = false
76
56
  assert(!XML::Parser::default_keep_blanks)
77
57
 
@@ -86,7 +66,7 @@ class TC_XML_Parser < Test::Unit::TestCase
86
66
  XML::Parser::default_keep_blanks = true
87
67
  end
88
68
 
89
- def test_ruby_xml_parser_default_line_numbers()
69
+ def test_default_line_numbers
90
70
  XML::Parser::default_line_numbers = false
91
71
  assert(!XML::Parser::default_line_numbers)
92
72
 
@@ -97,7 +77,7 @@ class TC_XML_Parser < Test::Unit::TestCase
97
77
  assert(!XML::Parser::default_line_numbers)
98
78
  end
99
79
 
100
- def test_ruby_xml_parser_default_substitute_entities()
80
+ def test_default_substitute_entities
101
81
  XML::Parser::default_substitute_entities = false
102
82
  assert(!XML::Parser::default_substitute_entities)
103
83
 
@@ -108,21 +88,21 @@ class TC_XML_Parser < Test::Unit::TestCase
108
88
  assert(!XML::Parser::default_substitute_entities)
109
89
  end
110
90
 
111
- def test_ruby_xml_parser_default_tree_indent_string()
112
- s = XML::Parser::default_tree_indent_string()
91
+ def test_default_tree_indent_string
92
+ s = XML::Parser::default_tree_indent_string
113
93
  assert_instance_of(String, s)
114
94
  assert_equal(' ', s)
115
95
  XML::Parser::default_tree_indent_string = 'uga'
116
- s = XML::Parser::default_tree_indent_string()
96
+ s = XML::Parser::default_tree_indent_string
117
97
  assert_instance_of(String, s)
118
98
  assert_equal('uga', s)
119
99
  XML::Parser::default_tree_indent_string = ' '
120
- s = XML::Parser::default_tree_indent_string()
100
+ s = XML::Parser::default_tree_indent_string
121
101
  assert_instance_of(String, s)
122
102
  assert_equal(' ', s)
123
103
  end
124
104
 
125
- def test_ruby_xml_parser_default_validity_checking()
105
+ def test_default_validity_checking
126
106
  XML::Parser::default_validity_checking = false
127
107
  assert(!XML::Parser::default_validity_checking)
128
108
 
@@ -133,7 +113,7 @@ class TC_XML_Parser < Test::Unit::TestCase
133
113
  assert(!XML::Parser::default_validity_checking)
134
114
  end
135
115
 
136
- def test_ruby_xml_parser_default_warnings()
116
+ def test_default_warnings
137
117
  XML::Parser::default_warnings = false
138
118
  assert(!XML::Parser::default_warnings)
139
119
 
@@ -144,7 +124,7 @@ class TC_XML_Parser < Test::Unit::TestCase
144
124
  assert(!XML::Parser::default_warnings)
145
125
  end
146
126
 
147
- def test_ruby_xml_parser_intent_tree_output()
127
+ def test_intent_tree_output
148
128
  assert(TrueClass, XML::Parser::indent_tree_output)
149
129
 
150
130
  XML::Parser::indent_tree_output = false
@@ -154,37 +134,104 @@ class TC_XML_Parser < Test::Unit::TestCase
154
134
  assert(TrueClass, XML::Parser::indent_tree_output)
155
135
  end
156
136
 
157
- def test_ruby_xml_parser_version()
137
+ def test_version
158
138
  assert_instance_of(String, XML::Parser::VERSION)
159
139
  end
160
140
 
161
- def test_ruby_xml_parser_vernum()
141
+ def test_vernum
162
142
  assert_instance_of(Fixnum, XML::Parser::VERNUM)
163
143
  end
164
144
 
165
- def test_ruby_xml_parser_context()
145
+ # ----- IO ------
146
+ def test_string
147
+ str = '<ruby_array uga="booga" foo="bar"><fixnum>one</fixnum><fixnum>two</fixnum></ruby_array>'
148
+ assert_equal(str, @xp.string = str)
149
+ assert_instance_of(XML::Document, @xp.parse)
150
+ end
151
+
152
+ def test_context
166
153
  @xp = XML::Parser.string('<rubynet><testing>uga</testing><uga>foo</uga></rubynet>')
167
154
  doc = @xp.parse
168
155
  assert_instance_of(XML::Document, doc)
169
156
  assert_instance_of(XML::Parser::Context, @xp.context)
170
157
  end
171
158
 
172
- def test_libxml_parser_file()
159
+ def test_file
173
160
  file = File.expand_path('model/rubynet.xml')
174
161
 
175
- assert_equal(file, @xp.filename = file)
176
- assert_instance_of(XML::Document, @xp.parse)
162
+ @xp.filename = file
163
+ assert_equal(file, @xp.filename)
164
+
165
+ doc = @xp.parse
166
+ assert_instance_of(XML::Document, doc)
177
167
  end
178
168
 
179
- def test_libxml_parser_io()
169
+ def test_io
180
170
  File.open('model/rubynet.xml') do |f|
181
171
  assert_kind_of(IO, f)
182
172
  assert_kind_of(IO, @xp.io = f)
183
173
  assert_instance_of(XML::Document, @xp.parse)
184
174
  end # File.open
185
- end # def test_libxml_parser_io()
175
+ end # def test_libxml_parser_io
186
176
 
187
- def test_libxml_parser_features()
177
+ def test_libxml_parser_features
188
178
  assert_instance_of(Array, XML::Parser::features)
189
179
  end
190
- end # TC_XML_Parser
180
+
181
+ # ----- Errors ------
182
+ def test_error_handler
183
+ $stderr.puts "\nEXPECTING: TWO ERRORS:"
184
+ # this will send message to stderr
185
+ assert_raise(XML::Parser::ParseError) do
186
+ XML::Parser.string('<foo><bar/></foz>').parse
187
+ end
188
+
189
+ ary = []
190
+ assert_nil XML::Parser.register_error_handler(lambda { |msg| ary << msg })
191
+
192
+ # this will use our error handler
193
+ assert_raise(XML::Parser::ParseError) do
194
+ XML::Parser.string('<foo><bar/></foz>').parse
195
+ end
196
+
197
+ assert_equal(["Entity: line 1: ",
198
+ "parser ",
199
+ "error : ",
200
+ "Opening and ending tag mismatch: foo line 1 and foz\n",
201
+ "<foo><bar/></foz>\n",
202
+ " ^\n"], ary)
203
+
204
+ assert_instance_of(Proc, XML::Parser.register_error_handler(nil))
205
+
206
+ # this will go to stderr again
207
+ assert_raise(XML::Parser::ParseError) do
208
+ d = XML::Parser.string('<foo><bar/></foz>').parse
209
+ end
210
+ end
211
+
212
+ def test_bad_xml
213
+ @xp.string = '<ruby_array uga="booga" foo="bar"<fixnum>one</fixnum><fixnum>two</fixnum></ruby_array>'
214
+ assert_raise(XML::Parser::ParseError) do
215
+ assert_not_nil(@xp.parse)
216
+ end
217
+ end
218
+
219
+ def test_double_parse
220
+ parser = XML::Parser.string("<test>something</test>")
221
+ doc = parser.parse
222
+
223
+ assert_raise(XML::Parser::ParseError) do
224
+ parser.parse
225
+ end
226
+ end
227
+
228
+ def test_libxml_parser_empty_string
229
+ assert_raise(XML::Parser::ParseError) do
230
+ @xp.string = ''
231
+ end
232
+
233
+ assert_raise(TypeError) do
234
+ @xp.string = nil
235
+ end
236
+ end
237
+ end