libxml-ruby 1.1.4 → 2.0.0

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 (146) hide show
  1. data/{CHANGES → HISTORY} +35 -0
  2. data/LICENSE +1 -0
  3. data/MANIFEST +165 -0
  4. data/{README → README.rdoc} +2 -2
  5. data/Rakefile +47 -147
  6. data/ext/libxml/libxml.c +17 -1
  7. data/ext/libxml/ruby_libxml.h +9 -1
  8. data/ext/libxml/ruby_xml_attr.c +3 -3
  9. data/ext/libxml/ruby_xml_attr_decl.c +32 -32
  10. data/ext/libxml/ruby_xml_attributes.c +1 -1
  11. data/ext/libxml/ruby_xml_cbg.c +1 -2
  12. data/ext/libxml/ruby_xml_document.c +26 -4
  13. data/ext/libxml/ruby_xml_dtd.c +3 -3
  14. data/ext/libxml/ruby_xml_encoding.c +92 -5
  15. data/ext/libxml/ruby_xml_encoding.h +4 -0
  16. data/ext/libxml/ruby_xml_namespace.c +2 -2
  17. data/ext/libxml/ruby_xml_node.c +14 -14
  18. data/ext/libxml/ruby_xml_parser_context.c +8 -8
  19. data/ext/libxml/ruby_xml_reader.c +98 -43
  20. data/ext/libxml/ruby_xml_sax2_handler.c +13 -1
  21. data/ext/libxml/ruby_xml_sax_parser.c +4 -5
  22. data/ext/libxml/ruby_xml_version.h +5 -5
  23. data/ext/libxml/ruby_xml_xpath_context.c +9 -6
  24. data/ext/libxml/ruby_xml_xpath_object.c +1 -1
  25. data/ext/vc/libxml_ruby.sln +4 -4
  26. data/lib/libxml.rb +29 -29
  27. data/lib/libxml/attr.rb +112 -110
  28. data/lib/libxml/attr_decl.rb +2 -0
  29. data/lib/libxml/attributes.rb +13 -11
  30. data/lib/libxml/document.rb +192 -190
  31. data/lib/libxml/error.rb +89 -87
  32. data/lib/libxml/hpricot.rb +77 -75
  33. data/lib/libxml/html_parser.rb +96 -94
  34. data/lib/libxml/namespace.rb +61 -59
  35. data/lib/libxml/namespaces.rb +37 -35
  36. data/lib/libxml/node.rb +398 -384
  37. data/lib/libxml/ns.rb +21 -19
  38. data/lib/libxml/parser.rb +366 -364
  39. data/lib/libxml/properties.rb +22 -20
  40. data/lib/libxml/reader.rb +2 -0
  41. data/lib/libxml/sax_callbacks.rb +179 -177
  42. data/lib/libxml/sax_parser.rb +57 -55
  43. data/lib/libxml/tree.rb +28 -26
  44. data/lib/libxml/xpath_object.rb +15 -13
  45. data/lib/xml.rb +16 -14
  46. data/lib/xml/libxml.rb +10 -8
  47. data/libxml-ruby.gemspec +50 -0
  48. data/script/benchmark/depixelate +634 -0
  49. data/script/benchmark/hamlet.xml +9055 -0
  50. data/script/benchmark/parsecount +170 -0
  51. data/script/benchmark/sock_entries.xml +507 -0
  52. data/script/benchmark/throughput +41 -0
  53. data/script/test +6 -0
  54. data/test/etc_doc_to_s.rb +21 -19
  55. data/test/ets_doc_file.rb +17 -15
  56. data/test/ets_doc_to_s.rb +23 -21
  57. data/test/ets_gpx.rb +28 -26
  58. data/test/ets_node_gc.rb +23 -21
  59. data/test/ets_tsr.rb +11 -9
  60. data/test/model/bands.iso-8859-1.xml +5 -0
  61. data/test/model/bands.utf-8.xml +5 -0
  62. data/test/rb-magic-comment.rb +33 -0
  63. data/test/tc_attr.rb +181 -170
  64. data/test/tc_attr_decl.rb +3 -1
  65. data/test/tc_attributes.rb +134 -132
  66. data/test/tc_deprecated_require.rb +13 -11
  67. data/test/tc_document.rb +119 -113
  68. data/test/tc_document_write.rb +186 -117
  69. data/test/tc_dtd.rb +125 -123
  70. data/test/tc_error.rb +3 -1
  71. data/test/tc_html_parser.rb +139 -137
  72. data/test/tc_namespace.rb +61 -58
  73. data/test/tc_namespaces.rb +176 -173
  74. data/test/tc_node.rb +257 -180
  75. data/test/tc_node_cdata.rb +51 -49
  76. data/test/tc_node_comment.rb +33 -30
  77. data/test/tc_node_copy.rb +42 -40
  78. data/test/tc_node_edit.rb +159 -157
  79. data/test/tc_node_text.rb +71 -69
  80. data/test/tc_node_write.rb +41 -16
  81. data/test/tc_node_xlink.rb +29 -26
  82. data/test/tc_parser.rb +335 -329
  83. data/test/tc_parser_context.rb +188 -185
  84. data/test/tc_properties.rb +39 -36
  85. data/test/tc_reader.rb +297 -283
  86. data/test/tc_relaxng.rb +54 -51
  87. data/test/tc_sax_parser.rb +275 -273
  88. data/test/tc_schema.rb +53 -51
  89. data/test/tc_traversal.rb +222 -220
  90. data/test/tc_xinclude.rb +21 -19
  91. data/test/tc_xml.rb +3 -1
  92. data/test/tc_xpath.rb +195 -193
  93. data/test/tc_xpath_context.rb +80 -78
  94. data/test/tc_xpath_expression.rb +38 -35
  95. data/test/tc_xpointer.rb +74 -72
  96. data/test/test_helper.rb +14 -0
  97. data/test/test_suite.rb +39 -33
  98. metadata +65 -105
  99. data/doc/css/normal.css +0 -182
  100. data/doc/img/raze-tiny.png +0 -0
  101. data/doc/img/red-cube.jpg +0 -0
  102. data/doc/img/xml-ruby.png +0 -0
  103. data/doc/index.xml +0 -43
  104. data/doc/install.xml +0 -77
  105. data/doc/layout.rhtml +0 -38
  106. data/doc/layout.xsl +0 -67
  107. data/doc/license.xml +0 -32
  108. data/doc/log/changelog.xml +0 -1324
  109. data/doc/log/changelog.xsl +0 -42
  110. data/ext/libxml/Makefile +0 -156
  111. data/ext/libxml/extconf.h +0 -5
  112. data/ext/libxml/libxml-ruby.so.a +0 -0
  113. data/ext/libxml/libxml.o +0 -0
  114. data/ext/libxml/libxml_ruby.so +0 -0
  115. data/ext/libxml/mkmf.log +0 -129
  116. data/ext/libxml/ruby_xml.o +0 -0
  117. data/ext/libxml/ruby_xml_attr.o +0 -0
  118. data/ext/libxml/ruby_xml_attr_decl.o +0 -0
  119. data/ext/libxml/ruby_xml_attributes.o +0 -0
  120. data/ext/libxml/ruby_xml_cbg.o +0 -0
  121. data/ext/libxml/ruby_xml_document.o +0 -0
  122. data/ext/libxml/ruby_xml_dtd.o +0 -0
  123. data/ext/libxml/ruby_xml_encoding.o +0 -0
  124. data/ext/libxml/ruby_xml_error.o +0 -0
  125. data/ext/libxml/ruby_xml_html_parser.o +0 -0
  126. data/ext/libxml/ruby_xml_html_parser_context.o +0 -0
  127. data/ext/libxml/ruby_xml_html_parser_options.o +0 -0
  128. data/ext/libxml/ruby_xml_input_cbg.o +0 -0
  129. data/ext/libxml/ruby_xml_io.o +0 -0
  130. data/ext/libxml/ruby_xml_namespace.o +0 -0
  131. data/ext/libxml/ruby_xml_namespaces.o +0 -0
  132. data/ext/libxml/ruby_xml_node.o +0 -0
  133. data/ext/libxml/ruby_xml_parser.o +0 -0
  134. data/ext/libxml/ruby_xml_parser_context.o +0 -0
  135. data/ext/libxml/ruby_xml_parser_options.o +0 -0
  136. data/ext/libxml/ruby_xml_reader.o +0 -0
  137. data/ext/libxml/ruby_xml_relaxng.o +0 -0
  138. data/ext/libxml/ruby_xml_sax2_handler.o +0 -0
  139. data/ext/libxml/ruby_xml_sax_parser.o +0 -0
  140. data/ext/libxml/ruby_xml_schema.o +0 -0
  141. data/ext/libxml/ruby_xml_xinclude.o +0 -0
  142. data/ext/libxml/ruby_xml_xpath.o +0 -0
  143. data/ext/libxml/ruby_xml_xpath_context.o +0 -0
  144. data/ext/libxml/ruby_xml_xpath_expression.o +0 -0
  145. data/ext/libxml/ruby_xml_xpath_object.o +0 -0
  146. data/ext/libxml/ruby_xml_xpointer.o +0 -0
data/test/tc_node.rb CHANGED
@@ -1,181 +1,258 @@
1
- require 'xml'
2
- require 'test/unit'
3
-
4
- class TestNode < Test::Unit::TestCase
5
- def setup
6
- # Strip spaces to make testing easier
7
- XML.default_keep_blanks = false
8
- file = File.join(File.dirname(__FILE__), 'model/bands.xml')
9
- @doc = XML::Document.file(file)
10
- end
11
-
12
- def teardown
13
- XML.default_keep_blanks = true
14
- @doc = nil
15
- end
16
-
17
- def nodes
18
- # Find all nodes with a country attributes
19
- @doc.find('*[@country]')
20
- end
21
-
22
- def test_doc_class
23
- assert_instance_of(XML::Document, @doc)
24
- end
25
-
26
- def test_doc_node_type
27
- assert_equal XML::Node::DOCUMENT_NODE, @doc.node_type
28
- end
29
-
30
- def test_root_class
31
- assert_instance_of(XML::Node, @doc.root)
32
- end
33
-
34
- def test_root_node_type
35
- assert_equal XML::Node::ELEMENT_NODE, @doc.root.node_type
36
- end
37
-
38
- def test_node_class
39
- for n in nodes
40
- assert_instance_of(XML::Node, n)
41
- end
42
- end
43
-
44
- def test_context
45
- node = @doc.root
46
- context = node.context
47
- assert_instance_of(XML::XPath::Context, context)
48
- end
49
-
50
- def test_find
51
- assert_instance_of(XML::XPath::Object, self.nodes)
52
- end
53
-
54
- def test_node_child_get
55
- assert_instance_of(TrueClass, @doc.root.child?)
56
- assert_instance_of(XML::Node, @doc.root.child)
57
- assert_equal("m\303\266tley_cr\303\274e", @doc.root.child.name)
58
- end
59
-
60
- def test_node_doc
61
- for n in nodes
62
- assert_instance_of(XML::Document, n.doc) if n.document?
63
- end
64
- end
65
-
66
- def test_name
67
- assert_equal("m\303\266tley_cr\303\274e", nodes[0].name)
68
- assert_equal("iron_maiden", nodes[1].name)
69
- end
70
-
71
- def test_node_find
72
- nodes = @doc.root.find('./fixnum')
73
- for node in nodes
74
- assert_instance_of(XML::Node, node)
75
- end
76
- end
77
-
78
- def test_equality
79
- node_a = @doc.find_first('*[@country]')
80
- node_b = @doc.root.child
81
-
82
- assert(node_a == node_b)
83
- assert(node_a.eql?(node_b))
84
- assert(node_a.equal?(node_b))
85
-
86
- file = File.join(File.dirname(__FILE__), 'model/bands.xml')
87
- doc2 = XML::Document.file(file)
88
-
89
- node_a2 = doc2.find_first('*[@country]')
90
-
91
- assert(node_a.to_s == node_a2.to_s)
92
- assert(node_a == node_a2)
93
- assert(node_a.eql?(node_a2))
94
- assert(!node_a.equal?(node_a2))
95
- end
96
-
97
- def test_equality_nil
98
- node = @doc.root
99
- assert(node != nil)
100
- end
101
-
102
- def test_equality_wrong_type
103
- node = @doc.root
104
-
105
- assert_raises(TypeError) do
106
- assert(node != 'abc')
107
- end
108
- end
109
-
110
- def test_content
111
- assert_equal("An American heavy metal band formed in Los Angeles, California in 1981.British heavy metal band formed in 1975.",
112
- @doc.root.content)
113
-
114
- first = @doc.root.child
115
- assert_equal('An American heavy metal band formed in Los Angeles, California in 1981.', first.content)
116
- assert_equal('British heavy metal band formed in 1975.', first.next.content)
117
- end
118
-
119
- def test_base
120
- doc = XML::Parser.string('<person />').parse
121
- assert_nil(doc.root.base)
122
- end
123
-
124
- # We use the same facility that libXSLT does here to disable output escaping.
125
- # This lets you specify that the node's content should be rendered unaltered
126
- # whenever it is being output. This is useful for things like <script> and
127
- # <style> nodes in HTML documents if you don't want to be forced to wrap them
128
- # in CDATA nodes. Or if you are sanitizing existing HTML documents and want
129
- # to preserve the content of any of the text nodes.
130
- #
131
- def test_output_escaping
132
- text = '<bad-script>if (a &lt; b || b &gt; c) { return "text"; }<stop/>return "&gt;&gt;&gt;snip&lt;&lt;&lt;";</bad-script>'
133
- node = XML::Parser.string(text).parse.root
134
- assert_equal text, node.to_s
135
-
136
- text_noenc = '<bad-script>if (a < b || b > c) { return "text"; }<stop/>return ">>>snip<<<";</bad-script>'
137
- node.output_escaping = false
138
- assert_equal text_noenc, node.to_s
139
-
140
- node.output_escaping = true
141
- assert_equal text, node.to_s
142
-
143
- node.output_escaping = nil
144
- assert_equal text_noenc, node.to_s
145
-
146
- node.output_escaping = true
147
- assert_equal text, node.to_s
148
- end
149
-
150
- # Just a sanity check for output escaping.
151
- def test_output_escaping_sanity
152
- text = '<bad-script>if (a &lt; b || b &gt; c) { return "text"; }<stop/>return "&gt;&gt;&gt;snip&lt;&lt;&lt;";</bad-script>'
153
- node = XML::Parser.string(text).parse.root
154
- affected = node.find('//text()')
155
-
156
- check_escaping = lambda do |flag|
157
- assert_equal('bad-script', node.name)
158
- assert_equal(flag, node.output_escaping?)
159
- affected.each do |x|
160
- assert_equal(flag ? 'text' : 'textnoenc', x.name)
161
- assert_equal(flag, x.output_escaping?)
162
- end
163
- end
164
-
165
- node.output_escaping = false
166
- check_escaping[false]
167
-
168
- node.output_escaping = true
169
- check_escaping[true]
170
-
171
- node.output_escaping = nil
172
- check_escaping[false]
173
-
174
- node.output_escaping = true
175
- check_escaping[true]
176
-
177
- affected.first.output_escaping = true
178
- affected.last.output_escaping = false
179
- assert node.output_escaping?.nil?
180
- end
1
+ # encoding: UTF-8
2
+
3
+ require './test_helper'
4
+ require 'test/unit'
5
+
6
+ class TestNode < Test::Unit::TestCase
7
+ def setup
8
+ load_encoding("utf-8")
9
+ end
10
+
11
+ def teardown
12
+ XML.default_keep_blanks = true
13
+ @doc = nil
14
+ end
15
+
16
+ def load_encoding(name)
17
+ @encoding = Encoding.find(name) if defined?(Encoding)
18
+ @file_name = "model/bands.#{name.downcase}.xml"
19
+
20
+ # Strip spaces to make testing easier
21
+ XML.default_keep_blanks = false
22
+ file = File.join(File.dirname(__FILE__), @file_name)
23
+ @doc = XML::Document.file(file)
24
+ end
25
+
26
+ def nodes
27
+ # Find all nodes with a country attributes
28
+ @doc.find('*[@country]')
29
+ end
30
+
31
+ def test_doc_class
32
+ assert_instance_of(XML::Document, @doc)
33
+ end
34
+
35
+ def test_doc_node_type
36
+ assert_equal XML::Node::DOCUMENT_NODE, @doc.node_type
37
+ end
38
+
39
+ def test_root_class
40
+ assert_instance_of(XML::Node, @doc.root)
41
+ end
42
+
43
+ def test_root_node_type
44
+ assert_equal XML::Node::ELEMENT_NODE, @doc.root.node_type
45
+ end
46
+
47
+ def test_node_class
48
+ for n in nodes
49
+ assert_instance_of(XML::Node, n)
50
+ end
51
+ end
52
+
53
+ def test_context
54
+ node = @doc.root
55
+ context = node.context
56
+ assert_instance_of(XML::XPath::Context, context)
57
+ end
58
+
59
+ def test_find
60
+ assert_instance_of(XML::XPath::Object, self.nodes)
61
+ end
62
+
63
+ def test_node_child_get
64
+ assert_instance_of(TrueClass, @doc.root.child?)
65
+ assert_instance_of(XML::Node, @doc.root.child)
66
+
67
+ if defined?(Encoding)
68
+ assert_equal(@encoding, @doc.root.child.name.encoding)
69
+ assert_equal("m\u00F6tley_cr\u00FCe", @doc.root.child.name)
70
+ else
71
+ assert_equal("m\303\266tley_cr\303\274e", @doc.root.child.name)
72
+ end
73
+ end
74
+
75
+ def test_node_doc
76
+ for n in nodes
77
+ assert_instance_of(XML::Document, n.doc) if n.document?
78
+ end
79
+ end
80
+
81
+ def test_name
82
+ if defined?(Encoding)
83
+ assert_equal(@encoding, nodes[0].name.encoding)
84
+ assert_equal("m\u00F6tley_cr\u00FCe", nodes[0].name)
85
+ else
86
+ assert_equal("m\303\266tley_cr\303\274e", nodes[0].name)
87
+ end
88
+ assert_equal("iron_maiden", nodes[1].name)
89
+ end
90
+
91
+ def test_name_iso_8859_1
92
+ load_encoding("iso-8859-1")
93
+
94
+ if defined?(Encoding)
95
+ assert_equal(@encoding, nodes[0].name.encoding)
96
+ assert_equal("m\303\266tley_cr\303\274e".force_encoding(@encoding), nodes[0].name)
97
+ else
98
+ assert_equal("m\303\266tley_cr\303\274e", nodes[0].name)
99
+ end
100
+ assert_equal("iron_maiden", nodes[1].name)
101
+ end
102
+
103
+ def test_node_find
104
+ nodes = @doc.root.find('./fixnum')
105
+ for node in nodes
106
+ assert_instance_of(XML::Node, node)
107
+ end
108
+ end
109
+
110
+ def test_equality
111
+ node_a = @doc.find_first('*[@country]')
112
+ node_b = @doc.root.child
113
+
114
+ assert(node_a == node_b)
115
+ assert(node_a.eql?(node_b))
116
+ assert(node_a.equal?(node_b))
117
+
118
+ file = File.join(File.dirname(__FILE__), @file_name)
119
+ doc2 = XML::Document.file(file)
120
+
121
+ node_a2 = doc2.find_first('*[@country]')
122
+
123
+ assert_equal(node_a.to_s, node_a2.to_s)
124
+ assert_equal(node_a, node_a2)
125
+ assert(node_a.eql?(node_a2))
126
+ assert(!node_a.equal?(node_a2))
127
+ end
128
+
129
+ def test_equality_nil
130
+ node = @doc.root
131
+ assert(node != nil)
132
+ end
133
+
134
+ def test_equality_wrong_type
135
+ node = @doc.root
136
+
137
+ assert_raise(TypeError) do
138
+ assert(node != 'abc')
139
+ end
140
+ end
141
+
142
+ def test_content
143
+ if defined?(Encoding)
144
+ assert_equal(@encoding, @doc.root.content.encoding)
145
+ assert_equal("M\u00F6tley Cr\u00FCe is an American heavy metal band formed in Los Angeles, California in 1981.Iron Maiden is a British heavy metal band formed in 1975.",
146
+ @doc.root.content)
147
+
148
+ first = @doc.root.child
149
+ assert_equal("M\u00F6tley Cr\u00FCe is an American heavy metal band formed in Los Angeles, California in 1981.",
150
+ first.content)
151
+ assert_equal("Iron Maiden is a British heavy metal band formed in 1975.", first.next.content)
152
+ else
153
+ assert_equal("M\303\266tley Cr\303\274e is an American heavy metal band formed in Los Angeles, California in 1981.Iron Maiden is a British heavy metal band formed in 1975.",
154
+ @doc.root.content)
155
+
156
+ first = @doc.root.child
157
+ assert_equal("M\303\266tley Cr\303\274e is an American heavy metal band formed in Los Angeles, California in 1981.",
158
+ first.content)
159
+ assert_equal("Iron Maiden is a British heavy metal band formed in 1975.",
160
+ first.next.content)
161
+ end
162
+ end
163
+
164
+ def test_content_iso_8859_1
165
+ load_encoding("iso-8859-1")
166
+ if defined?(Encoding)
167
+ assert_equal(@encoding, @doc.root.content.encoding)
168
+ assert_equal("M\xC3\xB6tley Cr\xC3\xBCe is an American heavy metal band formed in Los Angeles, California in 1981.Iron Maiden is a British heavy metal band formed in 1975.".force_encoding(@encoding),
169
+ @doc.root.content)
170
+
171
+ first = @doc.root.child
172
+ assert_equal("M\xC3\xB6tley Cr\xC3\xBCe is an American heavy metal band formed in Los Angeles, California in 1981.".force_encoding(@encoding),
173
+ first.content)
174
+ assert_equal("Iron Maiden is a British heavy metal band formed in 1975.", first.next.content)
175
+ else
176
+ assert_equal("M\303\266tley Cr\303\274e is an American heavy metal band formed in Los Angeles, California in 1981.Iron Maiden is a British heavy metal band formed in 1975.",
177
+ @doc.root.content)
178
+
179
+ first = @doc.root.child
180
+ assert_equal("M\303\266tley Cr\303\274e is an American heavy metal band formed in Los Angeles, California in 1981.",
181
+ first.content)
182
+ assert_equal("Iron Maiden is a British heavy metal band formed in 1975.", first.next.content)
183
+ end
184
+ end
185
+
186
+ def test_base
187
+ doc = XML::Parser.string('<person />').parse
188
+ assert_nil(doc.root.base_uri)
189
+ end
190
+
191
+ # We use the same facility that libXSLT does here to disable output escaping.
192
+ # This lets you specify that the node's content should be rendered unaltered
193
+ # whenever it is being output. This is useful for things like <script> and
194
+ # <style> nodes in HTML documents if you don't want to be forced to wrap them
195
+ # in CDATA nodes. Or if you are sanitizing existing HTML documents and want
196
+ # to preserve the content of any of the text nodes.
197
+ #
198
+ def test_output_escaping
199
+ text = '<bad-script>if (a &lt; b || b &gt; c) { return "text"; }<stop/>return "&gt;&gt;&gt;snip&lt;&lt;&lt;";</bad-script>'
200
+ node = XML::Parser.string(text).parse.root
201
+ assert_equal text, node.to_s
202
+
203
+ text_noenc = '<bad-script>if (a < b || b > c) { return "text"; }<stop/>return ">>>snip<<<";</bad-script>'
204
+ node.output_escaping = false
205
+ assert_equal text_noenc, node.to_s
206
+
207
+ node.output_escaping = true
208
+ assert_equal text, node.to_s
209
+
210
+ node.output_escaping = nil
211
+ assert_equal text_noenc, node.to_s
212
+
213
+ node.output_escaping = true
214
+ assert_equal text, node.to_s
215
+ end
216
+
217
+ # Just a sanity check for output escaping.
218
+ def test_output_escaping_sanity
219
+ text = '<bad-script>if (a &lt; b || b &gt; c) { return "text"; }<stop/>return "&gt;&gt;&gt;snip&lt;&lt;&lt;";</bad-script>'
220
+ node = XML::Parser.string(text).parse.root
221
+ affected = node.find('//text()')
222
+
223
+ check_escaping = lambda do |flag|
224
+ assert_equal('bad-script', node.name)
225
+ assert_equal(flag, node.output_escaping?)
226
+ affected.each do |x|
227
+ assert_equal(flag ? 'text' : 'textnoenc', x.name)
228
+ assert_equal(flag, x.output_escaping?)
229
+ end
230
+ end
231
+
232
+ node.output_escaping = false
233
+ check_escaping[false]
234
+
235
+ node.output_escaping = true
236
+ check_escaping[true]
237
+
238
+ node.output_escaping = nil
239
+ check_escaping[false]
240
+
241
+ node.output_escaping = true
242
+ check_escaping[true]
243
+
244
+ affected.first.output_escaping = true
245
+ affected.last.output_escaping = false
246
+ assert node.output_escaping?.nil?
247
+ end
248
+
249
+ def test_space_preserve
250
+ node = @doc.root
251
+
252
+ node.space_preserve = false
253
+ assert_equal XML::Node::SPACE_DEFAULT, node.space_preserve
254
+
255
+ node.space_preserve = true
256
+ assert_equal XML::Node::SPACE_PRESERVE, node.space_preserve
257
+ end
181
258
  end
@@ -1,49 +1,51 @@
1
- require 'xml'
2
- require 'test/unit'
3
-
4
- class CDataCommentTest < Test::Unit::TestCase
5
- def setup
6
- xp = XML::Parser.string('<root></root>')
7
- @doc = xp.parse
8
- assert_instance_of(XML::Document, @doc)
9
- @root = @doc.root
10
- end
11
-
12
- def test_node_type
13
- cnode = XML::Node.new_cdata('test cdata')
14
- assert_equal(XML::Node::CDATA_SECTION_NODE, cnode.node_type)
15
- end
16
-
17
- def test_add_cdata
18
- @root << XML::Node.new_cdata('mycdata')
19
- assert_equal '<root><![CDATA[mycdata]]></root>',
20
- @root.to_s.gsub(/\n\s*/,'')
21
- end
22
-
23
- def test_add_cdata_2
24
- @root << XML::Node.new_cdata('mycdata')
25
- assert_equal 'cdata',
26
- @root.child.node_type_name
27
- end
28
-
29
- def test_add_cdata_3
30
- @root << el = XML::Node.new_cdata('mycdata')
31
- el << "_this_is_added"
32
- assert_equal '<root><![CDATA[mycdata_this_is_added]]></root>',
33
- @root.to_s.gsub(/\n\s*/,'')
34
- end
35
-
36
- def test_attributes
37
- cnode = XML::Node.new_cdata('test cdata')
38
- assert_equal(0, cnode.attributes.length)
39
- end
40
-
41
- def test_set_cdata_attribute
42
- cnode = XML::Node.new_cdata('test cdata')
43
-
44
- # Can't create attributes on non-element nodes
45
- assert_raise(ArgumentError) do
46
- cnode['attr'] = '123'
47
- end
48
- end
49
- end
1
+ # encoding: UTF-8
2
+
3
+ require './test_helper'
4
+ require 'test/unit'
5
+
6
+ class CDataCommentTest < Test::Unit::TestCase
7
+ def setup
8
+ xp = XML::Parser.string('<root></root>')
9
+ @doc = xp.parse
10
+ assert_instance_of(XML::Document, @doc)
11
+ @root = @doc.root
12
+ end
13
+
14
+ def test_node_type
15
+ cnode = XML::Node.new_cdata('test cdata')
16
+ assert_equal(XML::Node::CDATA_SECTION_NODE, cnode.node_type)
17
+ end
18
+
19
+ def test_add_cdata
20
+ @root << XML::Node.new_cdata('mycdata')
21
+ assert_equal '<root><![CDATA[mycdata]]></root>',
22
+ @root.to_s.gsub(/\n\s*/,'')
23
+ end
24
+
25
+ def test_add_cdata_2
26
+ @root << XML::Node.new_cdata('mycdata')
27
+ assert_equal 'cdata',
28
+ @root.child.node_type_name
29
+ end
30
+
31
+ def test_add_cdata_3
32
+ @root << el = XML::Node.new_cdata('mycdata')
33
+ el << "_this_is_added"
34
+ assert_equal '<root><![CDATA[mycdata_this_is_added]]></root>',
35
+ @root.to_s.gsub(/\n\s*/,'')
36
+ end
37
+
38
+ def test_attributes
39
+ cnode = XML::Node.new_cdata('test cdata')
40
+ assert_equal(0, cnode.attributes.length)
41
+ end
42
+
43
+ def test_set_cdata_attribute
44
+ cnode = XML::Node.new_cdata('test cdata')
45
+
46
+ # Can't create attributes on non-element nodes
47
+ assert_raise(ArgumentError) do
48
+ cnode['attr'] = '123'
49
+ end
50
+ end
51
+ end