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.
- checksums.yaml +4 -4
- data/{HISTORY → CHANGELOG.md} +875 -887
- data/LICENSE +20 -20
- data/README.md +67 -0
- data/Rakefile +77 -98
- data/ext/libxml/extconf.rb +39 -20
- data/ext/libxml/libxml.c +67 -79
- data/ext/libxml/ruby_libxml.h +43 -44
- data/ext/libxml/ruby_xml.c +556 -899
- data/ext/libxml/ruby_xml.h +9 -10
- data/ext/libxml/ruby_xml_attr.c +338 -333
- data/ext/libxml/ruby_xml_attr.h +13 -12
- data/ext/libxml/ruby_xml_attr_decl.c +19 -12
- data/ext/libxml/ruby_xml_attr_decl.h +11 -11
- data/ext/libxml/ruby_xml_attributes.c +18 -9
- data/ext/libxml/ruby_xml_attributes.h +17 -15
- data/ext/libxml/ruby_xml_document.c +1142 -1129
- data/ext/libxml/ruby_xml_document.h +12 -11
- data/ext/libxml/ruby_xml_dtd.c +287 -248
- data/ext/libxml/ruby_xml_dtd.h +10 -9
- data/ext/libxml/ruby_xml_encoding.c +250 -250
- data/ext/libxml/ruby_xml_encoding.h +20 -18
- data/ext/libxml/ruby_xml_error.c +1003 -996
- data/ext/libxml/ruby_xml_error.h +14 -14
- data/ext/libxml/ruby_xml_html_parser.c +91 -91
- data/ext/libxml/ruby_xml_html_parser.h +10 -10
- data/ext/libxml/ruby_xml_html_parser_context.c +364 -337
- data/ext/libxml/ruby_xml_html_parser_context.h +11 -10
- data/ext/libxml/ruby_xml_html_parser_options.c +48 -48
- data/ext/libxml/ruby_xml_html_parser_options.h +10 -10
- data/ext/libxml/ruby_xml_input_cbg.c +216 -188
- data/ext/libxml/ruby_xml_input_cbg.h +20 -20
- data/ext/libxml/ruby_xml_io.c +49 -47
- data/ext/libxml/ruby_xml_io.h +10 -10
- data/ext/libxml/ruby_xml_namespace.c +159 -154
- data/ext/libxml/ruby_xml_namespace.h +11 -10
- data/ext/libxml/ruby_xml_namespaces.c +313 -293
- data/ext/libxml/ruby_xml_namespaces.h +9 -9
- data/ext/libxml/ruby_xml_node.c +1433 -1398
- data/ext/libxml/ruby_xml_node.h +15 -13
- data/ext/libxml/ruby_xml_parser.c +91 -91
- data/ext/libxml/ruby_xml_parser.h +10 -10
- data/ext/libxml/ruby_xml_parser_context.c +1016 -1001
- data/ext/libxml/ruby_xml_parser_context.h +11 -10
- data/ext/libxml/ruby_xml_parser_options.c +74 -66
- data/ext/libxml/ruby_xml_parser_options.h +10 -10
- data/ext/libxml/ruby_xml_reader.c +40 -31
- data/ext/libxml/ruby_xml_reader.h +14 -14
- data/ext/libxml/ruby_xml_registry.c +31 -0
- data/ext/libxml/ruby_xml_registry.h +22 -0
- data/ext/libxml/ruby_xml_relaxng.c +21 -5
- data/ext/libxml/ruby_xml_relaxng.h +9 -8
- data/ext/libxml/ruby_xml_sax2_handler.c +326 -326
- data/ext/libxml/ruby_xml_sax2_handler.h +10 -10
- data/ext/libxml/ruby_xml_sax_parser.c +108 -116
- data/ext/libxml/ruby_xml_sax_parser.h +10 -10
- data/ext/libxml/ruby_xml_schema.c +22 -15
- data/ext/libxml/ruby_xml_schema.h +26 -25
- data/ext/libxml/ruby_xml_schema_attribute.c +7 -7
- data/ext/libxml/ruby_xml_schema_attribute.h +37 -37
- data/ext/libxml/ruby_xml_schema_element.c +8 -8
- data/ext/libxml/ruby_xml_schema_element.h +11 -11
- data/ext/libxml/ruby_xml_schema_facet.c +50 -50
- data/ext/libxml/ruby_xml_schema_facet.h +9 -9
- data/ext/libxml/ruby_xml_schema_type.c +12 -19
- data/ext/libxml/ruby_xml_schema_type.h +9 -9
- data/ext/libxml/ruby_xml_version.h +9 -9
- data/ext/libxml/ruby_xml_writer.c +183 -185
- data/ext/libxml/ruby_xml_writer.h +6 -6
- data/ext/libxml/ruby_xml_xinclude.c +20 -20
- data/ext/libxml/ruby_xml_xinclude.h +11 -11
- data/ext/libxml/ruby_xml_xpath.c +195 -195
- data/ext/libxml/ruby_xml_xpath.h +15 -15
- data/ext/libxml/ruby_xml_xpath_context.c +408 -362
- data/ext/libxml/ruby_xml_xpath_context.h +9 -9
- data/ext/libxml/ruby_xml_xpath_expression.c +12 -6
- data/ext/libxml/ruby_xml_xpath_expression.h +11 -10
- data/ext/libxml/ruby_xml_xpath_object.c +69 -54
- data/ext/libxml/ruby_xml_xpath_object.h +19 -17
- data/ext/vc/libxml_ruby/libxml_ruby.vcxproj +271 -0
- data/ext/xcode/libxml-ruby.xcodeproj/project.pbxproj +633 -0
- data/ext/xcode/libxml-ruby.xcodeproj/project.xcworkspace/contents.xcworkspacedata +7 -0
- data/ext/xcode/libxml-ruby.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +8 -0
- data/ext/xcode/libxml-ruby.xcodeproj/xcshareddata/xcschemes/libxml-ruby.xcscheme +80 -0
- data/lib/libxml/attr.rb +122 -122
- data/lib/libxml/attr_decl.rb +80 -80
- data/lib/libxml/attributes.rb +13 -13
- data/lib/libxml/document.rb +165 -194
- data/lib/libxml/error.rb +122 -95
- data/lib/libxml/html_parser.rb +80 -96
- data/lib/libxml/namespace.rb +61 -61
- data/lib/libxml/namespaces.rb +37 -37
- data/lib/libxml/node.rb +321 -323
- data/lib/libxml/parser.rb +94 -100
- data/lib/libxml/sax_callbacks.rb +179 -179
- data/lib/libxml/sax_parser.rb +40 -40
- data/lib/libxml/schema/attribute.rb +27 -19
- data/lib/libxml/schema/element.rb +20 -0
- data/lib/libxml/schema/type.rb +44 -21
- data/lib/libxml/schema.rb +47 -47
- data/lib/libxml/tree.rb +28 -28
- data/lib/libxml-ruby.rb +30 -30
- data/libxml-ruby.gemspec +46 -48
- data/test/c14n/result/1-1-without-comments/example-1 +3 -3
- data/test/c14n/result/1-1-without-comments/example-2 +10 -10
- data/test/c14n/result/1-1-without-comments/example-3 +13 -13
- data/test/c14n/result/1-1-without-comments/example-4 +8 -8
- data/test/c14n/result/1-1-without-comments/example-5 +2 -2
- data/test/c14n/result/with-comments/example-1 +5 -5
- data/test/c14n/result/with-comments/example-2 +10 -10
- data/test/c14n/result/with-comments/example-3 +13 -13
- data/test/c14n/result/with-comments/example-4 +8 -8
- data/test/c14n/result/with-comments/example-5 +3 -3
- data/test/c14n/result/without-comments/example-1 +3 -3
- data/test/c14n/result/without-comments/example-2 +10 -10
- data/test/c14n/result/without-comments/example-3 +13 -13
- data/test/c14n/result/without-comments/example-4 +8 -8
- data/test/c14n/result/without-comments/example-5 +2 -2
- data/test/test_attr.rb +179 -180
- data/test/test_attr_decl.rb +131 -131
- data/test/test_attributes.rb +135 -135
- data/test/test_canonicalize.rb +122 -120
- data/test/test_document.rb +138 -132
- data/test/test_document_write.rb +142 -145
- data/test/test_dtd.rb +134 -129
- data/test/test_encoding.rb +126 -129
- data/test/test_encoding_sax.rb +114 -114
- data/test/test_error.rb +197 -194
- data/test/test_helper.rb +21 -13
- data/test/test_html_parser.rb +166 -162
- data/test/test_html_parser_context.rb +22 -22
- data/test/test_input_callbacks.rb +36 -0
- data/test/test_namespace.rb +58 -60
- data/test/test_namespaces.rb +200 -200
- data/test/test_node.rb +251 -237
- data/test/test_node_cdata.rb +50 -50
- data/test/test_node_comment.rb +32 -32
- data/test/test_node_copy.rb +40 -40
- data/test/test_node_edit.rb +176 -158
- data/test/test_node_pi.rb +37 -37
- data/test/test_node_text.rb +69 -69
- data/test/test_node_write.rb +93 -96
- data/test/test_node_xlink.rb +28 -28
- data/test/test_parser.rb +297 -324
- data/test/test_parser_context.rb +198 -198
- data/test/test_properties.rb +38 -38
- data/test/test_reader.rb +413 -364
- data/test/test_relaxng.rb +59 -53
- data/test/test_sax_parser.rb +345 -326
- data/test/test_schema.rb +28 -0
- data/test/test_traversal.rb +152 -152
- data/test/test_writer.rb +469 -468
- data/test/test_xinclude.rb +20 -20
- data/test/test_xml.rb +164 -267
- data/test/test_xpath.rb +244 -244
- data/test/test_xpath_context.rb +87 -87
- data/test/test_xpath_expression.rb +37 -37
- metadata +49 -31
- data/README.rdoc +0 -217
- data/ext/libxml/extconf.h +0 -3
- data/ext/libxml/ruby_xml_cbg.c +0 -85
- data/lib/libxml/hpricot.rb +0 -78
- data/lib/libxml.rb +0 -5
- data/lib/xml/libxml.rb +0 -10
- data/lib/xml.rb +0 -14
- data/script/benchmark/depixelate +0 -634
- data/script/benchmark/hamlet.xml +0 -9055
- data/script/benchmark/parsecount +0 -170
- data/script/benchmark/sock_entries.xml +0 -507
- data/script/benchmark/throughput +0 -41
- data/script/test +0 -6
- data/test/test_deprecated_require.rb +0 -12
data/test/test_encoding.rb
CHANGED
|
@@ -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
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
assert_equal(Encoding::
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
assert_equal("
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
assert_equal("
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
assert_equal(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("
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
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
|
data/test/test_encoding_sax.rb
CHANGED
|
@@ -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
|