libxml-ruby 4.1.2 → 6.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 (172) hide show
  1. checksums.yaml +4 -4
  2. data/{HISTORY → CHANGELOG.md} +875 -887
  3. data/LICENSE +20 -20
  4. data/README.md +67 -0
  5. data/Rakefile +77 -98
  6. data/ext/libxml/extconf.rb +39 -20
  7. data/ext/libxml/libxml.c +67 -79
  8. data/ext/libxml/ruby_libxml.h +43 -44
  9. data/ext/libxml/ruby_xml.c +556 -899
  10. data/ext/libxml/ruby_xml.h +9 -10
  11. data/ext/libxml/ruby_xml_attr.c +338 -333
  12. data/ext/libxml/ruby_xml_attr.h +13 -12
  13. data/ext/libxml/ruby_xml_attr_decl.c +19 -12
  14. data/ext/libxml/ruby_xml_attr_decl.h +11 -11
  15. data/ext/libxml/ruby_xml_attributes.c +18 -9
  16. data/ext/libxml/ruby_xml_attributes.h +17 -15
  17. data/ext/libxml/ruby_xml_document.c +1142 -1129
  18. data/ext/libxml/ruby_xml_document.h +12 -11
  19. data/ext/libxml/ruby_xml_dtd.c +287 -248
  20. data/ext/libxml/ruby_xml_dtd.h +10 -9
  21. data/ext/libxml/ruby_xml_encoding.c +250 -250
  22. data/ext/libxml/ruby_xml_encoding.h +20 -18
  23. data/ext/libxml/ruby_xml_error.c +1003 -996
  24. data/ext/libxml/ruby_xml_error.h +14 -14
  25. data/ext/libxml/ruby_xml_html_parser.c +91 -91
  26. data/ext/libxml/ruby_xml_html_parser.h +10 -10
  27. data/ext/libxml/ruby_xml_html_parser_context.c +364 -337
  28. data/ext/libxml/ruby_xml_html_parser_context.h +11 -10
  29. data/ext/libxml/ruby_xml_html_parser_options.c +48 -48
  30. data/ext/libxml/ruby_xml_html_parser_options.h +10 -10
  31. data/ext/libxml/ruby_xml_input_cbg.c +216 -188
  32. data/ext/libxml/ruby_xml_input_cbg.h +20 -20
  33. data/ext/libxml/ruby_xml_io.c +49 -47
  34. data/ext/libxml/ruby_xml_io.h +10 -10
  35. data/ext/libxml/ruby_xml_namespace.c +159 -154
  36. data/ext/libxml/ruby_xml_namespace.h +11 -10
  37. data/ext/libxml/ruby_xml_namespaces.c +313 -293
  38. data/ext/libxml/ruby_xml_namespaces.h +9 -9
  39. data/ext/libxml/ruby_xml_node.c +1433 -1398
  40. data/ext/libxml/ruby_xml_node.h +15 -13
  41. data/ext/libxml/ruby_xml_parser.c +91 -91
  42. data/ext/libxml/ruby_xml_parser.h +10 -10
  43. data/ext/libxml/ruby_xml_parser_context.c +1016 -1001
  44. data/ext/libxml/ruby_xml_parser_context.h +11 -10
  45. data/ext/libxml/ruby_xml_parser_options.c +74 -66
  46. data/ext/libxml/ruby_xml_parser_options.h +10 -10
  47. data/ext/libxml/ruby_xml_reader.c +40 -31
  48. data/ext/libxml/ruby_xml_reader.h +14 -14
  49. data/ext/libxml/ruby_xml_registry.c +31 -0
  50. data/ext/libxml/ruby_xml_registry.h +22 -0
  51. data/ext/libxml/ruby_xml_relaxng.c +21 -5
  52. data/ext/libxml/ruby_xml_relaxng.h +9 -8
  53. data/ext/libxml/ruby_xml_sax2_handler.c +326 -326
  54. data/ext/libxml/ruby_xml_sax2_handler.h +10 -10
  55. data/ext/libxml/ruby_xml_sax_parser.c +108 -116
  56. data/ext/libxml/ruby_xml_sax_parser.h +10 -10
  57. data/ext/libxml/ruby_xml_schema.c +22 -15
  58. data/ext/libxml/ruby_xml_schema.h +26 -25
  59. data/ext/libxml/ruby_xml_schema_attribute.c +7 -7
  60. data/ext/libxml/ruby_xml_schema_attribute.h +37 -37
  61. data/ext/libxml/ruby_xml_schema_element.c +8 -8
  62. data/ext/libxml/ruby_xml_schema_element.h +11 -11
  63. data/ext/libxml/ruby_xml_schema_facet.c +50 -50
  64. data/ext/libxml/ruby_xml_schema_facet.h +9 -9
  65. data/ext/libxml/ruby_xml_schema_type.c +12 -19
  66. data/ext/libxml/ruby_xml_schema_type.h +9 -9
  67. data/ext/libxml/ruby_xml_version.h +9 -9
  68. data/ext/libxml/ruby_xml_writer.c +183 -185
  69. data/ext/libxml/ruby_xml_writer.h +6 -6
  70. data/ext/libxml/ruby_xml_xinclude.c +20 -20
  71. data/ext/libxml/ruby_xml_xinclude.h +11 -11
  72. data/ext/libxml/ruby_xml_xpath.c +195 -195
  73. data/ext/libxml/ruby_xml_xpath.h +15 -15
  74. data/ext/libxml/ruby_xml_xpath_context.c +408 -362
  75. data/ext/libxml/ruby_xml_xpath_context.h +9 -9
  76. data/ext/libxml/ruby_xml_xpath_expression.c +12 -6
  77. data/ext/libxml/ruby_xml_xpath_expression.h +11 -10
  78. data/ext/libxml/ruby_xml_xpath_object.c +69 -54
  79. data/ext/libxml/ruby_xml_xpath_object.h +19 -17
  80. data/ext/vc/libxml_ruby/libxml_ruby.vcxproj +271 -0
  81. data/ext/xcode/libxml-ruby.xcodeproj/project.pbxproj +633 -0
  82. data/ext/xcode/libxml-ruby.xcodeproj/project.xcworkspace/contents.xcworkspacedata +7 -0
  83. data/ext/xcode/libxml-ruby.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +8 -0
  84. data/ext/xcode/libxml-ruby.xcodeproj/xcshareddata/xcschemes/libxml-ruby.xcscheme +80 -0
  85. data/lib/libxml/attr.rb +122 -122
  86. data/lib/libxml/attr_decl.rb +80 -80
  87. data/lib/libxml/attributes.rb +13 -13
  88. data/lib/libxml/document.rb +165 -194
  89. data/lib/libxml/error.rb +122 -95
  90. data/lib/libxml/html_parser.rb +80 -96
  91. data/lib/libxml/namespace.rb +61 -61
  92. data/lib/libxml/namespaces.rb +37 -37
  93. data/lib/libxml/node.rb +321 -323
  94. data/lib/libxml/parser.rb +94 -100
  95. data/lib/libxml/sax_callbacks.rb +179 -179
  96. data/lib/libxml/sax_parser.rb +40 -40
  97. data/lib/libxml/schema/attribute.rb +27 -19
  98. data/lib/libxml/schema/element.rb +20 -0
  99. data/lib/libxml/schema/type.rb +44 -21
  100. data/lib/libxml/schema.rb +47 -47
  101. data/lib/libxml/tree.rb +28 -28
  102. data/lib/libxml-ruby.rb +30 -30
  103. data/libxml-ruby.gemspec +46 -48
  104. data/test/c14n/result/1-1-without-comments/example-1 +3 -3
  105. data/test/c14n/result/1-1-without-comments/example-2 +10 -10
  106. data/test/c14n/result/1-1-without-comments/example-3 +13 -13
  107. data/test/c14n/result/1-1-without-comments/example-4 +8 -8
  108. data/test/c14n/result/1-1-without-comments/example-5 +2 -2
  109. data/test/c14n/result/with-comments/example-1 +5 -5
  110. data/test/c14n/result/with-comments/example-2 +10 -10
  111. data/test/c14n/result/with-comments/example-3 +13 -13
  112. data/test/c14n/result/with-comments/example-4 +8 -8
  113. data/test/c14n/result/with-comments/example-5 +3 -3
  114. data/test/c14n/result/without-comments/example-1 +3 -3
  115. data/test/c14n/result/without-comments/example-2 +10 -10
  116. data/test/c14n/result/without-comments/example-3 +13 -13
  117. data/test/c14n/result/without-comments/example-4 +8 -8
  118. data/test/c14n/result/without-comments/example-5 +2 -2
  119. data/test/test_attr.rb +179 -180
  120. data/test/test_attr_decl.rb +131 -131
  121. data/test/test_attributes.rb +135 -135
  122. data/test/test_canonicalize.rb +122 -120
  123. data/test/test_document.rb +138 -132
  124. data/test/test_document_write.rb +142 -145
  125. data/test/test_dtd.rb +134 -129
  126. data/test/test_encoding.rb +126 -129
  127. data/test/test_encoding_sax.rb +114 -114
  128. data/test/test_error.rb +197 -194
  129. data/test/test_helper.rb +21 -13
  130. data/test/test_html_parser.rb +166 -162
  131. data/test/test_html_parser_context.rb +22 -22
  132. data/test/test_input_callbacks.rb +36 -0
  133. data/test/test_namespace.rb +58 -60
  134. data/test/test_namespaces.rb +200 -200
  135. data/test/test_node.rb +251 -237
  136. data/test/test_node_cdata.rb +50 -50
  137. data/test/test_node_comment.rb +32 -32
  138. data/test/test_node_copy.rb +40 -40
  139. data/test/test_node_edit.rb +176 -158
  140. data/test/test_node_pi.rb +37 -37
  141. data/test/test_node_text.rb +69 -69
  142. data/test/test_node_write.rb +93 -96
  143. data/test/test_node_xlink.rb +28 -28
  144. data/test/test_parser.rb +297 -324
  145. data/test/test_parser_context.rb +198 -198
  146. data/test/test_properties.rb +38 -38
  147. data/test/test_reader.rb +413 -364
  148. data/test/test_relaxng.rb +59 -53
  149. data/test/test_sax_parser.rb +345 -326
  150. data/test/test_schema.rb +28 -0
  151. data/test/test_traversal.rb +152 -152
  152. data/test/test_writer.rb +469 -468
  153. data/test/test_xinclude.rb +20 -20
  154. data/test/test_xml.rb +164 -267
  155. data/test/test_xpath.rb +244 -244
  156. data/test/test_xpath_context.rb +87 -87
  157. data/test/test_xpath_expression.rb +37 -37
  158. metadata +49 -31
  159. data/README.rdoc +0 -217
  160. data/ext/libxml/extconf.h +0 -3
  161. data/ext/libxml/ruby_xml_cbg.c +0 -85
  162. data/lib/libxml/hpricot.rb +0 -78
  163. data/lib/libxml.rb +0 -5
  164. data/lib/xml/libxml.rb +0 -10
  165. data/lib/xml.rb +0 -14
  166. data/script/benchmark/depixelate +0 -634
  167. data/script/benchmark/hamlet.xml +0 -9055
  168. data/script/benchmark/parsecount +0 -170
  169. data/script/benchmark/sock_entries.xml +0 -507
  170. data/script/benchmark/throughput +0 -41
  171. data/script/test +0 -6
  172. data/test/test_deprecated_require.rb +0 -12
@@ -1,129 +1,126 @@
1
- # encoding: UTF-8
2
-
3
- require_relative './test_helper'
4
-
5
- # Code UTF8 Latin1 Hex
6
- # m 109 109 6D
7
- # ö 195 182 246 C3 B6 / F6
8
- # t 116 116 74
9
- # l 108 108 6C
10
- # e 101 101 65
11
- # y 121 121 79
12
- # _ 95 95 5F
13
- # c 99 99 63
14
- # r 114 114 72
15
- # ü 195 188 252 C3 BC / FC
16
- # e 101 101 65
17
-
18
- # See:
19
- # http://en.wikipedia.org/wiki/ISO/IEC_8859-1
20
- # http://en.wikipedia.org/wiki/List_of_Unicode_characters
21
-
22
- class TestEncoding < Minitest::Test
23
- def setup
24
- @original_encoding = Encoding.default_internal
25
- Encoding.default_internal = nil
26
- end
27
-
28
- def teardown
29
- Encoding.default_internal = @original_encoding
30
- end
31
-
32
- def file_for_encoding(encoding)
33
- file_name = "model/bands.#{encoding.name.downcase}.xml"
34
- File.join(File.dirname(__FILE__), file_name)
35
- end
36
-
37
- def load_encoding(encoding)
38
- @encoding = encoding
39
- file = file_for_encoding(encoding)
40
-
41
- # Strip spaces to make testing easier
42
- LibXML::XML.default_keep_blanks = false
43
- @doc = LibXML::XML::Document.file(file)
44
- LibXML::XML.default_keep_blanks = true
45
- end
46
-
47
- def test_encoding
48
- doc = LibXML::XML::Document.new
49
- assert_equal(LibXML::XML::Encoding::NONE, doc.encoding)
50
- assert_equal(Encoding::ASCII_8BIT, doc.rb_encoding)
51
-
52
- file = File.expand_path(File.join(File.dirname(__FILE__), 'model/bands.xml'))
53
- doc = LibXML::XML::Document.file(file)
54
- assert_equal(LibXML::XML::Encoding::UTF_8, doc.encoding)
55
- assert_equal(Encoding::UTF_8, doc.rb_encoding)
56
-
57
- doc.encoding = LibXML::XML::Encoding::ISO_8859_1
58
- assert_equal(LibXML::XML::Encoding::ISO_8859_1, doc.encoding)
59
- assert_equal(Encoding::ISO8859_1, doc.rb_encoding)
60
- end
61
-
62
- def test_no_internal_encoding_iso_8859_1
63
- load_encoding(Encoding::ISO_8859_1)
64
- node = @doc.root.children.first
65
-
66
- name = node.name
67
- assert_equal(Encoding::UTF_8, name.encoding)
68
- assert_equal("m\u00F6tley_cr\u00FCe", name)
69
- assert_equal("109 195 182 116 108 101 121 95 99 114 195 188 101",
70
- name.bytes.to_a.join(" "))
71
- assert_equal("M\u00F6tley Cr\u00FCe is an American heavy metal band formed in Los Angeles, California in 1981.",
72
- node.content)
73
-
74
- name = name.encode(Encoding::ISO_8859_1)
75
- assert_equal(Encoding::ISO_8859_1, name.encoding)
76
- assert_equal("m\xF6tley_cr\xFCe".force_encoding(Encoding::ISO_8859_1), name)
77
- assert_equal("109 246 116 108 101 121 95 99 114 252 101",
78
- name.bytes.to_a.join(" "))
79
- assert_equal("M\xF6tley Cr\xFCe is an American heavy metal band formed in Los Angeles, California in 1981.".force_encoding(Encoding::ISO_8859_1),
80
- node.content.encode(Encoding::ISO_8859_1))
81
- end
82
-
83
- def test_internal_encoding_iso_8859_1
84
- Encoding.default_internal = Encoding::ISO_8859_1
85
- load_encoding(Encoding::ISO_8859_1)
86
- node = @doc.root.children.first
87
-
88
- name = node.name
89
- assert_equal(Encoding::ISO_8859_1, name.encoding)
90
- assert_equal("109 246 116 108 101 121 95 99 114 252 101",
91
- name.bytes.to_a.join(" "))
92
- assert_equal("m\xF6tley_cr\xFCe".force_encoding(Encoding::ISO_8859_1), name)
93
- assert_equal("109 246 116 108 101 121 95 99 114 252 101",
94
- name.bytes.to_a.join(" "))
95
- assert_equal("M\xF6tley Cr\xFCe is an American heavy metal band formed in Los Angeles, California in 1981.".force_encoding(Encoding::ISO_8859_1),
96
- node.content.encode(Encoding::ISO_8859_1))
97
- end
98
-
99
- def test_no_internal_encoding_utf_8
100
- load_encoding(Encoding::UTF_8)
101
- node = @doc.root.children.first
102
-
103
- name = node.name
104
- assert_equal(@encoding, name.encoding)
105
- assert_equal("109 195 182 116 108 101 121 95 99 114 195 188 101",
106
- name.bytes.to_a.join(" "))
107
-
108
- name = name.encode(Encoding::ISO_8859_1)
109
- assert_equal(Encoding::ISO_8859_1, name.encoding)
110
- assert_equal("109 246 116 108 101 121 95 99 114 252 101",
111
- name.bytes.to_a.join(" "))
112
- end
113
-
114
- def test_internal_encoding_utf_8
115
- Encoding.default_internal = Encoding::ISO_8859_1
116
- load_encoding(Encoding::UTF_8)
117
- node = @doc.root.children.first
118
-
119
- name = node.name
120
- assert_equal(Encoding::ISO_8859_1, name.encoding)
121
- assert_equal("109 246 116 108 101 121 95 99 114 252 101",
122
- name.bytes.to_a.join(" "))
123
- end
124
-
125
- def test_encoding_conversions
126
- assert_equal("UTF-8", LibXML::XML::Encoding.to_s(LibXML::XML::Encoding::UTF_8))
127
- assert_equal(LibXML::XML::Encoding::UTF_8, LibXML::XML::Encoding.from_s("UTF-8"))
128
- end
129
- end
1
+ # encoding: UTF-8
2
+
3
+ require_relative './test_helper'
4
+
5
+ # Code UTF8 Latin1 Hex
6
+ # m 109 109 6D
7
+ # ö 195 182 246 C3 B6 / F6
8
+ # t 116 116 74
9
+ # l 108 108 6C
10
+ # e 101 101 65
11
+ # y 121 121 79
12
+ # _ 95 95 5F
13
+ # c 99 99 63
14
+ # r 114 114 72
15
+ # ü 195 188 252 C3 BC / FC
16
+ # e 101 101 65
17
+
18
+ # See:
19
+ # http://en.wikipedia.org/wiki/ISO/IEC_8859-1
20
+ # http://en.wikipedia.org/wiki/List_of_Unicode_characters
21
+
22
+ class TestEncoding < Minitest::Test
23
+ def setup
24
+ @original_encoding = Encoding.default_internal
25
+ Encoding.default_internal = nil
26
+ end
27
+
28
+ def teardown
29
+ Encoding.default_internal = @original_encoding
30
+ end
31
+
32
+ def file_for_encoding(encoding)
33
+ file_name = "model/bands.#{encoding.name.downcase}.xml"
34
+ File.join(File.dirname(__FILE__), file_name)
35
+ end
36
+
37
+ def load_encoding(encoding)
38
+ @encoding = encoding
39
+ file = file_for_encoding(encoding)
40
+
41
+ @doc = LibXML::XML::Document.file(file, options: LibXML::XML::Parser::Options::NOBLANKS)
42
+ end
43
+
44
+ def test_encoding
45
+ doc = LibXML::XML::Document.new
46
+ assert_equal(LibXML::XML::Encoding::NONE, doc.encoding)
47
+ assert_equal(Encoding::ASCII_8BIT, doc.rb_encoding)
48
+
49
+ file = File.expand_path(File.join(File.dirname(__FILE__), 'model/bands.xml'))
50
+ doc = LibXML::XML::Document.file(file)
51
+ assert_equal(LibXML::XML::Encoding::UTF_8, doc.encoding)
52
+ assert_equal(Encoding::UTF_8, doc.rb_encoding)
53
+
54
+ doc.encoding = LibXML::XML::Encoding::ISO_8859_1
55
+ assert_equal(LibXML::XML::Encoding::ISO_8859_1, doc.encoding)
56
+ assert_equal(Encoding::ISO8859_1, doc.rb_encoding)
57
+ end
58
+
59
+ def test_no_internal_encoding_iso_8859_1
60
+ load_encoding(Encoding::ISO_8859_1)
61
+ node = @doc.root.children.first
62
+
63
+ name = node.name
64
+ assert_equal(Encoding::UTF_8, name.encoding)
65
+ assert_equal("m\u00F6tley_cr\u00FCe", name)
66
+ assert_equal("109 195 182 116 108 101 121 95 99 114 195 188 101",
67
+ name.bytes.to_a.join(" "))
68
+ assert_equal("M\u00F6tley Cr\u00FCe is an American heavy metal band formed in Los Angeles, California in 1981.",
69
+ node.content)
70
+
71
+ name = name.encode(Encoding::ISO_8859_1)
72
+ assert_equal(Encoding::ISO_8859_1, name.encoding)
73
+ assert_equal("m\xF6tley_cr\xFCe".force_encoding(Encoding::ISO_8859_1), name)
74
+ assert_equal("109 246 116 108 101 121 95 99 114 252 101",
75
+ name.bytes.to_a.join(" "))
76
+ assert_equal("M\xF6tley Cr\xFCe is an American heavy metal band formed in Los Angeles, California in 1981.".force_encoding(Encoding::ISO_8859_1),
77
+ node.content.encode(Encoding::ISO_8859_1))
78
+ end
79
+
80
+ def test_internal_encoding_iso_8859_1
81
+ Encoding.default_internal = Encoding::ISO_8859_1
82
+ load_encoding(Encoding::ISO_8859_1)
83
+ node = @doc.root.children.first
84
+
85
+ name = node.name
86
+ assert_equal(Encoding::ISO_8859_1, name.encoding)
87
+ assert_equal("109 246 116 108 101 121 95 99 114 252 101",
88
+ name.bytes.to_a.join(" "))
89
+ assert_equal("m\xF6tley_cr\xFCe".force_encoding(Encoding::ISO_8859_1), name)
90
+ assert_equal("109 246 116 108 101 121 95 99 114 252 101",
91
+ name.bytes.to_a.join(" "))
92
+ assert_equal("M\xF6tley Cr\xFCe is an American heavy metal band formed in Los Angeles, California in 1981.".force_encoding(Encoding::ISO_8859_1),
93
+ node.content.encode(Encoding::ISO_8859_1))
94
+ end
95
+
96
+ def test_no_internal_encoding_utf_8
97
+ load_encoding(Encoding::UTF_8)
98
+ node = @doc.root.children.first
99
+
100
+ name = node.name
101
+ assert_equal(@encoding, name.encoding)
102
+ assert_equal("109 195 182 116 108 101 121 95 99 114 195 188 101",
103
+ name.bytes.to_a.join(" "))
104
+
105
+ name = name.encode(Encoding::ISO_8859_1)
106
+ assert_equal(Encoding::ISO_8859_1, name.encoding)
107
+ assert_equal("109 246 116 108 101 121 95 99 114 252 101",
108
+ name.bytes.to_a.join(" "))
109
+ end
110
+
111
+ def test_internal_encoding_utf_8
112
+ Encoding.default_internal = Encoding::ISO_8859_1
113
+ load_encoding(Encoding::UTF_8)
114
+ node = @doc.root.children.first
115
+
116
+ name = node.name
117
+ assert_equal(Encoding::ISO_8859_1, name.encoding)
118
+ assert_equal("109 246 116 108 101 121 95 99 114 252 101",
119
+ name.bytes.to_a.join(" "))
120
+ end
121
+
122
+ def test_encoding_conversions
123
+ assert_equal("UTF-8", LibXML::XML::Encoding.to_s(LibXML::XML::Encoding::UTF_8))
124
+ assert_equal(LibXML::XML::Encoding::UTF_8, LibXML::XML::Encoding.from_s("UTF-8"))
125
+ end
126
+ end
@@ -1,115 +1,115 @@
1
- # encoding: UTF-8
2
- require_relative './test_helper'
3
-
4
- class SaxEncodingCallbacks
5
- attr_reader :encoding
6
- attr_accessor :assertions
7
- include Minitest::Assertions
8
-
9
- def initialize
10
- @assertions = 0
11
- @encoding = Encoding::UTF_8
12
- end
13
-
14
- # Called for a CDATA block event.
15
- def on_cdata_block(cdata)
16
- assert_equal(self.encoding, cdata.encoding)
17
- end
18
-
19
- # Called for a characters event.
20
- def on_characters(chars)
21
- assert_equal(self.encoding, chars.encoding)
22
- end
23
-
24
- # Called for a comment event.
25
- def on_comment(msg)
26
- assert_equal(self.encoding, msg.encoding)
27
- end
28
-
29
- # Called for a end document event.
30
- def on_end_document
31
- end
32
-
33
- # Called for a end element event.
34
- def on_end_element_ns(name, prefix, uri)
35
- assert_equal(self.encoding, name.encoding)
36
- assert_equal(self.encoding, prefix.encoding) if prefix
37
- assert_equal(self.encoding, uri.encoding) if uri
38
- end
39
-
40
- # Called for parser errors.
41
- def on_error(msg)
42
- assert_equal(self.encoding, msg.encoding)
43
- end
44
-
45
- # Called for an external subset event.
46
- def on_external_subset(name, external_id, system_id)
47
- assert_equal(self.encoding, name.encoding)
48
- assert_equal(self.encoding, external_id.encoding)
49
- assert_equal(self.encoding, system_id.encoding)
50
- end
51
-
52
- # Called for an external subset notification event.
53
- def on_has_external_subset
54
- end
55
-
56
- # Called for an internal subset notification event.
57
- def on_has_internal_subset
58
- end
59
-
60
- # Called for an internal subset event.
61
- def on_internal_subset(name, external_id, system_id)
62
- assert_equal(self.encoding, name.encoding)
63
- assert_equal(self.encoding, external_id.encoding)
64
- assert_equal(self.encoding, system_id.encoding)
65
- end
66
-
67
- # Called for 'is standalone' event.
68
- def on_is_standalone
69
- end
70
-
71
- # Called for an processing instruction event.
72
- def on_processing_instruction(target, data)
73
- assert_equal(self.encoding, target.encoding)
74
- assert_equal(self.encoding, data.encoding)
75
- end
76
-
77
- # Called for a reference event.
78
- def on_reference(name)
79
- assert_equal(self.encoding, name.encoding)
80
- end
81
-
82
- # Called for a start document event.
83
- def on_start_document
84
- end
85
-
86
- # Called for a start element event.
87
- def on_start_element_ns(name, attributes, prefix, uri, namespaces)
88
- assert_equal(self.encoding, name.encoding) if name
89
- assert_equal(self.encoding, prefix.encoding) if prefix
90
- assert_equal(self.encoding, uri.encoding) if uri
91
- end
92
- end
93
-
94
- class TestEncodingSax < Minitest::Test
95
- def setup
96
- Encoding.default_internal = nil
97
- end
98
-
99
- def file_for_encoding(encoding)
100
- file_name = "model/bands.#{encoding.name.downcase}.xml"
101
- File.join(File.dirname(__FILE__), file_name)
102
- end
103
-
104
- def test_encoding_iso_8859_1
105
- parser = LibXML::XML::SaxParser.file(file_for_encoding(Encoding::ISO_8859_1))
106
- parser.callbacks = SaxEncodingCallbacks.new
107
- parser.parse
108
- end
109
-
110
- def test_encoding_utf8
111
- parser = LibXML::XML::SaxParser.file(file_for_encoding(Encoding::UTF_8))
112
- parser.callbacks = SaxEncodingCallbacks.new
113
- parser.parse
114
- end
1
+ # encoding: UTF-8
2
+ require_relative './test_helper'
3
+
4
+ class SaxEncodingCallbacks
5
+ attr_reader :encoding
6
+ attr_accessor :assertions
7
+ include Minitest::Assertions
8
+
9
+ def initialize
10
+ @assertions = 0
11
+ @encoding = Encoding::UTF_8
12
+ end
13
+
14
+ # Called for a CDATA block event.
15
+ def on_cdata_block(cdata)
16
+ assert_equal(self.encoding, cdata.encoding)
17
+ end
18
+
19
+ # Called for a characters event.
20
+ def on_characters(chars)
21
+ assert_equal(self.encoding, chars.encoding)
22
+ end
23
+
24
+ # Called for a comment event.
25
+ def on_comment(msg)
26
+ assert_equal(self.encoding, msg.encoding)
27
+ end
28
+
29
+ # Called for a end document event.
30
+ def on_end_document
31
+ end
32
+
33
+ # Called for a end element event.
34
+ def on_end_element_ns(name, prefix, uri)
35
+ assert_equal(self.encoding, name.encoding)
36
+ assert_equal(self.encoding, prefix.encoding) if prefix
37
+ assert_equal(self.encoding, uri.encoding) if uri
38
+ end
39
+
40
+ # Called for parser errors.
41
+ def on_error(msg)
42
+ assert_equal(self.encoding, msg.encoding)
43
+ end
44
+
45
+ # Called for an external subset event.
46
+ def on_external_subset(name, external_id, system_id)
47
+ assert_equal(self.encoding, name.encoding)
48
+ assert_equal(self.encoding, external_id.encoding)
49
+ assert_equal(self.encoding, system_id.encoding)
50
+ end
51
+
52
+ # Called for an external subset notification event.
53
+ def on_has_external_subset
54
+ end
55
+
56
+ # Called for an internal subset notification event.
57
+ def on_has_internal_subset
58
+ end
59
+
60
+ # Called for an internal subset event.
61
+ def on_internal_subset(name, external_id, system_id)
62
+ assert_equal(self.encoding, name.encoding)
63
+ assert_equal(self.encoding, external_id.encoding)
64
+ assert_equal(self.encoding, system_id.encoding)
65
+ end
66
+
67
+ # Called for 'is standalone' event.
68
+ def on_is_standalone
69
+ end
70
+
71
+ # Called for an processing instruction event.
72
+ def on_processing_instruction(target, data)
73
+ assert_equal(self.encoding, target.encoding)
74
+ assert_equal(self.encoding, data.encoding)
75
+ end
76
+
77
+ # Called for a reference event.
78
+ def on_reference(name)
79
+ assert_equal(self.encoding, name.encoding)
80
+ end
81
+
82
+ # Called for a start document event.
83
+ def on_start_document
84
+ end
85
+
86
+ # Called for a start element event.
87
+ def on_start_element_ns(name, attributes, prefix, uri, namespaces)
88
+ assert_equal(self.encoding, name.encoding) if name
89
+ assert_equal(self.encoding, prefix.encoding) if prefix
90
+ assert_equal(self.encoding, uri.encoding) if uri
91
+ end
92
+ end
93
+
94
+ class TestEncodingSax < Minitest::Test
95
+ def setup
96
+ Encoding.default_internal = nil
97
+ end
98
+
99
+ def file_for_encoding(encoding)
100
+ file_name = "model/bands.#{encoding.name.downcase}.xml"
101
+ File.join(File.dirname(__FILE__), file_name)
102
+ end
103
+
104
+ def test_encoding_iso_8859_1
105
+ parser = LibXML::XML::SaxParser.file(file_for_encoding(Encoding::ISO_8859_1))
106
+ parser.callbacks = SaxEncodingCallbacks.new
107
+ parser.parse
108
+ end
109
+
110
+ def test_encoding_utf8
111
+ parser = LibXML::XML::SaxParser.file(file_for_encoding(Encoding::UTF_8))
112
+ parser.callbacks = SaxEncodingCallbacks.new
113
+ parser.parse
114
+ end
115
115
  end