coupa-libxml-ruby 1.1.4

Sign up to get free protection for your applications and to get access to all the features.
Files changed (280) hide show
  1. data/CHANGES +488 -0
  2. data/LICENSE +22 -0
  3. data/README +161 -0
  4. data/Rakefile +188 -0
  5. data/doc/css/normal.css +182 -0
  6. data/doc/img/raze-tiny.png +0 -0
  7. data/doc/img/red-cube.jpg +0 -0
  8. data/doc/img/xml-ruby.png +0 -0
  9. data/doc/index.xml +43 -0
  10. data/doc/install.xml +77 -0
  11. data/doc/layout.rhtml +38 -0
  12. data/doc/layout.xsl +67 -0
  13. data/doc/license.xml +32 -0
  14. data/doc/log/changelog.xml +1324 -0
  15. data/doc/log/changelog.xsl +42 -0
  16. data/doc/rdoc/classes/LibXML.html +207 -0
  17. data/doc/rdoc/classes/LibXML/XML.html +407 -0
  18. data/doc/rdoc/classes/LibXML/XML/Attr.html +521 -0
  19. data/doc/rdoc/classes/LibXML/XML/AttrDecl.html +360 -0
  20. data/doc/rdoc/classes/LibXML/XML/Attributes.html +149 -0
  21. data/doc/rdoc/classes/LibXML/XML/Document.html +460 -0
  22. data/doc/rdoc/classes/LibXML/XML/Error.html +129 -0
  23. data/doc/rdoc/classes/LibXML/XML/HTMLParser.html +263 -0
  24. data/doc/rdoc/classes/LibXML/XML/Namespace.html +248 -0
  25. data/doc/rdoc/classes/LibXML/XML/Namespaces.html +200 -0
  26. data/doc/rdoc/classes/LibXML/XML/Node.html +1351 -0
  27. data/doc/rdoc/classes/LibXML/XML/Parser.html +328 -0
  28. data/doc/rdoc/classes/LibXML/XML/Reader.html +172 -0
  29. data/doc/rdoc/classes/LibXML/XML/SaxParser.html +232 -0
  30. data/doc/rdoc/classes/LibXML/XML/SaxParser/Callbacks.html +506 -0
  31. data/doc/rdoc/classes/LibXML/XML/SaxParser/VerboseCallbacks.html +555 -0
  32. data/doc/rdoc/classes/LibXML/XML/XPath.html +111 -0
  33. data/doc/rdoc/classes/LibXML/XML/XPath/Object.html +162 -0
  34. data/doc/rdoc/classes/cXMLDtd.html +114 -0
  35. data/doc/rdoc/classes/cXMLNode.html +114 -0
  36. data/doc/rdoc/created.rid +1 -0
  37. data/doc/rdoc/files/CHANGES.html +794 -0
  38. data/doc/rdoc/files/LICENSE.html +131 -0
  39. data/doc/rdoc/files/README.html +343 -0
  40. data/doc/rdoc/files/ext/libxml/libxml_c.html +101 -0
  41. data/doc/rdoc/files/ext/libxml/ruby_xml_attr_c.html +101 -0
  42. data/doc/rdoc/files/ext/libxml/ruby_xml_attr_decl_c.html +101 -0
  43. data/doc/rdoc/files/ext/libxml/ruby_xml_attributes_c.html +101 -0
  44. data/doc/rdoc/files/ext/libxml/ruby_xml_c.html +101 -0
  45. data/doc/rdoc/files/ext/libxml/ruby_xml_cbg_c.html +101 -0
  46. data/doc/rdoc/files/ext/libxml/ruby_xml_document_c.html +101 -0
  47. data/doc/rdoc/files/ext/libxml/ruby_xml_dtd_c.html +101 -0
  48. data/doc/rdoc/files/ext/libxml/ruby_xml_encoding_c.html +101 -0
  49. data/doc/rdoc/files/ext/libxml/ruby_xml_error_c.html +101 -0
  50. data/doc/rdoc/files/ext/libxml/ruby_xml_html_parser_c.html +101 -0
  51. data/doc/rdoc/files/ext/libxml/ruby_xml_html_parser_context_c.html +101 -0
  52. data/doc/rdoc/files/ext/libxml/ruby_xml_html_parser_options_c.html +101 -0
  53. data/doc/rdoc/files/ext/libxml/ruby_xml_input_cbg_c.html +101 -0
  54. data/doc/rdoc/files/ext/libxml/ruby_xml_io_c.html +101 -0
  55. data/doc/rdoc/files/ext/libxml/ruby_xml_namespace_c.html +101 -0
  56. data/doc/rdoc/files/ext/libxml/ruby_xml_namespaces_c.html +101 -0
  57. data/doc/rdoc/files/ext/libxml/ruby_xml_node_c.html +101 -0
  58. data/doc/rdoc/files/ext/libxml/ruby_xml_parser_c.html +101 -0
  59. data/doc/rdoc/files/ext/libxml/ruby_xml_parser_context_c.html +101 -0
  60. data/doc/rdoc/files/ext/libxml/ruby_xml_parser_options_c.html +101 -0
  61. data/doc/rdoc/files/ext/libxml/ruby_xml_reader_c.html +101 -0
  62. data/doc/rdoc/files/ext/libxml/ruby_xml_relaxng_c.html +101 -0
  63. data/doc/rdoc/files/ext/libxml/ruby_xml_sax2_handler_c.html +101 -0
  64. data/doc/rdoc/files/ext/libxml/ruby_xml_sax_parser_c.html +101 -0
  65. data/doc/rdoc/files/ext/libxml/ruby_xml_schema_c.html +101 -0
  66. data/doc/rdoc/files/ext/libxml/ruby_xml_xinclude_c.html +101 -0
  67. data/doc/rdoc/files/ext/libxml/ruby_xml_xpath_c.html +101 -0
  68. data/doc/rdoc/files/ext/libxml/ruby_xml_xpath_context_c.html +101 -0
  69. data/doc/rdoc/files/ext/libxml/ruby_xml_xpath_expression_c.html +101 -0
  70. data/doc/rdoc/files/ext/libxml/ruby_xml_xpath_object_c.html +101 -0
  71. data/doc/rdoc/files/ext/libxml/ruby_xml_xpointer_c.html +101 -0
  72. data/doc/rdoc/files/lib/libxml/attr_decl_rb.html +101 -0
  73. data/doc/rdoc/files/lib/libxml/attr_rb.html +101 -0
  74. data/doc/rdoc/files/lib/libxml/attributes_rb.html +101 -0
  75. data/doc/rdoc/files/lib/libxml/document_rb.html +101 -0
  76. data/doc/rdoc/files/lib/libxml/error_rb.html +101 -0
  77. data/doc/rdoc/files/lib/libxml/hpricot_rb.html +192 -0
  78. data/doc/rdoc/files/lib/libxml/html_parser_rb.html +101 -0
  79. data/doc/rdoc/files/lib/libxml/namespace_rb.html +101 -0
  80. data/doc/rdoc/files/lib/libxml/namespaces_rb.html +101 -0
  81. data/doc/rdoc/files/lib/libxml/node_rb.html +108 -0
  82. data/doc/rdoc/files/lib/libxml/ns_rb.html +101 -0
  83. data/doc/rdoc/files/lib/libxml/parser_rb.html +101 -0
  84. data/doc/rdoc/files/lib/libxml/properties_rb.html +101 -0
  85. data/doc/rdoc/files/lib/libxml/reader_rb.html +101 -0
  86. data/doc/rdoc/files/lib/libxml/sax_callbacks_rb.html +101 -0
  87. data/doc/rdoc/files/lib/libxml/sax_parser_rb.html +101 -0
  88. data/doc/rdoc/files/lib/libxml/tree_rb.html +101 -0
  89. data/doc/rdoc/files/lib/libxml/xpath_object_rb.html +101 -0
  90. data/doc/rdoc/files/lib/libxml_rb.html +133 -0
  91. data/doc/rdoc/files/lib/xml/libxml_rb.html +124 -0
  92. data/doc/rdoc/files/lib/xml_rb.html +134 -0
  93. data/doc/rdoc/fr_class_index.html +46 -0
  94. data/doc/rdoc/fr_file_index.html +84 -0
  95. data/doc/rdoc/fr_method_index.html +155 -0
  96. data/doc/rdoc/index.html +24 -0
  97. data/doc/rdoc/rdoc-style.css +208 -0
  98. data/ext/libxml/Makefile +157 -0
  99. data/ext/libxml/build.log +4 -0
  100. data/ext/libxml/extconf.h +5 -0
  101. data/ext/libxml/extconf.rb +278 -0
  102. data/ext/libxml/libxml.c +77 -0
  103. data/ext/libxml/libxml.o +0 -0
  104. data/ext/libxml/libxml_ruby.bundle +0 -0
  105. data/ext/libxml/mkmf.log +228 -0
  106. data/ext/libxml/ruby_libxml.h +93 -0
  107. data/ext/libxml/ruby_xml.c +893 -0
  108. data/ext/libxml/ruby_xml.h +10 -0
  109. data/ext/libxml/ruby_xml.o +0 -0
  110. data/ext/libxml/ruby_xml_attr.c +352 -0
  111. data/ext/libxml/ruby_xml_attr.h +14 -0
  112. data/ext/libxml/ruby_xml_attr.o +0 -0
  113. data/ext/libxml/ruby_xml_attr_decl.c +171 -0
  114. data/ext/libxml/ruby_xml_attr_decl.h +13 -0
  115. data/ext/libxml/ruby_xml_attr_decl.o +0 -0
  116. data/ext/libxml/ruby_xml_attributes.c +277 -0
  117. data/ext/libxml/ruby_xml_attributes.h +17 -0
  118. data/ext/libxml/ruby_xml_attributes.o +0 -0
  119. data/ext/libxml/ruby_xml_cbg.c +86 -0
  120. data/ext/libxml/ruby_xml_cbg.o +0 -0
  121. data/ext/libxml/ruby_xml_document.c +1006 -0
  122. data/ext/libxml/ruby_xml_document.c.old +936 -0
  123. data/ext/libxml/ruby_xml_document.h +17 -0
  124. data/ext/libxml/ruby_xml_document.o +0 -0
  125. data/ext/libxml/ruby_xml_dtd.c +257 -0
  126. data/ext/libxml/ruby_xml_dtd.h +9 -0
  127. data/ext/libxml/ruby_xml_dtd.o +0 -0
  128. data/ext/libxml/ruby_xml_encoding.c +134 -0
  129. data/ext/libxml/ruby_xml_encoding.h +12 -0
  130. data/ext/libxml/ruby_xml_encoding.o +0 -0
  131. data/ext/libxml/ruby_xml_error.c +1004 -0
  132. data/ext/libxml/ruby_xml_error.h +14 -0
  133. data/ext/libxml/ruby_xml_error.o +0 -0
  134. data/ext/libxml/ruby_xml_html_parser.c +92 -0
  135. data/ext/libxml/ruby_xml_html_parser.h +12 -0
  136. data/ext/libxml/ruby_xml_html_parser.o +0 -0
  137. data/ext/libxml/ruby_xml_html_parser_context.c +308 -0
  138. data/ext/libxml/ruby_xml_html_parser_context.h +12 -0
  139. data/ext/libxml/ruby_xml_html_parser_context.o +0 -0
  140. data/ext/libxml/ruby_xml_html_parser_options.c +40 -0
  141. data/ext/libxml/ruby_xml_html_parser_options.h +12 -0
  142. data/ext/libxml/ruby_xml_html_parser_options.o +0 -0
  143. data/ext/libxml/ruby_xml_input_cbg.c +191 -0
  144. data/ext/libxml/ruby_xml_input_cbg.h +20 -0
  145. data/ext/libxml/ruby_xml_input_cbg.o +0 -0
  146. data/ext/libxml/ruby_xml_io.c +30 -0
  147. data/ext/libxml/ruby_xml_io.h +9 -0
  148. data/ext/libxml/ruby_xml_io.o +0 -0
  149. data/ext/libxml/ruby_xml_namespace.c +170 -0
  150. data/ext/libxml/ruby_xml_namespace.h +12 -0
  151. data/ext/libxml/ruby_xml_namespace.o +0 -0
  152. data/ext/libxml/ruby_xml_namespaces.c +295 -0
  153. data/ext/libxml/ruby_xml_namespaces.h +11 -0
  154. data/ext/libxml/ruby_xml_namespaces.o +0 -0
  155. data/ext/libxml/ruby_xml_node.c +1386 -0
  156. data/ext/libxml/ruby_xml_node.h +13 -0
  157. data/ext/libxml/ruby_xml_node.o +0 -0
  158. data/ext/libxml/ruby_xml_parser.c +94 -0
  159. data/ext/libxml/ruby_xml_parser.h +14 -0
  160. data/ext/libxml/ruby_xml_parser.o +0 -0
  161. data/ext/libxml/ruby_xml_parser_context.c +982 -0
  162. data/ext/libxml/ruby_xml_parser_context.h +12 -0
  163. data/ext/libxml/ruby_xml_parser_context.o +0 -0
  164. data/ext/libxml/ruby_xml_parser_options.c +68 -0
  165. data/ext/libxml/ruby_xml_parser_options.h +14 -0
  166. data/ext/libxml/ruby_xml_parser_options.o +0 -0
  167. data/ext/libxml/ruby_xml_reader.c +1002 -0
  168. data/ext/libxml/ruby_xml_reader.h +14 -0
  169. data/ext/libxml/ruby_xml_reader.o +0 -0
  170. data/ext/libxml/ruby_xml_relaxng.c +111 -0
  171. data/ext/libxml/ruby_xml_relaxng.h +10 -0
  172. data/ext/libxml/ruby_xml_relaxng.o +0 -0
  173. data/ext/libxml/ruby_xml_sax2_handler.c +322 -0
  174. data/ext/libxml/ruby_xml_sax2_handler.h +12 -0
  175. data/ext/libxml/ruby_xml_sax2_handler.o +0 -0
  176. data/ext/libxml/ruby_xml_sax_parser.c +137 -0
  177. data/ext/libxml/ruby_xml_sax_parser.h +12 -0
  178. data/ext/libxml/ruby_xml_sax_parser.o +0 -0
  179. data/ext/libxml/ruby_xml_schema.c +159 -0
  180. data/ext/libxml/ruby_xml_schema.h +11 -0
  181. data/ext/libxml/ruby_xml_schema.o +0 -0
  182. data/ext/libxml/ruby_xml_version.h +9 -0
  183. data/ext/libxml/ruby_xml_xinclude.c +18 -0
  184. data/ext/libxml/ruby_xml_xinclude.h +13 -0
  185. data/ext/libxml/ruby_xml_xinclude.o +0 -0
  186. data/ext/libxml/ruby_xml_xpath.c +107 -0
  187. data/ext/libxml/ruby_xml_xpath.h +12 -0
  188. data/ext/libxml/ruby_xml_xpath.o +0 -0
  189. data/ext/libxml/ruby_xml_xpath_context.c +387 -0
  190. data/ext/libxml/ruby_xml_xpath_context.h +11 -0
  191. data/ext/libxml/ruby_xml_xpath_context.o +0 -0
  192. data/ext/libxml/ruby_xml_xpath_expression.c +83 -0
  193. data/ext/libxml/ruby_xml_xpath_expression.h +12 -0
  194. data/ext/libxml/ruby_xml_xpath_expression.o +0 -0
  195. data/ext/libxml/ruby_xml_xpath_object.c +336 -0
  196. data/ext/libxml/ruby_xml_xpath_object.h +19 -0
  197. data/ext/libxml/ruby_xml_xpath_object.o +0 -0
  198. data/ext/libxml/ruby_xml_xpointer.c +101 -0
  199. data/ext/libxml/ruby_xml_xpointer.h +13 -0
  200. data/ext/libxml/ruby_xml_xpointer.o +0 -0
  201. data/ext/mingw/Rakefile +34 -0
  202. data/ext/mingw/build.rake +41 -0
  203. data/ext/vc/libxml_ruby.sln +26 -0
  204. data/lib/libxml.rb +30 -0
  205. data/lib/libxml/attr.rb +111 -0
  206. data/lib/libxml/attr_decl.rb +78 -0
  207. data/lib/libxml/attributes.rb +12 -0
  208. data/lib/libxml/document.rb +190 -0
  209. data/lib/libxml/error.rb +88 -0
  210. data/lib/libxml/hpricot.rb +76 -0
  211. data/lib/libxml/html_parser.rb +94 -0
  212. data/lib/libxml/namespace.rb +60 -0
  213. data/lib/libxml/namespaces.rb +36 -0
  214. data/lib/libxml/node.rb +385 -0
  215. data/lib/libxml/ns.rb +20 -0
  216. data/lib/libxml/parser.rb +365 -0
  217. data/lib/libxml/properties.rb +21 -0
  218. data/lib/libxml/reader.rb +27 -0
  219. data/lib/libxml/sax_callbacks.rb +178 -0
  220. data/lib/libxml/sax_parser.rb +56 -0
  221. data/lib/libxml/tree.rb +27 -0
  222. data/lib/libxml/xpath_object.rb +14 -0
  223. data/lib/xml.rb +14 -0
  224. data/lib/xml/libxml.rb +8 -0
  225. data/setup.rb +1585 -0
  226. data/test/etc_doc_to_s.rb +19 -0
  227. data/test/ets_doc_file.rb +15 -0
  228. data/test/ets_doc_to_s.rb +21 -0
  229. data/test/ets_gpx.rb +26 -0
  230. data/test/ets_node_gc.rb +21 -0
  231. data/test/ets_test.xml +2 -0
  232. data/test/ets_tsr.rb +9 -0
  233. data/test/model/atom.xml +13 -0
  234. data/test/model/bands.xml +5 -0
  235. data/test/model/books.xml +146 -0
  236. data/test/model/merge_bug_data.xml +58 -0
  237. data/test/model/ruby-lang.html +238 -0
  238. data/test/model/rubynet.xml +79 -0
  239. data/test/model/rubynet_project +1 -0
  240. data/test/model/shiporder.rnc +28 -0
  241. data/test/model/shiporder.rng +86 -0
  242. data/test/model/shiporder.xml +23 -0
  243. data/test/model/shiporder.xsd +31 -0
  244. data/test/model/soap.xml +27 -0
  245. data/test/model/xinclude.xml +5 -0
  246. data/test/tc_attr.rb +170 -0
  247. data/test/tc_attr_decl.rb +131 -0
  248. data/test/tc_attributes.rb +133 -0
  249. data/test/tc_deprecated_require.rb +11 -0
  250. data/test/tc_document.rb +113 -0
  251. data/test/tc_document_write.rb +118 -0
  252. data/test/tc_dtd.rb +123 -0
  253. data/test/tc_error.rb +136 -0
  254. data/test/tc_html_parser.rb +138 -0
  255. data/test/tc_namespace.rb +59 -0
  256. data/test/tc_namespaces.rb +174 -0
  257. data/test/tc_node.rb +181 -0
  258. data/test/tc_node_cdata.rb +49 -0
  259. data/test/tc_node_comment.rb +30 -0
  260. data/test/tc_node_copy.rb +40 -0
  261. data/test/tc_node_edit.rb +158 -0
  262. data/test/tc_node_text.rb +69 -0
  263. data/test/tc_node_write.rb +83 -0
  264. data/test/tc_node_xlink.rb +26 -0
  265. data/test/tc_parser.rb +330 -0
  266. data/test/tc_parser_context.rb +186 -0
  267. data/test/tc_properties.rb +36 -0
  268. data/test/tc_reader.rb +284 -0
  269. data/test/tc_relaxng.rb +51 -0
  270. data/test/tc_sax_parser.rb +274 -0
  271. data/test/tc_schema.rb +51 -0
  272. data/test/tc_traversal.rb +220 -0
  273. data/test/tc_xinclude.rb +19 -0
  274. data/test/tc_xml.rb +224 -0
  275. data/test/tc_xpath.rb +193 -0
  276. data/test/tc_xpath_context.rb +78 -0
  277. data/test/tc_xpath_expression.rb +35 -0
  278. data/test/tc_xpointer.rb +72 -0
  279. data/test/test_suite.rb +33 -0
  280. metadata +376 -0
@@ -0,0 +1,51 @@
1
+ require "xml"
2
+ require 'test/unit'
3
+
4
+ class TestRelaxNG < Test::Unit::TestCase
5
+ def setup
6
+ file = File.join(File.dirname(__FILE__), 'model/shiporder.xml')
7
+ @doc = XML::Document.file(file)
8
+ end
9
+
10
+ def teardown
11
+ @doc = nil
12
+ end
13
+
14
+ def relaxng
15
+ document = XML::Document.file(File.join(File.dirname(__FILE__), 'model/shiporder.rng'))
16
+ relaxng = XML::RelaxNG.document(document)
17
+ end
18
+
19
+ def test_from_doc
20
+ assert_instance_of(XML::RelaxNG, relaxng)
21
+ end
22
+
23
+ def test_valid
24
+ assert(@doc.validate_relaxng(relaxng))
25
+ end
26
+
27
+ def test_invalid
28
+ new_node = XML::Node.new('invalid', 'this will mess up validation')
29
+ @doc.root.child_add(new_node)
30
+
31
+ error = assert_raise(XML::Error) do
32
+ @doc.validate_relaxng(relaxng)
33
+ end
34
+
35
+ assert_not_nil(error)
36
+ assert_kind_of(XML::Error, error)
37
+ assert(error.message.match(/Error: Did not expect element invalid there/))
38
+ assert_equal(XML::Error::RELAXNGV, error.domain)
39
+ assert_equal(XML::Error::LT_IN_ATTRIBUTE, error.code)
40
+ assert_equal(XML::Error::ERROR, error.level)
41
+ assert(error.file.match(/shiporder\.xml/))
42
+ assert_nil(error.line)
43
+ assert_equal('invalid', error.str1)
44
+ assert_nil(error.str2)
45
+ assert_nil(error.str3)
46
+ assert_equal(0, error.int1)
47
+ assert_equal(0, error.int2)
48
+ assert_not_nil(error.node)
49
+ assert_equal('invalid', error.node.name)
50
+ end
51
+ end
@@ -0,0 +1,274 @@
1
+ require 'xml'
2
+ require 'stringio'
3
+ require 'test/unit'
4
+
5
+ class DocTypeCallback
6
+ include XML::SaxParser::Callbacks
7
+ def on_start_element(element, attributes)
8
+ end
9
+ end
10
+
11
+ class TestCaseCallbacks
12
+ include XML::SaxParser::Callbacks
13
+
14
+ attr_accessor :result
15
+
16
+ def initialize
17
+ @result = Array.new
18
+ end
19
+
20
+ def on_cdata_block(cdata)
21
+ @result << "cdata: #{cdata}"
22
+ end
23
+
24
+ def on_characters(chars)
25
+ @result << "characters: #{chars}"
26
+ end
27
+
28
+ def on_comment(text)
29
+ @result << "comment: #{text}"
30
+ end
31
+
32
+ def on_end_document
33
+ @result << "end_document"
34
+ end
35
+
36
+ def on_end_element(name)
37
+ @result << "end_element: #{name}"
38
+ end
39
+
40
+ def on_end_element_ns(name, prefix, uri)
41
+ @result << "end_element_ns #{name}, prefix: #{prefix}, uri: #{uri}"
42
+ end
43
+
44
+ # Called for parser errors.
45
+ def on_error(error)
46
+ @result << "error: #{error}"
47
+ end
48
+
49
+ def on_processing_instruction(target, data)
50
+ @result << "pi: #{target} #{data}"
51
+ end
52
+
53
+ def on_start_document
54
+ @result << "startdoc"
55
+ end
56
+
57
+ def on_start_element(name, attributes)
58
+ attributes ||= Hash.new
59
+ @result << "start_element: #{name}, attr: #{attributes.inspect}"
60
+ end
61
+
62
+ def on_start_element_ns(name, attributes, prefix, uri, namespaces)
63
+ attributes ||= Hash.new
64
+ namespaces ||= Hash.new
65
+ @result << "start_element_ns: #{name}, attr: #{attributes.inspect}, prefix: #{prefix}, uri: #{uri}, ns: #{namespaces.inspect}"
66
+ end
67
+ end
68
+
69
+ class TestSaxParser < Test::Unit::TestCase
70
+ def saxtest_file
71
+ File.join(File.dirname(__FILE__), 'model/atom.xml')
72
+ end
73
+
74
+ def verify(parser)
75
+ result = parser.callbacks.result
76
+
77
+ i = -1
78
+ assert_equal("startdoc", result[i+=1])
79
+ assert_equal("pi: xml-stylesheet type=\"text/xsl\" href=\"my_stylesheet.xsl\"", result[i+=1])
80
+ assert_equal("start_element: feed, attr: {}", result[i+=1])
81
+ assert_equal("start_element_ns: feed, attr: {}, prefix: , uri: http://www.w3.org/2005/Atom, ns: {nil=>\"http://www.w3.org/2005/Atom\"}", result[i+=1])
82
+ assert_equal("characters: \n ", result[i+=1])
83
+ assert_equal("comment: Not a valid atom entry ", result[i+=1])
84
+ assert_equal("characters: \n ", result[i+=1])
85
+ assert_equal("start_element: entry, attr: {}", result[i+=1])
86
+ assert_equal("start_element_ns: entry, attr: {}, prefix: , uri: http://www.w3.org/2005/Atom, ns: {}", result[i+=1])
87
+ assert_equal("characters: \n ", result[i+=1])
88
+ assert_equal("start_element: title, attr: {\"type\"=>\"html\"}", result[i+=1])
89
+ assert_equal("start_element_ns: title, attr: {\"type\"=>\"html\"}, prefix: , uri: http://www.w3.org/2005/Atom, ns: {}", result[i+=1])
90
+ assert_equal("cdata: <<strong>>", result[i+=1])
91
+ assert_equal("end_element: title", result[i+=1])
92
+ assert_equal("end_element_ns title, prefix: , uri: http://www.w3.org/2005/Atom", result[i+=1])
93
+ assert_equal("characters: \n ", result[i+=1])
94
+ assert_equal("start_element: content, attr: {\"type\"=>\"xhtml\"}", result[i+=1])
95
+ assert_equal("start_element_ns: content, attr: {\"type\"=>\"xhtml\"}, prefix: , uri: http://www.w3.org/2005/Atom, ns: {}", result[i+=1])
96
+ assert_equal("characters: \n ", result[i+=1])
97
+ assert_equal("start_element: xhtml:div, attr: {}", result[i+=1])
98
+ assert_equal("start_element_ns: div, attr: {}, prefix: xhtml, uri: http://www.w3.org/1999/xhtml, ns: {\"xhtml\"=>\"http://www.w3.org/1999/xhtml\"}", result[i+=1])
99
+ assert_equal("characters: \n ", result[i+=1])
100
+ assert_equal("start_element: xhtml:p, attr: {}", result[i+=1])
101
+ assert_equal("start_element_ns: p, attr: {}, prefix: xhtml, uri: http://www.w3.org/1999/xhtml, ns: {}", result[i+=1])
102
+ assert_equal("characters: hi there", result[i+=1])
103
+ assert_equal("end_element: xhtml:p", result[i+=1])
104
+ assert_equal("end_element_ns p, prefix: xhtml, uri: http://www.w3.org/1999/xhtml", result[i+=1])
105
+ assert_equal("characters: \n ", result[i+=1])
106
+ assert_equal("end_element: xhtml:div", result[i+=1])
107
+ assert_equal("end_element_ns div, prefix: xhtml, uri: http://www.w3.org/1999/xhtml", result[i+=1])
108
+ assert_equal("characters: \n ", result[i+=1])
109
+ assert_equal("end_element: content", result[i+=1])
110
+ assert_equal("end_element_ns content, prefix: , uri: http://www.w3.org/2005/Atom", result[i+=1])
111
+ assert_equal("characters: \n ", result[i+=1])
112
+ assert_equal("end_element: entry", result[i+=1])
113
+ assert_equal("end_element_ns entry, prefix: , uri: http://www.w3.org/2005/Atom", result[i+=1])
114
+ assert_equal("characters: \n", result[i+=1])
115
+ assert_equal("end_element: feed", result[i+=1])
116
+ assert_equal("end_element_ns feed, prefix: , uri: http://www.w3.org/2005/Atom", result[i+=1])
117
+ assert_equal("end_document", result[i+=1])
118
+ end
119
+
120
+ def test_file
121
+ parser = XML::SaxParser.file(saxtest_file)
122
+ parser.callbacks = TestCaseCallbacks.new
123
+ parser.parse
124
+ verify(parser)
125
+ end
126
+
127
+ def test_file_no_callbacks
128
+ parser = XML::SaxParser.file(saxtest_file)
129
+ assert_equal true, parser.parse
130
+ end
131
+
132
+ def test_noexistent_file
133
+ error = assert_raise(XML::Error) do
134
+ XML::SaxParser.file('i_dont_exist.xml')
135
+ end
136
+
137
+ assert_equal('Warning: failed to load external entity "i_dont_exist.xml".', error.to_s)
138
+ end
139
+
140
+ def test_nil_file
141
+ error = assert_raise(TypeError) do
142
+ XML::SaxParser.file(nil)
143
+ end
144
+
145
+ assert_equal("can't convert nil into String", error.to_s)
146
+ end
147
+
148
+ def test_io
149
+ File.open(saxtest_file) do |file|
150
+ parser = XML::SaxParser.io(file)
151
+ parser.callbacks = TestCaseCallbacks.new
152
+ parser.parse
153
+ verify(parser)
154
+ end
155
+ end
156
+
157
+ def test_nil_io
158
+ error = assert_raise(TypeError) do
159
+ XML::HTMLParser.io(nil)
160
+ end
161
+
162
+ assert_equal("Must pass in an IO object", error.to_s)
163
+ end
164
+
165
+ def test_string_no_callbacks
166
+ xml = File.read(saxtest_file)
167
+ parser = XML::SaxParser.string(xml)
168
+ assert_equal true, parser.parse
169
+ end
170
+
171
+ def test_string
172
+ xml = File.read(saxtest_file)
173
+ parser = XML::SaxParser.string(xml)
174
+ parser.callbacks = TestCaseCallbacks.new
175
+ parser.parse
176
+ verify(parser)
177
+ end
178
+
179
+ def test_string_io
180
+ xml = File.read(saxtest_file)
181
+ io = StringIO.new(xml)
182
+ parser = XML::SaxParser.io(io)
183
+
184
+ parser.callbacks = TestCaseCallbacks.new
185
+ parser.parse
186
+ verify(parser)
187
+ end
188
+
189
+ def test_nil_string
190
+ error = assert_raise(TypeError) do
191
+ XML::SaxParser.string(nil)
192
+ end
193
+
194
+ assert_equal("wrong argument type nil (expected String)", error.to_s)
195
+ end
196
+
197
+ def test_doctype
198
+ xml = <<-EOS
199
+ <?xml version="1.0" encoding="UTF-8"?>
200
+ <!DOCTYPE Results SYSTEM "results.dtd">
201
+ <Results>
202
+ <a>a1</a>
203
+ </Results>
204
+ EOS
205
+ parser = XML::SaxParser.string(xml)
206
+ parser.callbacks = DocTypeCallback.new
207
+ doc = parser.parse
208
+ assert_not_nil(doc)
209
+ end
210
+
211
+ def test_parse_warning
212
+ # Two xml PIs is a warning
213
+ xml = <<-EOS
214
+ <?xml version="1.0" encoding="utf-8"?>
215
+ <?xml-invalid?>
216
+ <Test/>
217
+ EOS
218
+
219
+ parser = XML::SaxParser.string(xml)
220
+ parser.callbacks = TestCaseCallbacks.new
221
+
222
+ parser.parse
223
+
224
+ # Check callbacks
225
+ result = parser.callbacks.result
226
+ i = -1
227
+ assert_equal("startdoc", result[i+=1])
228
+ assert_equal("error: Warning: xmlParsePITarget: invalid name prefix 'xml' at :2.", result[i+=1])
229
+ assert_equal("pi: xml-invalid ", result[i+=1])
230
+ assert_equal("start_element: Test, attr: {}", result[i+=1])
231
+ assert_equal("start_element_ns: Test, attr: {}, prefix: , uri: , ns: {}", result[i+=1])
232
+ assert_equal("end_element: Test", result[i+=1])
233
+ assert_equal("end_element_ns Test, prefix: , uri: ", result[i+=1])
234
+ assert_equal("end_document", result[i+=1])
235
+ end
236
+
237
+ def test_parse_error
238
+ xml = <<-EOS
239
+ <Results>
240
+ EOS
241
+ parser = XML::SaxParser.string(xml)
242
+ parser.callbacks = TestCaseCallbacks.new
243
+
244
+ error = assert_raise(XML::Error) do
245
+ doc = parser.parse
246
+ end
247
+
248
+ # Check callbacks
249
+ result = parser.callbacks.result
250
+
251
+ i = -1
252
+ assert_equal("startdoc", result[i+=1])
253
+ assert_equal("start_element: Results, attr: {}", result[i+=1])
254
+ assert_equal("start_element_ns: Results, attr: {}, prefix: , uri: , ns: {}", result[i+=1])
255
+ assert_equal("characters: \n", result[i+=1])
256
+ assert_equal("error: Fatal error: Premature end of data in tag Results line 1 at :2.", result[i+=1])
257
+ assert_equal("end_document", result[i+=1])
258
+
259
+ assert_not_nil(error)
260
+ assert_kind_of(XML::Error, error)
261
+ assert_equal("Fatal error: Premature end of data in tag Results line 1 at :2.", error.message)
262
+ assert_equal(XML::Error::PARSER, error.domain)
263
+ assert_equal(XML::Error::TAG_NOT_FINISHED, error.code)
264
+ assert_equal(XML::Error::FATAL, error.level)
265
+ assert_nil(error.file)
266
+ assert_equal(2, error.line)
267
+ assert_equal('Results', error.str1)
268
+ assert_nil(error.str2)
269
+ assert_nil(error.str3)
270
+ assert_equal(1, error.int1)
271
+ assert_equal(1, error.int2)
272
+ assert_nil(error.node)
273
+ end
274
+ end
@@ -0,0 +1,51 @@
1
+ require 'xml'
2
+ require 'test/unit'
3
+
4
+ class TestSchema < Test::Unit::TestCase
5
+ def setup
6
+ file = File.join(File.dirname(__FILE__), 'model/shiporder.xml')
7
+ @doc = XML::Document.file(file)
8
+ end
9
+
10
+ def teardown
11
+ @doc = nil
12
+ end
13
+
14
+ def schema
15
+ document = XML::Document.file(File.join(File.dirname(__FILE__), 'model/shiporder.xsd'))
16
+ schema = XML::Schema.document(document)
17
+ end
18
+
19
+ def test_from_doc
20
+ assert_instance_of(XML::Schema, schema)
21
+ end
22
+
23
+ def test_valid
24
+ assert(@doc.validate_schema(schema))
25
+ end
26
+
27
+ def test_invalid
28
+ new_node = XML::Node.new('invalid', 'this will mess up validation')
29
+ @doc.root.child_add(new_node)
30
+
31
+ error = assert_raise(XML::Error) do
32
+ @doc.validate_schema(schema)
33
+ end
34
+
35
+ assert_not_nil(error)
36
+ assert_kind_of(XML::Error, error)
37
+ assert(error.message.match(/Error: Element 'invalid': This element is not expected. Expected is \( item \)/))
38
+ assert_equal(XML::Error::SCHEMASV, error.domain)
39
+ assert_equal(XML::Error::SCHEMAV_ELEMENT_CONTENT, error.code)
40
+ assert_equal(XML::Error::ERROR, error.level)
41
+ assert(error.file.match(/shiporder.xml/))
42
+ assert_nil(error.line)
43
+ assert_nil(error.str1)
44
+ assert_nil(error.str2)
45
+ assert_nil(error.str3)
46
+ assert_equal(0, error.int1)
47
+ assert_equal(0, error.int2)
48
+ assert_not_nil(error.node)
49
+ assert_equal('invalid', error.node.name)
50
+ end
51
+ end
@@ -0,0 +1,220 @@
1
+ require 'xml'
2
+ require 'test/unit'
3
+
4
+ class TestTranversal < Test::Unit::TestCase
5
+ ROOT_NODES_LENGTH = 25
6
+ ROOT_ELEMENTS_LENGTH = 12
7
+
8
+ def setup
9
+ filename = File.join(File.dirname(__FILE__), 'model/books.xml')
10
+ @doc = XML::Document.file(filename)
11
+ end
12
+
13
+ def teardown
14
+ @doc = nil
15
+ end
16
+
17
+ def test_children
18
+ # Includes text nodes and such
19
+ assert_equal(ROOT_NODES_LENGTH, @doc.root.children.length)
20
+ end
21
+
22
+ def test_children_iteration
23
+ # Includes text nodes and such
24
+ nodes = @doc.root.children.inject([]) do |arr, node|
25
+ arr << node
26
+ arr
27
+ end
28
+
29
+ assert_equal(ROOT_NODES_LENGTH, nodes.length)
30
+ end
31
+
32
+ def test_each
33
+ # Includes text nodes and such
34
+ nodes = @doc.root.inject([]) do |arr, node|
35
+ arr << node
36
+ arr
37
+ end
38
+
39
+ assert_equal(ROOT_NODES_LENGTH, nodes.length)
40
+ end
41
+
42
+ def test_each_element
43
+ # Includes text nodes and such
44
+ nodes = []
45
+ @doc.root.each_element do |node|
46
+ nodes << node
47
+ end
48
+
49
+ assert_equal(ROOT_ELEMENTS_LENGTH, nodes.length)
50
+ end
51
+
52
+ def test_next
53
+ nodes = []
54
+
55
+ node = @doc.root.first
56
+
57
+ while node
58
+ nodes << node
59
+ node = node.next
60
+ end
61
+ assert_equal(ROOT_NODES_LENGTH, nodes.length)
62
+ end
63
+
64
+ def test_next?
65
+ first_node = @doc.root.first
66
+ assert(first_node.next?)
67
+
68
+ last_node = @doc.root.last
69
+ assert(!last_node.next?)
70
+ end
71
+
72
+ def test_prev
73
+ nodes = []
74
+
75
+ node = @doc.root.last
76
+
77
+ while node
78
+ nodes << node
79
+ node = node.prev
80
+ end
81
+ assert_equal(ROOT_NODES_LENGTH, nodes.length)
82
+ end
83
+
84
+ def test_prev?
85
+ first_node = @doc.root.first
86
+ assert(!first_node.prev?)
87
+
88
+ last_node = @doc.root.last
89
+ assert(last_node.prev?)
90
+ end
91
+
92
+ def test_parent?
93
+ assert(!@doc.parent?)
94
+ assert(@doc.root.parent?)
95
+ end
96
+
97
+ def test_child?
98
+ assert(@doc.child?)
99
+ assert(!@doc.root.first.child?)
100
+ end
101
+
102
+ def test_next_prev_equivalence
103
+ next_nodes = []
104
+ last_nodes = []
105
+
106
+ node = @doc.root.first
107
+ while node
108
+ next_nodes << node
109
+ node = node.next
110
+ end
111
+
112
+ node = @doc.root.last
113
+ while node
114
+ last_nodes << node
115
+ node = node.prev
116
+ end
117
+
118
+ assert_equal(next_nodes, last_nodes.reverse)
119
+ end
120
+
121
+ def test_next_children_equivalence
122
+ next_nodes = []
123
+
124
+ node = @doc.root.first
125
+ while node
126
+ next_nodes << node
127
+ node = node.next
128
+ end
129
+
130
+ assert_equal(@doc.root.children, next_nodes)
131
+ end
132
+
133
+ # node = @doc.find_first('book')
134
+ # node.children.each do |node|
135
+ # puts 1
136
+ #end
137
+ # @doc.root.children do |node|
138
+ # if node.node_type == XML::Node::ELEMENT_NODE
139
+ # puts node.name
140
+ #end
141
+ #end
142
+ #assert_equal(12,nodes.length)
143
+ #end
144
+
145
+ #def test_doc_class
146
+ #assert_instance_of(XML::Document, @doc)
147
+ #end
148
+
149
+ #def test_root_class
150
+ #assert_instance_of(XML::Node, @doc.root)
151
+ #end
152
+
153
+ #def test_node_class
154
+ #for n in nodes
155
+ #assert_instance_of(XML::Node, n)
156
+ #end
157
+ #end
158
+
159
+ #def test_find_class
160
+ #set = @doc.find('/ruby_array/fixnum')
161
+ #assert_instance_of(XML::XPath::Object, set)
162
+ #end
163
+
164
+ #def test_node_child_get
165
+ #assert_instance_of(TrueClass, @doc.root.child?)
166
+ #assert_instance_of(XML::Node, @doc.root.child)
167
+ #assert_equal('fixnum', @doc.root.child.name)
168
+ #end
169
+
170
+ #def test_node_doc
171
+ #for n in nodes
172
+ #assert_instance_of(XML::Document, n.doc) if n.document?
173
+ #end
174
+ #end
175
+
176
+ #def test_node_type_name
177
+ #assert_equal('element', nodes[0].node_type_name)
178
+ #assert_equal('element', nodes[1].node_type_name)
179
+ #end
180
+
181
+ #def test_node_find
182
+ #set = @doc.root.find('./fixnum').set
183
+ #assert_instance_of(XML::Node::Set, set)
184
+ #for node in set
185
+ #assert_instance_of(XML::Node, node)
186
+ #end
187
+ #end
188
+
189
+ #def test_equality
190
+ #node_a = @doc.find('/ruby_array/fixnum').first
191
+ #node_b = @doc.root.child
192
+ #assert(node_a == node_b)
193
+ #assert(node_a.eql?(node_b))
194
+ #assert(node_a.equal?(node_b))
195
+
196
+ #xp2 = XML::Parser.new()
197
+ #xp2.string = '<ruby_array uga="booga" foo="bar"><fixnum>one</fixnum><fixnum>two</fixnum></ruby_array>'
198
+ #doc2 = xp2.parse
199
+
200
+ #node_a2 = doc2.find('/ruby_array/fixnum').first
201
+
202
+ #assert(node_a.to_s == node_a2.to_s)
203
+ #assert(node_a == node_a2)
204
+ #assert(node_a.eql?(node_a2))
205
+ #assert(!node_a.equal?(node_a2))
206
+ #end
207
+
208
+ #def test_content()
209
+ #assert_equal('onetwo', @doc.root.content)
210
+
211
+ #first = @doc.root.child
212
+ #assert_equal('one', first.content)
213
+ #assert_equal('two', first.next.content)
214
+ #end
215
+
216
+ #def test_base
217
+ #doc = XML::Parser.string('<person />').parse
218
+ #assert_nil(doc.root.base)
219
+ #end
220
+ end