rubyjedi-nokogiri_java 1.4.0.20100513161003-java

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 (285) hide show
  1. data/.autotest +26 -0
  2. data/CHANGELOG.ja.rdoc +330 -0
  3. data/CHANGELOG.rdoc +341 -0
  4. data/Manifest.txt +277 -0
  5. data/README.ja.rdoc +105 -0
  6. data/README.rdoc +125 -0
  7. data/Rakefile +307 -0
  8. data/bin/nokogiri +49 -0
  9. data/deps.rip +5 -0
  10. data/ext/nokogiri/extconf.rb +149 -0
  11. data/ext/nokogiri/html_document.c +145 -0
  12. data/ext/nokogiri/html_document.h +10 -0
  13. data/ext/nokogiri/html_element_description.c +272 -0
  14. data/ext/nokogiri/html_element_description.h +10 -0
  15. data/ext/nokogiri/html_entity_lookup.c +32 -0
  16. data/ext/nokogiri/html_entity_lookup.h +8 -0
  17. data/ext/nokogiri/html_sax_parser_context.c +92 -0
  18. data/ext/nokogiri/html_sax_parser_context.h +11 -0
  19. data/ext/nokogiri/nokogiri.c +96 -0
  20. data/ext/nokogiri/nokogiri.h +148 -0
  21. data/ext/nokogiri/xml_attr.c +92 -0
  22. data/ext/nokogiri/xml_attr.h +9 -0
  23. data/ext/nokogiri/xml_attribute_decl.c +67 -0
  24. data/ext/nokogiri/xml_attribute_decl.h +9 -0
  25. data/ext/nokogiri/xml_cdata.c +54 -0
  26. data/ext/nokogiri/xml_cdata.h +9 -0
  27. data/ext/nokogiri/xml_comment.c +52 -0
  28. data/ext/nokogiri/xml_comment.h +9 -0
  29. data/ext/nokogiri/xml_document.c +386 -0
  30. data/ext/nokogiri/xml_document.h +24 -0
  31. data/ext/nokogiri/xml_document_fragment.c +46 -0
  32. data/ext/nokogiri/xml_document_fragment.h +10 -0
  33. data/ext/nokogiri/xml_dtd.c +192 -0
  34. data/ext/nokogiri/xml_dtd.h +10 -0
  35. data/ext/nokogiri/xml_element_content.c +123 -0
  36. data/ext/nokogiri/xml_element_content.h +10 -0
  37. data/ext/nokogiri/xml_element_decl.c +69 -0
  38. data/ext/nokogiri/xml_element_decl.h +9 -0
  39. data/ext/nokogiri/xml_encoding_handler.c +79 -0
  40. data/ext/nokogiri/xml_encoding_handler.h +8 -0
  41. data/ext/nokogiri/xml_entity_decl.c +97 -0
  42. data/ext/nokogiri/xml_entity_decl.h +10 -0
  43. data/ext/nokogiri/xml_entity_reference.c +50 -0
  44. data/ext/nokogiri/xml_entity_reference.h +9 -0
  45. data/ext/nokogiri/xml_io.c +31 -0
  46. data/ext/nokogiri/xml_io.h +11 -0
  47. data/ext/nokogiri/xml_namespace.c +82 -0
  48. data/ext/nokogiri/xml_namespace.h +13 -0
  49. data/ext/nokogiri/xml_node.c +1080 -0
  50. data/ext/nokogiri/xml_node.h +13 -0
  51. data/ext/nokogiri/xml_node_set.c +405 -0
  52. data/ext/nokogiri/xml_node_set.h +9 -0
  53. data/ext/nokogiri/xml_processing_instruction.c +54 -0
  54. data/ext/nokogiri/xml_processing_instruction.h +9 -0
  55. data/ext/nokogiri/xml_reader.c +593 -0
  56. data/ext/nokogiri/xml_reader.h +10 -0
  57. data/ext/nokogiri/xml_relax_ng.c +159 -0
  58. data/ext/nokogiri/xml_relax_ng.h +9 -0
  59. data/ext/nokogiri/xml_sax_parser.c +283 -0
  60. data/ext/nokogiri/xml_sax_parser.h +43 -0
  61. data/ext/nokogiri/xml_sax_parser_context.c +157 -0
  62. data/ext/nokogiri/xml_sax_parser_context.h +10 -0
  63. data/ext/nokogiri/xml_sax_push_parser.c +114 -0
  64. data/ext/nokogiri/xml_sax_push_parser.h +9 -0
  65. data/ext/nokogiri/xml_schema.c +156 -0
  66. data/ext/nokogiri/xml_schema.h +9 -0
  67. data/ext/nokogiri/xml_syntax_error.c +52 -0
  68. data/ext/nokogiri/xml_syntax_error.h +13 -0
  69. data/ext/nokogiri/xml_text.c +48 -0
  70. data/ext/nokogiri/xml_text.h +9 -0
  71. data/ext/nokogiri/xml_xpath.c +53 -0
  72. data/ext/nokogiri/xml_xpath.h +11 -0
  73. data/ext/nokogiri/xml_xpath_context.c +239 -0
  74. data/ext/nokogiri/xml_xpath_context.h +9 -0
  75. data/ext/nokogiri/xslt_stylesheet.c +131 -0
  76. data/ext/nokogiri/xslt_stylesheet.h +9 -0
  77. data/lib/isorelax.jar +0 -0
  78. data/lib/jing.jar +0 -0
  79. data/lib/nekodtd.jar +0 -0
  80. data/lib/nekohtml.jar +0 -0
  81. data/lib/nokogiri.rb +123 -0
  82. data/lib/nokogiri/css.rb +25 -0
  83. data/lib/nokogiri/css/generated_parser.rb +659 -0
  84. data/lib/nokogiri/css/generated_tokenizer.rb +145 -0
  85. data/lib/nokogiri/css/node.rb +99 -0
  86. data/lib/nokogiri/css/parser.rb +82 -0
  87. data/lib/nokogiri/css/parser.y +230 -0
  88. data/lib/nokogiri/css/syntax_error.rb +7 -0
  89. data/lib/nokogiri/css/tokenizer.rb +7 -0
  90. data/lib/nokogiri/css/tokenizer.rex +55 -0
  91. data/lib/nokogiri/css/xpath_visitor.rb +164 -0
  92. data/lib/nokogiri/decorators/slop.rb +33 -0
  93. data/lib/nokogiri/ffi/encoding_handler.rb +42 -0
  94. data/lib/nokogiri/ffi/html/document.rb +28 -0
  95. data/lib/nokogiri/ffi/html/element_description.rb +81 -0
  96. data/lib/nokogiri/ffi/html/entity_lookup.rb +16 -0
  97. data/lib/nokogiri/ffi/html/sax/parser_context.rb +38 -0
  98. data/lib/nokogiri/ffi/io_callbacks.rb +42 -0
  99. data/lib/nokogiri/ffi/libxml.rb +372 -0
  100. data/lib/nokogiri/ffi/structs/common_node.rb +26 -0
  101. data/lib/nokogiri/ffi/structs/html_elem_desc.rb +24 -0
  102. data/lib/nokogiri/ffi/structs/html_entity_desc.rb +13 -0
  103. data/lib/nokogiri/ffi/structs/xml_alloc.rb +16 -0
  104. data/lib/nokogiri/ffi/structs/xml_attr.rb +19 -0
  105. data/lib/nokogiri/ffi/structs/xml_attribute.rb +27 -0
  106. data/lib/nokogiri/ffi/structs/xml_buffer.rb +16 -0
  107. data/lib/nokogiri/ffi/structs/xml_char_encoding_handler.rb +11 -0
  108. data/lib/nokogiri/ffi/structs/xml_document.rb +108 -0
  109. data/lib/nokogiri/ffi/structs/xml_dtd.rb +28 -0
  110. data/lib/nokogiri/ffi/structs/xml_element.rb +26 -0
  111. data/lib/nokogiri/ffi/structs/xml_element_content.rb +17 -0
  112. data/lib/nokogiri/ffi/structs/xml_entity.rb +32 -0
  113. data/lib/nokogiri/ffi/structs/xml_enumeration.rb +12 -0
  114. data/lib/nokogiri/ffi/structs/xml_node.rb +28 -0
  115. data/lib/nokogiri/ffi/structs/xml_node_set.rb +53 -0
  116. data/lib/nokogiri/ffi/structs/xml_notation.rb +11 -0
  117. data/lib/nokogiri/ffi/structs/xml_ns.rb +15 -0
  118. data/lib/nokogiri/ffi/structs/xml_parser_context.rb +19 -0
  119. data/lib/nokogiri/ffi/structs/xml_relax_ng.rb +14 -0
  120. data/lib/nokogiri/ffi/structs/xml_sax_handler.rb +51 -0
  121. data/lib/nokogiri/ffi/structs/xml_sax_push_parser_context.rb +124 -0
  122. data/lib/nokogiri/ffi/structs/xml_schema.rb +13 -0
  123. data/lib/nokogiri/ffi/structs/xml_syntax_error.rb +31 -0
  124. data/lib/nokogiri/ffi/structs/xml_text_reader.rb +12 -0
  125. data/lib/nokogiri/ffi/structs/xml_xpath_context.rb +37 -0
  126. data/lib/nokogiri/ffi/structs/xml_xpath_object.rb +35 -0
  127. data/lib/nokogiri/ffi/structs/xml_xpath_parser_context.rb +20 -0
  128. data/lib/nokogiri/ffi/structs/xslt_stylesheet.rb +13 -0
  129. data/lib/nokogiri/ffi/xml/attr.rb +41 -0
  130. data/lib/nokogiri/ffi/xml/attribute_decl.rb +27 -0
  131. data/lib/nokogiri/ffi/xml/cdata.rb +19 -0
  132. data/lib/nokogiri/ffi/xml/comment.rb +18 -0
  133. data/lib/nokogiri/ffi/xml/document.rb +135 -0
  134. data/lib/nokogiri/ffi/xml/document_fragment.rb +21 -0
  135. data/lib/nokogiri/ffi/xml/dtd.rb +67 -0
  136. data/lib/nokogiri/ffi/xml/element_content.rb +43 -0
  137. data/lib/nokogiri/ffi/xml/element_decl.rb +19 -0
  138. data/lib/nokogiri/ffi/xml/entity_decl.rb +27 -0
  139. data/lib/nokogiri/ffi/xml/entity_reference.rb +19 -0
  140. data/lib/nokogiri/ffi/xml/namespace.rb +44 -0
  141. data/lib/nokogiri/ffi/xml/node.rb +465 -0
  142. data/lib/nokogiri/ffi/xml/node_set.rb +146 -0
  143. data/lib/nokogiri/ffi/xml/processing_instruction.rb +20 -0
  144. data/lib/nokogiri/ffi/xml/reader.rb +227 -0
  145. data/lib/nokogiri/ffi/xml/relax_ng.rb +85 -0
  146. data/lib/nokogiri/ffi/xml/sax/parser.rb +135 -0
  147. data/lib/nokogiri/ffi/xml/sax/parser_context.rb +67 -0
  148. data/lib/nokogiri/ffi/xml/sax/push_parser.rb +55 -0
  149. data/lib/nokogiri/ffi/xml/schema.rb +92 -0
  150. data/lib/nokogiri/ffi/xml/syntax_error.rb +98 -0
  151. data/lib/nokogiri/ffi/xml/text.rb +18 -0
  152. data/lib/nokogiri/ffi/xml/xpath.rb +19 -0
  153. data/lib/nokogiri/ffi/xml/xpath_context.rb +135 -0
  154. data/lib/nokogiri/ffi/xslt/stylesheet.rb +50 -0
  155. data/lib/nokogiri/html.rb +36 -0
  156. data/lib/nokogiri/html/builder.rb +35 -0
  157. data/lib/nokogiri/html/document.rb +88 -0
  158. data/lib/nokogiri/html/document_fragment.rb +15 -0
  159. data/lib/nokogiri/html/element_description.rb +23 -0
  160. data/lib/nokogiri/html/element_description_defaults.rb +671 -0
  161. data/lib/nokogiri/html/entity_lookup.rb +13 -0
  162. data/lib/nokogiri/html/sax/parser.rb +48 -0
  163. data/lib/nokogiri/html/sax/parser_context.rb +16 -0
  164. data/lib/nokogiri/nokogiri.jar +0 -0
  165. data/lib/nokogiri/syntax_error.rb +4 -0
  166. data/lib/nokogiri/version.rb +33 -0
  167. data/lib/nokogiri/version_warning.rb +11 -0
  168. data/lib/nokogiri/xml.rb +67 -0
  169. data/lib/nokogiri/xml/attr.rb +14 -0
  170. data/lib/nokogiri/xml/attribute_decl.rb +18 -0
  171. data/lib/nokogiri/xml/builder.rb +405 -0
  172. data/lib/nokogiri/xml/cdata.rb +11 -0
  173. data/lib/nokogiri/xml/character_data.rb +7 -0
  174. data/lib/nokogiri/xml/document.rb +163 -0
  175. data/lib/nokogiri/xml/document_fragment.rb +73 -0
  176. data/lib/nokogiri/xml/dtd.rb +11 -0
  177. data/lib/nokogiri/xml/element_content.rb +36 -0
  178. data/lib/nokogiri/xml/element_decl.rb +13 -0
  179. data/lib/nokogiri/xml/entity_decl.rb +15 -0
  180. data/lib/nokogiri/xml/fragment_handler.rb +73 -0
  181. data/lib/nokogiri/xml/namespace.rb +13 -0
  182. data/lib/nokogiri/xml/node.rb +730 -0
  183. data/lib/nokogiri/xml/node/save_options.rb +42 -0
  184. data/lib/nokogiri/xml/node_set.rb +318 -0
  185. data/lib/nokogiri/xml/notation.rb +6 -0
  186. data/lib/nokogiri/xml/parse_options.rb +85 -0
  187. data/lib/nokogiri/xml/pp.rb +2 -0
  188. data/lib/nokogiri/xml/pp/character_data.rb +18 -0
  189. data/lib/nokogiri/xml/pp/node.rb +56 -0
  190. data/lib/nokogiri/xml/processing_instruction.rb +8 -0
  191. data/lib/nokogiri/xml/reader.rb +74 -0
  192. data/lib/nokogiri/xml/relax_ng.rb +32 -0
  193. data/lib/nokogiri/xml/sax.rb +4 -0
  194. data/lib/nokogiri/xml/sax/document.rb +160 -0
  195. data/lib/nokogiri/xml/sax/parser.rb +115 -0
  196. data/lib/nokogiri/xml/sax/parser_context.rb +16 -0
  197. data/lib/nokogiri/xml/sax/push_parser.rb +60 -0
  198. data/lib/nokogiri/xml/schema.rb +61 -0
  199. data/lib/nokogiri/xml/syntax_error.rb +43 -0
  200. data/lib/nokogiri/xml/xpath.rb +10 -0
  201. data/lib/nokogiri/xml/xpath/syntax_error.rb +8 -0
  202. data/lib/nokogiri/xml/xpath_context.rb +16 -0
  203. data/lib/nokogiri/xslt.rb +48 -0
  204. data/lib/nokogiri/xslt/stylesheet.rb +25 -0
  205. data/lib/xercesImpl.jar +0 -0
  206. data/lib/xsd/xmlparser/nokogiri.rb +90 -0
  207. data/tasks/test.rb +100 -0
  208. data/test/css/test_nthiness.rb +159 -0
  209. data/test/css/test_parser.rb +282 -0
  210. data/test/css/test_tokenizer.rb +190 -0
  211. data/test/css/test_xpath_visitor.rb +76 -0
  212. data/test/ffi/test_document.rb +35 -0
  213. data/test/files/2ch.html +108 -0
  214. data/test/files/address_book.rlx +12 -0
  215. data/test/files/address_book.xml +10 -0
  216. data/test/files/bar/bar.xsd +4 -0
  217. data/test/files/dont_hurt_em_why.xml +422 -0
  218. data/test/files/exslt.xml +8 -0
  219. data/test/files/exslt.xslt +35 -0
  220. data/test/files/foo/foo.xsd +4 -0
  221. data/test/files/po.xml +32 -0
  222. data/test/files/po.xsd +66 -0
  223. data/test/files/shift_jis.html +10 -0
  224. data/test/files/shift_jis.xml +5 -0
  225. data/test/files/snuggles.xml +3 -0
  226. data/test/files/staff.dtd +10 -0
  227. data/test/files/staff.xml +59 -0
  228. data/test/files/staff.xslt +32 -0
  229. data/test/files/tlm.html +850 -0
  230. data/test/files/valid_bar.xml +2 -0
  231. data/test/helper.rb +137 -0
  232. data/test/html/sax/test_parser.rb +83 -0
  233. data/test/html/sax/test_parser_context.rb +48 -0
  234. data/test/html/test_builder.rb +164 -0
  235. data/test/html/test_document.rb +385 -0
  236. data/test/html/test_document_encoding.rb +77 -0
  237. data/test/html/test_document_fragment.rb +157 -0
  238. data/test/html/test_element_description.rb +98 -0
  239. data/test/html/test_named_characters.rb +14 -0
  240. data/test/html/test_node.rb +242 -0
  241. data/test/html/test_node_encoding.rb +27 -0
  242. data/test/test_convert_xpath.rb +135 -0
  243. data/test/test_css_cache.rb +45 -0
  244. data/test/test_encoding_handler.rb +46 -0
  245. data/test/test_jruby.rb +40 -0
  246. data/test/test_memory_leak.rb +87 -0
  247. data/test/test_nokogiri.rb +140 -0
  248. data/test/test_reader.rb +358 -0
  249. data/test/test_soap4r_sax.rb +52 -0
  250. data/test/test_xslt_transforms.rb +150 -0
  251. data/test/xml/node/test_save_options.rb +20 -0
  252. data/test/xml/node/test_subclass.rb +44 -0
  253. data/test/xml/sax/test_parser.rb +314 -0
  254. data/test/xml/sax/test_parser_context.rb +63 -0
  255. data/test/xml/sax/test_push_parser.rb +135 -0
  256. data/test/xml/test_attr.rb +38 -0
  257. data/test/xml/test_attribute_decl.rb +90 -0
  258. data/test/xml/test_builder.rb +167 -0
  259. data/test/xml/test_cdata.rb +38 -0
  260. data/test/xml/test_comment.rb +29 -0
  261. data/test/xml/test_document.rb +638 -0
  262. data/test/xml/test_document_encoding.rb +26 -0
  263. data/test/xml/test_document_fragment.rb +149 -0
  264. data/test/xml/test_dtd.rb +92 -0
  265. data/test/xml/test_dtd_encoding.rb +33 -0
  266. data/test/xml/test_element_content.rb +56 -0
  267. data/test/xml/test_element_decl.rb +73 -0
  268. data/test/xml/test_entity_decl.rb +83 -0
  269. data/test/xml/test_entity_reference.rb +21 -0
  270. data/test/xml/test_namespace.rb +70 -0
  271. data/test/xml/test_node.rb +740 -0
  272. data/test/xml/test_node_attributes.rb +34 -0
  273. data/test/xml/test_node_encoding.rb +107 -0
  274. data/test/xml/test_node_reparenting.rb +279 -0
  275. data/test/xml/test_node_set.rb +577 -0
  276. data/test/xml/test_parse_options.rb +52 -0
  277. data/test/xml/test_processing_instruction.rb +30 -0
  278. data/test/xml/test_reader_encoding.rb +126 -0
  279. data/test/xml/test_relax_ng.rb +60 -0
  280. data/test/xml/test_schema.rb +89 -0
  281. data/test/xml/test_syntax_error.rb +12 -0
  282. data/test/xml/test_text.rb +30 -0
  283. data/test/xml/test_unparented_node.rb +381 -0
  284. data/test/xml/test_xpath.rb +169 -0
  285. metadata +477 -0
@@ -0,0 +1,26 @@
1
+ require "helper"
2
+
3
+ module Nokogiri
4
+ module XML
5
+ if RUBY_VERSION =~ /^1\.9/
6
+ class TestDocumentEncoding < Nokogiri::TestCase
7
+ def setup
8
+ super
9
+ @xml = Nokogiri::XML(File.read(XML_FILE), XML_FILE, 'UTF-8')
10
+ end
11
+
12
+ def test_url
13
+ assert_equal @xml.encoding, @xml.url.encoding.name
14
+ end
15
+
16
+ def test_encoding
17
+ assert_equal @xml.encoding, @xml.encoding.encoding.name
18
+ end
19
+
20
+ def test_dotted_version
21
+ assert_equal 'UTF-8', Nokogiri::LIBXML_VERSION.encoding.name
22
+ end
23
+ end
24
+ end
25
+ end
26
+ end
@@ -0,0 +1,149 @@
1
+ require "helper"
2
+
3
+ module Nokogiri
4
+ module XML
5
+ class TestDocumentFragment < Nokogiri::TestCase
6
+ def setup
7
+ super
8
+ @xml = Nokogiri::XML.parse(File.read(XML_FILE), XML_FILE)
9
+ end
10
+
11
+ def test_new
12
+ fragment = Nokogiri::XML::DocumentFragment.new(@xml)
13
+ end
14
+
15
+ def test_fragment_should_have_document
16
+ fragment = Nokogiri::XML::DocumentFragment.new(@xml)
17
+ assert_equal @xml, fragment.document
18
+ end
19
+
20
+ def test_name
21
+ fragment = Nokogiri::XML::DocumentFragment.new(@xml)
22
+ assert_equal '#document-fragment', fragment.name
23
+ end
24
+
25
+ def test_static_method
26
+ fragment = Nokogiri::XML::DocumentFragment.parse("<div>a</div>")
27
+ assert_instance_of Nokogiri::XML::DocumentFragment, fragment
28
+ end
29
+
30
+ def test_static_method_with_namespaces
31
+ # follows different path in FragmentHandler#start_element which blew up after 597195ff
32
+ fragment = Nokogiri::XML::DocumentFragment.parse("<o:div>a</o:div>")
33
+ assert_instance_of Nokogiri::XML::DocumentFragment, fragment
34
+ end
35
+
36
+ def test_many_fragments
37
+ 100.times { Nokogiri::XML::DocumentFragment.new(@xml) }
38
+ end
39
+
40
+ def test_subclass
41
+ klass = Class.new(Nokogiri::XML::DocumentFragment)
42
+ fragment = klass.new(@xml, "<div>a</div>")
43
+ assert_instance_of klass, fragment
44
+ end
45
+
46
+ def test_subclass_parse
47
+ klass = Class.new(Nokogiri::XML::DocumentFragment)
48
+ doc = klass.parse("<div>a</div>")
49
+ assert_instance_of klass, doc
50
+ end
51
+
52
+ def test_xml_fragment
53
+ fragment = Nokogiri::XML.fragment("<div>a</div>")
54
+ assert_equal "<div>a</div>", fragment.to_s
55
+ end
56
+
57
+ def test_xml_fragment_has_multiple_toplevel_children
58
+ doc = "<div>b</div><div>e</div>"
59
+ fragment = Nokogiri::XML::Document.new.fragment(doc)
60
+ assert_equal "<div>b</div><div>e</div>", fragment.to_s
61
+ end
62
+
63
+ def test_xml_fragment_has_outer_text
64
+ # this test is descriptive, not prescriptive.
65
+ doc = "a<div>b</div>"
66
+ fragment = Nokogiri::XML::Document.new.fragment(doc)
67
+ assert_equal "a<div>b</div>", fragment.to_s
68
+
69
+ doc = "<div>b</div>c"
70
+ fragment = Nokogiri::XML::Document.new.fragment(doc)
71
+ assert_equal "<div>b</div>c", fragment.to_s
72
+ end
73
+
74
+ def test_xml_fragment_case_sensitivity
75
+ doc = "<crazyDiv>b</crazyDiv>"
76
+ fragment = Nokogiri::XML::Document.new.fragment(doc)
77
+ assert_equal "<crazyDiv>b</crazyDiv>", fragment.to_s
78
+ end
79
+
80
+ def test_xml_fragment_with_leading_whitespace
81
+ doc = " <div>b</div> "
82
+ fragment = Nokogiri::XML::Document.new.fragment(doc)
83
+ assert_equal "<div>b</div>", fragment.to_s
84
+ end
85
+
86
+ def test_xml_fragment_with_leading_whitespace_and_newline
87
+ doc = " \n<div>b</div> "
88
+ fragment = Nokogiri::XML::Document.new.fragment(doc)
89
+ assert_equal "<div>b</div>", fragment.to_s
90
+ end
91
+
92
+ def test_fragment_children_search
93
+ fragment = Nokogiri::XML::Document.new.fragment(
94
+ '<div><p id="content">hi</p></div>'
95
+ )
96
+ css = fragment.children.css('p')
97
+ xpath = fragment.children.xpath('.//p')
98
+ assert_equal css, xpath
99
+ end
100
+
101
+ def test_fragment_search
102
+ frag = Nokogiri::XML::Document.new.fragment '<p id="content">hi</p>'
103
+
104
+ p_tag = frag.css('#content').first
105
+ assert_equal 'p', p_tag.name
106
+
107
+ assert_equal p_tag, frag.xpath('./*[@id = \'content\']').first
108
+ end
109
+
110
+ def test_fragment_without_a_namespace_does_not_get_a_namespace
111
+ doc = Nokogiri::XML <<-EOX
112
+ <root xmlns="http://tenderlovemaking.com/" xmlns:foo="http://flavorjon.es/" xmlns:bar="http://google.com/">
113
+ <foo:existing></foo:existing>
114
+ </root>
115
+ EOX
116
+ frag = doc.fragment "<newnode></newnode>"
117
+ assert_nil frag.namespace
118
+ end
119
+
120
+ def test_fragment_namespace_resolves_against_document_root
121
+ doc = Nokogiri::XML <<-EOX
122
+ <root xmlns:foo="http://flavorjon.es/" xmlns:bar="http://google.com/">
123
+ <foo:existing></foo:existing>
124
+ </root>
125
+ EOX
126
+ ns = doc.root.namespace_definitions.detect { |x| x.prefix == "bar" }
127
+
128
+ frag = doc.fragment "<bar:newnode></bar:newnode>"
129
+ assert frag.children.first.namespace
130
+ if Nokogiri.uses_libxml?
131
+ assert_equal ns, frag.children.first.namespace
132
+ else
133
+ assert_equal ns.href, frag.children.first.namespace.href
134
+ assert_equal ns.prefix, frag.children.first.namespace.prefix
135
+ end
136
+ end
137
+
138
+ def test_fragment_invalid_namespace_is_silently_ignored
139
+ doc = Nokogiri::XML <<-EOX
140
+ <root xmlns:foo="http://flavorjon.es/" xmlns:bar="http://google.com/">
141
+ <foo:existing></foo:existing>
142
+ </root>
143
+ EOX
144
+ frag = doc.fragment "<baz:newnode></baz:newnode>"
145
+ assert_nil frag.children.first.namespace
146
+ end
147
+ end
148
+ end
149
+ end
@@ -0,0 +1,92 @@
1
+ require "helper"
2
+
3
+ module Nokogiri
4
+ module XML
5
+ class TestDTD < Nokogiri::TestCase
6
+ def setup
7
+ super
8
+ @xml = Nokogiri::XML(File.open(XML_FILE))
9
+ assert @dtd = @xml.internal_subset
10
+ end
11
+
12
+ def test_system_id
13
+ assert_equal 'staff.dtd', @dtd.system_id
14
+ end
15
+
16
+ def test_external_id
17
+ if Nokogiri.uses_libxml?
18
+ xml = Nokogiri::XML('<!DOCTYPE foo PUBLIC "bar"><foo />')
19
+ else
20
+ xml = Nokogiri::XML('<!DOCTYPE foo PUBLIC "bar" ""><foo />')
21
+ end
22
+ assert dtd = xml.internal_subset
23
+ assert_equal 'bar', dtd.external_id
24
+ end
25
+
26
+ def test_content
27
+ assert_raise NoMethodError do
28
+ @dtd.content
29
+ end
30
+ end
31
+
32
+ def test_attributes
33
+ assert_equal ['width'], @dtd.attributes.keys
34
+ assert_equal '0', @dtd.attributes['width'].default
35
+ end
36
+
37
+ def test_namespace
38
+ assert_raise NoMethodError do
39
+ @dtd.namespace
40
+ end
41
+ end
42
+
43
+ def test_namespace_definitions
44
+ assert_raise NoMethodError do
45
+ @dtd.namespace_definitions
46
+ end
47
+ end
48
+
49
+ def test_line
50
+ assert_raise NoMethodError do
51
+ @dtd.line
52
+ end
53
+ end
54
+
55
+ def test_validate
56
+ if Nokogiri.uses_libxml?
57
+ list = @xml.internal_subset.validate @xml
58
+ assert_equal 44, list.length
59
+ else
60
+ xml = Nokogiri::XML(File.open(XML_FILE)) {|cfg| cfg.dtdvalid}
61
+ list = xml.internal_subset.validate xml
62
+ assert_equal 37, list.length
63
+ end
64
+ end
65
+
66
+ def test_external_subsets
67
+ assert subset = @xml.internal_subset
68
+ assert_equal 'staff', subset.name
69
+ end
70
+
71
+ def test_entities
72
+ assert entities = @dtd.entities
73
+ assert_equal %w[ ent1 ent2 ent3 ent4 ent5 ].sort, entities.keys.sort
74
+ end
75
+
76
+ def test_elements
77
+ assert elements = @dtd.elements
78
+ assert_equal %w[ br ], elements.keys
79
+ assert_equal 'br', elements['br'].name
80
+ end
81
+
82
+ def test_notations
83
+ assert notations = @dtd.notations
84
+ assert_equal %w[ notation1 notation2 ].sort, notations.keys.sort
85
+ assert notation1 = notations['notation1']
86
+ assert_equal 'notation1', notation1.name
87
+ assert_equal 'notation1File', notation1.public_id
88
+ assert_nil notation1.system_id
89
+ end
90
+ end
91
+ end
92
+ end
@@ -0,0 +1,33 @@
1
+ # -*- coding: utf-8 -*-
2
+
3
+ require "helper"
4
+
5
+ module Nokogiri
6
+ module XML
7
+ if RUBY_VERSION =~ /^1\.9/
8
+ class TestDTDEncoding < Nokogiri::TestCase
9
+ def setup
10
+ super
11
+ @xml = Nokogiri::XML(File.read(XML_FILE), XML_FILE, 'UTF-8')
12
+ assert @dtd = @xml.internal_subset
13
+ end
14
+
15
+ def test_entities
16
+ @dtd.entities.each do |k,v|
17
+ assert_equal @xml.encoding, k.encoding.name
18
+ end
19
+ end
20
+
21
+ def test_notations
22
+ @dtd.notations.each do |k,notation|
23
+ assert_equal 'UTF-8', k.encoding.name
24
+ %w{ name public_id system_id }.each do |attribute|
25
+ v = notation.send(:"#{attribute}") || next
26
+ assert_equal 'UTF-8', v.encoding.name
27
+ end
28
+ end
29
+ end
30
+ end
31
+ end
32
+ end
33
+ end
@@ -0,0 +1,56 @@
1
+ require "helper"
2
+
3
+ module Nokogiri
4
+ module XML
5
+ class TestElementContent < Nokogiri::TestCase
6
+ def setup
7
+ super
8
+ @xml = Nokogiri::XML(<<-eoxml)
9
+ <?xml version="1.0"?><?TEST-STYLE PIDATA?>
10
+ <!DOCTYPE staff SYSTEM "staff.dtd" [
11
+ <!ELEMENT br EMPTY>
12
+ <!ELEMENT div1 (head, (p | list | note)*, div2*)>
13
+ <!ELEMENT div2 (tender:love)>
14
+ ]>
15
+ <root/>
16
+ eoxml
17
+ @elements = @xml.internal_subset.children.find_all { |x|
18
+ x.type == 15
19
+ }
20
+ @tree = @elements[1].content
21
+ end
22
+
23
+ def test_allowed_content_not_defined
24
+ assert_nil @elements.first.content
25
+ end
26
+
27
+ def test_document
28
+ assert @tree
29
+ assert_equal @xml, @tree.document
30
+ end
31
+
32
+ def test_type
33
+ assert_equal ElementContent::SEQ, @tree.type
34
+ end
35
+
36
+ def test_children
37
+ assert_equal 2, @tree.children.length
38
+ end
39
+
40
+ def test_name
41
+ assert_nil @tree.name
42
+ assert_equal 'head', @tree.children.first.name
43
+ assert_equal 'p', @tree.children[1].children.first.children.first.name
44
+ end
45
+
46
+ def test_occur
47
+ assert_equal ElementContent::ONCE, @tree.occur
48
+ end
49
+
50
+ def test_prefix
51
+ assert_nil @tree.prefix
52
+ assert_equal 'tender', @elements[2].content.prefix
53
+ end
54
+ end
55
+ end
56
+ end
@@ -0,0 +1,73 @@
1
+ require "helper"
2
+
3
+ module Nokogiri
4
+ module XML
5
+ class TestElementDecl < Nokogiri::TestCase
6
+ def setup
7
+ super
8
+ @xml = Nokogiri::XML(<<-eoxml)
9
+ <?xml version="1.0"?><?TEST-STYLE PIDATA?>
10
+ <!DOCTYPE staff SYSTEM "staff.dtd" [
11
+ <!ELEMENT br EMPTY>
12
+ <!ELEMENT div1 (head, (p | list | note)*, div2*)>
13
+ <!ELEMENT my:way EMPTY>
14
+ <!ATTLIST br width CDATA "0">
15
+ <!ATTLIST br height CDATA "0">
16
+ ]>
17
+ <root/>
18
+ eoxml
19
+ @elements = @xml.internal_subset.children.find_all { |x|
20
+ x.type == 15
21
+ }
22
+ end
23
+
24
+ def test_inspect
25
+ e = @elements.first
26
+ assert_equal(
27
+ "#<#{e.class.name}:#{sprintf("0x%x", e.object_id)} #{e.to_s.inspect}>",
28
+ e.inspect
29
+ )
30
+ end
31
+
32
+ def test_prefix
33
+ assert_nil @elements[1].prefix
34
+ assert_equal 'my', @elements[2].prefix
35
+ end
36
+
37
+ def test_line
38
+ assert_raise NoMethodError do
39
+ @elements.first.line
40
+ end
41
+ end
42
+
43
+ def test_namespace
44
+ assert_raise NoMethodError do
45
+ @elements.first.namespace
46
+ end
47
+ end
48
+
49
+ def test_namespace_definitions
50
+ assert_raise NoMethodError do
51
+ @elements.first.namespace_definitions
52
+ end
53
+ end
54
+
55
+ def test_element_type
56
+ assert_equal 1, @elements.first.element_type
57
+ end
58
+
59
+ def test_type
60
+ assert_equal 15, @elements.first.type
61
+ end
62
+
63
+ def test_class
64
+ assert_instance_of Nokogiri::XML::ElementDecl, @elements.first
65
+ end
66
+
67
+ def test_attributes
68
+ assert_equal 2, @elements.first.attribute_nodes.length
69
+ assert_equal 'width', @elements.first.attribute_nodes.first.name
70
+ end
71
+ end
72
+ end
73
+ end
@@ -0,0 +1,83 @@
1
+ require "helper"
2
+
3
+ module Nokogiri
4
+ module XML
5
+ class TestEntityDecl < Nokogiri::TestCase
6
+ def setup
7
+ super
8
+ @xml = Nokogiri::XML(<<-eoxml)
9
+ <?xml version="1.0"?><?TEST-STYLE PIDATA?>
10
+ <!DOCTYPE staff SYSTEM "staff.dtd" [
11
+ <!ENTITY ent1 "es">
12
+ <!ENTITY nocontent "">
13
+ ]>
14
+ <root />
15
+ eoxml
16
+
17
+ @entities = @xml.internal_subset.children
18
+ @entity_decl = @entities.first
19
+ end
20
+
21
+ def test_external_id
22
+ assert_nil @entity_decl.external_id
23
+ end
24
+
25
+ def test_system_id
26
+ assert_nil @entity_decl.system_id
27
+ end
28
+
29
+ def test_entity_type
30
+ assert_equal 1, @entity_decl.entity_type
31
+ end
32
+
33
+ def test_original_content
34
+ assert_equal "es", @entity_decl.original_content
35
+ assert_nil @entities[1].original_content
36
+ end
37
+
38
+ def test_content
39
+ assert_equal "es", @entity_decl.content
40
+ assert_nil @entities[1].content
41
+ end
42
+
43
+ def test_type
44
+ assert_equal 17, @entities.first.type
45
+ end
46
+
47
+ def test_class
48
+ assert_instance_of Nokogiri::XML::EntityDecl, @entities.first
49
+ end
50
+
51
+ def test_attributes
52
+ assert_raise NoMethodError do
53
+ @entity_decl.attributes
54
+ end
55
+ end
56
+
57
+ def test_namespace
58
+ assert_raise NoMethodError do
59
+ @entity_decl.namespace
60
+ end
61
+ end
62
+
63
+ def test_namespace_definitions
64
+ assert_raise NoMethodError do
65
+ @entity_decl.namespace_definitions
66
+ end
67
+ end
68
+
69
+ def test_line
70
+ assert_raise NoMethodError do
71
+ @entity_decl.line
72
+ end
73
+ end
74
+
75
+ def test_inspect
76
+ assert_equal(
77
+ "#<#{@entity_decl.class.name}:#{sprintf("0x%x", @entity_decl.object_id)} #{@entity_decl.to_s.inspect}>",
78
+ @entity_decl.inspect
79
+ )
80
+ end
81
+ end
82
+ end
83
+ end