libxml-ruby 0.6.0-x86-mswin32-60 → 0.7.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 (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