libxml-ruby 4.1.1-x64-mingw-ucrt → 4.1.2-x64-mingw-ucrt
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 +8 -0
- data/ext/libxml/extconf.rb +67 -61
- data/ext/libxml/ruby_xml_attr_decl.c +154 -153
- data/ext/libxml/ruby_xml_attributes.c +276 -275
- data/ext/libxml/ruby_xml_reader.c +1245 -1242
- data/ext/libxml/ruby_xml_relaxng.c +113 -112
- data/ext/libxml/ruby_xml_schema.c +422 -420
- data/ext/libxml/ruby_xml_schema_attribute.c +108 -107
- data/ext/libxml/ruby_xml_schema_element.c +70 -69
- data/ext/libxml/ruby_xml_schema_type.c +252 -251
- data/ext/libxml/ruby_xml_version.h +2 -2
- data/ext/libxml/ruby_xml_writer.c +1138 -1137
- data/ext/libxml/ruby_xml_xpath_expression.c +81 -81
- data/ext/libxml/ruby_xml_xpath_object.c +340 -339
- data/lib/libxml/schema/element.rb +27 -19
- data/test/test_schema.rb +237 -231
- metadata +3 -4
- data/lib/3.2/libxml_ruby.so +0 -0
@@ -1,19 +1,27 @@
|
|
1
|
-
# encoding: UTF-8
|
2
|
-
|
3
|
-
module LibXML
|
4
|
-
module XML
|
5
|
-
class Schema::Element
|
6
|
-
def
|
7
|
-
|
8
|
-
end
|
9
|
-
|
10
|
-
def
|
11
|
-
|
12
|
-
end
|
13
|
-
|
14
|
-
def
|
15
|
-
|
16
|
-
end
|
17
|
-
|
18
|
-
|
19
|
-
|
1
|
+
# encoding: UTF-8
|
2
|
+
|
3
|
+
module LibXML
|
4
|
+
module XML
|
5
|
+
class Schema::Element
|
6
|
+
def min_occurs
|
7
|
+
@min
|
8
|
+
end
|
9
|
+
|
10
|
+
def max_occurs
|
11
|
+
@max
|
12
|
+
end
|
13
|
+
|
14
|
+
def required?
|
15
|
+
!min_occurs.zero?
|
16
|
+
end
|
17
|
+
|
18
|
+
def array?
|
19
|
+
max_occurs > 1
|
20
|
+
end
|
21
|
+
|
22
|
+
def elements
|
23
|
+
type.elements
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
data/test/test_schema.rb
CHANGED
@@ -1,231 +1,237 @@
|
|
1
|
-
# encoding: UTF-8
|
2
|
-
|
3
|
-
require_relative './test_helper'
|
4
|
-
|
5
|
-
class TestSchema < Minitest::Test
|
6
|
-
Import_NS = 'http://xml4r.org/libxml-ruby/test/shiporder'.freeze
|
7
|
-
|
8
|
-
def setup
|
9
|
-
file = File.join(File.dirname(__FILE__), 'model/shiporder.xml')
|
10
|
-
@doc = LibXML::XML::Document.file(file)
|
11
|
-
schema_file = File.join(File.dirname(__FILE__), 'model/shiporder.xsd')
|
12
|
-
schema_doc = LibXML::XML::Document.file(schema_file)
|
13
|
-
@schema = LibXML::XML::Schema.document(schema_doc)
|
14
|
-
end
|
15
|
-
|
16
|
-
def teardown
|
17
|
-
@doc = nil
|
18
|
-
@schema = nil
|
19
|
-
end
|
20
|
-
|
21
|
-
def check_error(error)
|
22
|
-
refute_nil(error)
|
23
|
-
assert(error.message.match(/Error: Element 'invalid': This element is not expected. Expected is \( item \)/))
|
24
|
-
assert_kind_of(LibXML::XML::Error, error)
|
25
|
-
assert_equal(LibXML::XML::Error::SCHEMASV, error.domain)
|
26
|
-
assert_equal(LibXML::XML::Error::SCHEMAV_ELEMENT_CONTENT, error.code)
|
27
|
-
assert_equal(LibXML::XML::Error::ERROR, error.level)
|
28
|
-
assert(error.file.match(/shiporder.xml/)) if error.file
|
29
|
-
assert_nil(error.str1)
|
30
|
-
assert_nil(error.str2)
|
31
|
-
assert_nil(error.str3)
|
32
|
-
assert_equal(0, error.int1)
|
33
|
-
assert_equal(0, error.int2)
|
34
|
-
end
|
35
|
-
|
36
|
-
def test_load_from_doc
|
37
|
-
assert_instance_of(LibXML::XML::Schema, @schema)
|
38
|
-
end
|
39
|
-
|
40
|
-
def test_schema_load_from_uri
|
41
|
-
xlink_schema = LibXML::XML::Schema.new('http://www.w3.org/1999/xlink.xsd')
|
42
|
-
assert_instance_of(LibXML::XML::Schema, xlink_schema)
|
43
|
-
assert_instance_of(LibXML::XML::Schema::Element, xlink_schema.elements['title'])
|
44
|
-
assert_instance_of(LibXML::XML::Schema::Type, xlink_schema.types['titleEltType'])
|
45
|
-
assert_equal('http://www.w3.org/1999/xlink', xlink_schema.target_namespace)
|
46
|
-
end
|
47
|
-
|
48
|
-
def test_schema_from_string
|
49
|
-
schema_file = File.join(File.dirname(__FILE__), 'model/shiporder.xsd')
|
50
|
-
schema_from_str = LibXML::XML::Schema.from_string(File.read(schema_file))
|
51
|
-
assert_instance_of(LibXML::XML::Schema, schema_from_str)
|
52
|
-
end
|
53
|
-
|
54
|
-
def test_invalid_schema_doc
|
55
|
-
bad_schema_file = File.join(File.dirname(__FILE__), 'model/shiporder_bad.xsd')
|
56
|
-
bad_schema_doc = LibXML::XML::Document.file(bad_schema_file)
|
57
|
-
bad_schema = nil
|
58
|
-
## Note: this type of error throws
|
59
|
-
begin
|
60
|
-
bad_schema = LibXML::XML::Schema.document(bad_schema_doc)
|
61
|
-
rescue LibXML::XML::Error => error
|
62
|
-
bad_schema = error
|
63
|
-
assert(error.message.match(/Error: Element '.*': The content is not valid. Expected is \(/))
|
64
|
-
assert_kind_of(LibXML::XML::Error, error)
|
65
|
-
assert_equal(LibXML::XML::Error::SCHEMASP, error.domain)
|
66
|
-
assert_equal(LibXML::XML::Error::SCHEMAP_S4S_ELEM_NOT_ALLOWED, error.code)
|
67
|
-
assert_equal(LibXML::XML::Error::ERROR, error.level)
|
68
|
-
assert(error.file.match(/shiporder_bad.xsd/))
|
69
|
-
assert_equal("Element '{http://www.w3.org/2001/XMLSchema}complexType'", error.str1)
|
70
|
-
refute_nil(error.str2)
|
71
|
-
assert_nil(error.str3)
|
72
|
-
assert_equal(0, error.int1)
|
73
|
-
assert_equal(0, error.int2)
|
74
|
-
end
|
75
|
-
## Last but not least, make sure we threw an error
|
76
|
-
assert_instance_of(LibXML::XML::Error, bad_schema)
|
77
|
-
end
|
78
|
-
|
79
|
-
def test_doc_valid
|
80
|
-
assert(@doc.validate_schema(@schema))
|
81
|
-
end
|
82
|
-
|
83
|
-
def test_doc_invalid
|
84
|
-
new_node = LibXML::XML::Node.new('invalid', 'this will mess up validation')
|
85
|
-
@doc.root << new_node
|
86
|
-
|
87
|
-
error = assert_raises(LibXML::XML::Error) do
|
88
|
-
@doc.validate_schema(@schema)
|
89
|
-
end
|
90
|
-
|
91
|
-
check_error(error)
|
92
|
-
assert_nil(error.line)
|
93
|
-
refute_nil(error.node)
|
94
|
-
assert_equal('invalid', error.node.name)
|
95
|
-
end
|
96
|
-
|
97
|
-
def test_reader_valid
|
98
|
-
reader = LibXML::XML::Reader.string(@doc.to_s)
|
99
|
-
assert(reader.schema_validate(@schema))
|
100
|
-
|
101
|
-
while reader.read
|
102
|
-
end
|
103
|
-
end
|
104
|
-
|
105
|
-
def test_reader_invalid
|
106
|
-
# Set error handler
|
107
|
-
errors = Array.new
|
108
|
-
LibXML::XML::Error.set_handler do |error|
|
109
|
-
errors << error
|
110
|
-
end
|
111
|
-
|
112
|
-
new_node = LibXML::XML::Node.new('invalid', 'this will mess up validation')
|
113
|
-
@doc.root << new_node
|
114
|
-
reader = LibXML::XML::Reader.string(@doc.to_s)
|
115
|
-
|
116
|
-
# Set a schema
|
117
|
-
assert(reader.schema_validate(@schema))
|
118
|
-
|
119
|
-
while reader.read
|
120
|
-
end
|
121
|
-
|
122
|
-
assert_equal(1, errors.length)
|
123
|
-
|
124
|
-
error = errors.first
|
125
|
-
check_error(error)
|
126
|
-
assert_equal(21, error.line)
|
127
|
-
ensure
|
128
|
-
LibXML::XML::Error.set_handler(&LibXML::XML::Error::VERBOSE_HANDLER)
|
129
|
-
end
|
130
|
-
|
131
|
-
|
132
|
-
# Schema meta-data tests
|
133
|
-
def test_elements
|
134
|
-
assert_instance_of(Hash, @schema.elements)
|
135
|
-
assert_equal(1, @schema.elements.length)
|
136
|
-
assert_instance_of(LibXML::XML::Schema::Element, @schema.elements['shiporder'])
|
137
|
-
end
|
138
|
-
|
139
|
-
def test_types
|
140
|
-
assert_instance_of(Hash, @schema.types)
|
141
|
-
assert_equal(1, @schema.types.length)
|
142
|
-
assert_instance_of(LibXML::XML::Schema::Type, @schema.types['shiporderType'])
|
143
|
-
end
|
144
|
-
|
145
|
-
def test_imported_types
|
146
|
-
assert_instance_of(Hash, @schema.imported_types)
|
147
|
-
assert_equal(2, @schema.imported_types.length)
|
148
|
-
assert_instance_of(LibXML::XML::Schema::Type, @schema.imported_types['shiporderType'])
|
149
|
-
assert_instance_of(LibXML::XML::Schema::Type, @schema.imported_types['shiporderFooType'])
|
150
|
-
end
|
151
|
-
|
152
|
-
def test_imported_ns_types
|
153
|
-
assert_instance_of(Hash, @schema.imported_ns_types)
|
154
|
-
assert_equal(2, @schema.imported_ns_types.length)
|
155
|
-
assert_equal(1, @schema.imported_ns_types[nil].length)
|
156
|
-
assert_equal(1, @schema.imported_ns_types[Import_NS].length)
|
157
|
-
assert_instance_of(LibXML::XML::Schema::Type, @schema.imported_ns_types[nil]['shiporderType'])
|
158
|
-
assert_instance_of(LibXML::XML::Schema::Type, @schema.imported_ns_types[Import_NS]['shiporderFooType'])
|
159
|
-
end
|
160
|
-
|
161
|
-
def test_imported_ns_elements
|
162
|
-
assert_instance_of(Hash, @schema.imported_ns_elements)
|
163
|
-
assert_equal(2, @schema.imported_ns_elements.length)
|
164
|
-
assert_equal(1, @schema.imported_ns_elements[nil].length)
|
165
|
-
assert_equal(1, @schema.imported_ns_elements[Import_NS].length)
|
166
|
-
assert_instance_of(LibXML::XML::Schema::Element, @schema.imported_ns_elements[nil]['shiporder'])
|
167
|
-
assert_instance_of(LibXML::XML::Schema::Element, @schema.imported_ns_elements[Import_NS]['shiporder'])
|
168
|
-
assert_equal('shiporderType', @schema.imported_ns_elements[nil]['shiporder'].type.name)
|
169
|
-
assert_equal('shiporderFooType', @schema.imported_ns_elements[Import_NS]['shiporder'].type.name)
|
170
|
-
end
|
171
|
-
|
172
|
-
def test_namespaces
|
173
|
-
assert_instance_of(Array, @schema.namespaces)
|
174
|
-
## For some reason, when importing another schema we end up with two xs->http://www.w3.org/2001/XMLSchema namespaces.
|
175
|
-
## So, we expect 3 here (one for Import_NS and then two for the schema namespace.
|
176
|
-
assert_equal(3, @schema.namespaces.length)
|
177
|
-
end
|
178
|
-
|
179
|
-
def test_schema_type
|
180
|
-
type = @schema.types['shiporderType']
|
181
|
-
|
182
|
-
assert_equal('shiporderType', type.name)
|
183
|
-
assert_nil(type.namespace)
|
184
|
-
assert_equal("Shiporder type documentation", type.annotation)
|
185
|
-
assert_instance_of(LibXML::XML::Node, type.node)
|
186
|
-
assert_equal(LibXML::XML::Schema::Types::XML_SCHEMA_TYPE_COMPLEX, type.kind)
|
187
|
-
assert_instance_of(LibXML::XML::Schema::Type, type.base)
|
188
|
-
assert_equal("anyType", type.base.name)
|
189
|
-
assert_equal(LibXML::XML::Schema::Types::XML_SCHEMA_TYPE_BASIC, type.base.kind)
|
190
|
-
|
191
|
-
assert_instance_of(Hash, type.elements)
|
192
|
-
assert_equal(3, type.elements.length)
|
193
|
-
end
|
194
|
-
|
195
|
-
def test_schema_element
|
196
|
-
element = @schema.types['shiporderType'].elements['orderperson']
|
197
|
-
|
198
|
-
assert_equal('orderperson', element.name)
|
199
|
-
assert_nil(element.namespace)
|
200
|
-
assert_equal("orderperson element documentation", element.annotation)
|
201
|
-
|
202
|
-
element
|
203
|
-
|
204
|
-
|
205
|
-
|
206
|
-
assert_equal(
|
207
|
-
assert_equal(
|
208
|
-
|
209
|
-
|
210
|
-
|
211
|
-
|
212
|
-
|
213
|
-
|
214
|
-
|
215
|
-
|
216
|
-
|
217
|
-
|
218
|
-
|
219
|
-
|
220
|
-
|
221
|
-
|
222
|
-
|
223
|
-
|
224
|
-
|
225
|
-
|
226
|
-
|
227
|
-
assert_equal(
|
228
|
-
|
229
|
-
assert_equal(
|
230
|
-
|
231
|
-
|
1
|
+
# encoding: UTF-8
|
2
|
+
|
3
|
+
require_relative './test_helper'
|
4
|
+
|
5
|
+
class TestSchema < Minitest::Test
|
6
|
+
Import_NS = 'http://xml4r.org/libxml-ruby/test/shiporder'.freeze
|
7
|
+
|
8
|
+
def setup
|
9
|
+
file = File.join(File.dirname(__FILE__), 'model/shiporder.xml')
|
10
|
+
@doc = LibXML::XML::Document.file(file)
|
11
|
+
schema_file = File.join(File.dirname(__FILE__), 'model/shiporder.xsd')
|
12
|
+
schema_doc = LibXML::XML::Document.file(schema_file)
|
13
|
+
@schema = LibXML::XML::Schema.document(schema_doc)
|
14
|
+
end
|
15
|
+
|
16
|
+
def teardown
|
17
|
+
@doc = nil
|
18
|
+
@schema = nil
|
19
|
+
end
|
20
|
+
|
21
|
+
def check_error(error)
|
22
|
+
refute_nil(error)
|
23
|
+
assert(error.message.match(/Error: Element 'invalid': This element is not expected. Expected is \( item \)/))
|
24
|
+
assert_kind_of(LibXML::XML::Error, error)
|
25
|
+
assert_equal(LibXML::XML::Error::SCHEMASV, error.domain)
|
26
|
+
assert_equal(LibXML::XML::Error::SCHEMAV_ELEMENT_CONTENT, error.code)
|
27
|
+
assert_equal(LibXML::XML::Error::ERROR, error.level)
|
28
|
+
assert(error.file.match(/shiporder.xml/)) if error.file
|
29
|
+
assert_nil(error.str1)
|
30
|
+
assert_nil(error.str2)
|
31
|
+
assert_nil(error.str3)
|
32
|
+
assert_equal(0, error.int1)
|
33
|
+
assert_equal(0, error.int2)
|
34
|
+
end
|
35
|
+
|
36
|
+
def test_load_from_doc
|
37
|
+
assert_instance_of(LibXML::XML::Schema, @schema)
|
38
|
+
end
|
39
|
+
|
40
|
+
def test_schema_load_from_uri
|
41
|
+
xlink_schema = LibXML::XML::Schema.new('http://www.w3.org/1999/xlink.xsd')
|
42
|
+
assert_instance_of(LibXML::XML::Schema, xlink_schema)
|
43
|
+
assert_instance_of(LibXML::XML::Schema::Element, xlink_schema.elements['title'])
|
44
|
+
assert_instance_of(LibXML::XML::Schema::Type, xlink_schema.types['titleEltType'])
|
45
|
+
assert_equal('http://www.w3.org/1999/xlink', xlink_schema.target_namespace)
|
46
|
+
end
|
47
|
+
|
48
|
+
def test_schema_from_string
|
49
|
+
schema_file = File.join(File.dirname(__FILE__), 'model/shiporder.xsd')
|
50
|
+
schema_from_str = LibXML::XML::Schema.from_string(File.read(schema_file))
|
51
|
+
assert_instance_of(LibXML::XML::Schema, schema_from_str)
|
52
|
+
end
|
53
|
+
|
54
|
+
def test_invalid_schema_doc
|
55
|
+
bad_schema_file = File.join(File.dirname(__FILE__), 'model/shiporder_bad.xsd')
|
56
|
+
bad_schema_doc = LibXML::XML::Document.file(bad_schema_file)
|
57
|
+
bad_schema = nil
|
58
|
+
## Note: this type of error throws
|
59
|
+
begin
|
60
|
+
bad_schema = LibXML::XML::Schema.document(bad_schema_doc)
|
61
|
+
rescue LibXML::XML::Error => error
|
62
|
+
bad_schema = error
|
63
|
+
assert(error.message.match(/Error: Element '.*': The content is not valid. Expected is \(/))
|
64
|
+
assert_kind_of(LibXML::XML::Error, error)
|
65
|
+
assert_equal(LibXML::XML::Error::SCHEMASP, error.domain)
|
66
|
+
assert_equal(LibXML::XML::Error::SCHEMAP_S4S_ELEM_NOT_ALLOWED, error.code)
|
67
|
+
assert_equal(LibXML::XML::Error::ERROR, error.level)
|
68
|
+
assert(error.file.match(/shiporder_bad.xsd/))
|
69
|
+
assert_equal("Element '{http://www.w3.org/2001/XMLSchema}complexType'", error.str1)
|
70
|
+
refute_nil(error.str2)
|
71
|
+
assert_nil(error.str3)
|
72
|
+
assert_equal(0, error.int1)
|
73
|
+
assert_equal(0, error.int2)
|
74
|
+
end
|
75
|
+
## Last but not least, make sure we threw an error
|
76
|
+
assert_instance_of(LibXML::XML::Error, bad_schema)
|
77
|
+
end
|
78
|
+
|
79
|
+
def test_doc_valid
|
80
|
+
assert(@doc.validate_schema(@schema))
|
81
|
+
end
|
82
|
+
|
83
|
+
def test_doc_invalid
|
84
|
+
new_node = LibXML::XML::Node.new('invalid', 'this will mess up validation')
|
85
|
+
@doc.root << new_node
|
86
|
+
|
87
|
+
error = assert_raises(LibXML::XML::Error) do
|
88
|
+
@doc.validate_schema(@schema)
|
89
|
+
end
|
90
|
+
|
91
|
+
check_error(error)
|
92
|
+
assert_nil(error.line)
|
93
|
+
refute_nil(error.node)
|
94
|
+
assert_equal('invalid', error.node.name)
|
95
|
+
end
|
96
|
+
|
97
|
+
def test_reader_valid
|
98
|
+
reader = LibXML::XML::Reader.string(@doc.to_s)
|
99
|
+
assert(reader.schema_validate(@schema))
|
100
|
+
|
101
|
+
while reader.read
|
102
|
+
end
|
103
|
+
end
|
104
|
+
|
105
|
+
def test_reader_invalid
|
106
|
+
# Set error handler
|
107
|
+
errors = Array.new
|
108
|
+
LibXML::XML::Error.set_handler do |error|
|
109
|
+
errors << error
|
110
|
+
end
|
111
|
+
|
112
|
+
new_node = LibXML::XML::Node.new('invalid', 'this will mess up validation')
|
113
|
+
@doc.root << new_node
|
114
|
+
reader = LibXML::XML::Reader.string(@doc.to_s)
|
115
|
+
|
116
|
+
# Set a schema
|
117
|
+
assert(reader.schema_validate(@schema))
|
118
|
+
|
119
|
+
while reader.read
|
120
|
+
end
|
121
|
+
|
122
|
+
assert_equal(1, errors.length)
|
123
|
+
|
124
|
+
error = errors.first
|
125
|
+
check_error(error)
|
126
|
+
assert_equal(21, error.line)
|
127
|
+
ensure
|
128
|
+
LibXML::XML::Error.set_handler(&LibXML::XML::Error::VERBOSE_HANDLER)
|
129
|
+
end
|
130
|
+
|
131
|
+
|
132
|
+
# Schema meta-data tests
|
133
|
+
def test_elements
|
134
|
+
assert_instance_of(Hash, @schema.elements)
|
135
|
+
assert_equal(1, @schema.elements.length)
|
136
|
+
assert_instance_of(LibXML::XML::Schema::Element, @schema.elements['shiporder'])
|
137
|
+
end
|
138
|
+
|
139
|
+
def test_types
|
140
|
+
assert_instance_of(Hash, @schema.types)
|
141
|
+
assert_equal(1, @schema.types.length)
|
142
|
+
assert_instance_of(LibXML::XML::Schema::Type, @schema.types['shiporderType'])
|
143
|
+
end
|
144
|
+
|
145
|
+
def test_imported_types
|
146
|
+
assert_instance_of(Hash, @schema.imported_types)
|
147
|
+
assert_equal(2, @schema.imported_types.length)
|
148
|
+
assert_instance_of(LibXML::XML::Schema::Type, @schema.imported_types['shiporderType'])
|
149
|
+
assert_instance_of(LibXML::XML::Schema::Type, @schema.imported_types['shiporderFooType'])
|
150
|
+
end
|
151
|
+
|
152
|
+
def test_imported_ns_types
|
153
|
+
assert_instance_of(Hash, @schema.imported_ns_types)
|
154
|
+
assert_equal(2, @schema.imported_ns_types.length)
|
155
|
+
assert_equal(1, @schema.imported_ns_types[nil].length)
|
156
|
+
assert_equal(1, @schema.imported_ns_types[Import_NS].length)
|
157
|
+
assert_instance_of(LibXML::XML::Schema::Type, @schema.imported_ns_types[nil]['shiporderType'])
|
158
|
+
assert_instance_of(LibXML::XML::Schema::Type, @schema.imported_ns_types[Import_NS]['shiporderFooType'])
|
159
|
+
end
|
160
|
+
|
161
|
+
def test_imported_ns_elements
|
162
|
+
assert_instance_of(Hash, @schema.imported_ns_elements)
|
163
|
+
assert_equal(2, @schema.imported_ns_elements.length)
|
164
|
+
assert_equal(1, @schema.imported_ns_elements[nil].length)
|
165
|
+
assert_equal(1, @schema.imported_ns_elements[Import_NS].length)
|
166
|
+
assert_instance_of(LibXML::XML::Schema::Element, @schema.imported_ns_elements[nil]['shiporder'])
|
167
|
+
assert_instance_of(LibXML::XML::Schema::Element, @schema.imported_ns_elements[Import_NS]['shiporder'])
|
168
|
+
assert_equal('shiporderType', @schema.imported_ns_elements[nil]['shiporder'].type.name)
|
169
|
+
assert_equal('shiporderFooType', @schema.imported_ns_elements[Import_NS]['shiporder'].type.name)
|
170
|
+
end
|
171
|
+
|
172
|
+
def test_namespaces
|
173
|
+
assert_instance_of(Array, @schema.namespaces)
|
174
|
+
## For some reason, when importing another schema we end up with two xs->http://www.w3.org/2001/XMLSchema namespaces.
|
175
|
+
## So, we expect 3 here (one for Import_NS and then two for the schema namespace.
|
176
|
+
assert_equal(3, @schema.namespaces.length)
|
177
|
+
end
|
178
|
+
|
179
|
+
def test_schema_type
|
180
|
+
type = @schema.types['shiporderType']
|
181
|
+
|
182
|
+
assert_equal('shiporderType', type.name)
|
183
|
+
assert_nil(type.namespace)
|
184
|
+
assert_equal("Shiporder type documentation", type.annotation)
|
185
|
+
assert_instance_of(LibXML::XML::Node, type.node)
|
186
|
+
assert_equal(LibXML::XML::Schema::Types::XML_SCHEMA_TYPE_COMPLEX, type.kind)
|
187
|
+
assert_instance_of(LibXML::XML::Schema::Type, type.base)
|
188
|
+
assert_equal("anyType", type.base.name)
|
189
|
+
assert_equal(LibXML::XML::Schema::Types::XML_SCHEMA_TYPE_BASIC, type.base.kind)
|
190
|
+
|
191
|
+
assert_instance_of(Hash, type.elements)
|
192
|
+
assert_equal(3, type.elements.length)
|
193
|
+
end
|
194
|
+
|
195
|
+
def test_schema_element
|
196
|
+
element = @schema.types['shiporderType'].elements['orderperson']
|
197
|
+
|
198
|
+
assert_equal('orderperson', element.name)
|
199
|
+
assert_nil(element.namespace)
|
200
|
+
assert_equal("orderperson element documentation", element.annotation)
|
201
|
+
assert_equal(false, element.array?)
|
202
|
+
assert_equal(true, element.required?)
|
203
|
+
|
204
|
+
element = @schema.types['shiporderType'].elements['item']
|
205
|
+
assert_equal('item', element.name)
|
206
|
+
assert_equal(true, element.array?)
|
207
|
+
assert_equal(true, element.required?)
|
208
|
+
|
209
|
+
element = @schema.types['shiporderType'].elements['item'].type.elements['note']
|
210
|
+
assert_equal('note', element.name)
|
211
|
+
assert_equal('string', element.type.name)
|
212
|
+
assert_equal(false, element.array?)
|
213
|
+
assert_equal(false, element.required?)
|
214
|
+
end
|
215
|
+
|
216
|
+
def test_schema_attributes
|
217
|
+
type = @schema.types['shiporderType']
|
218
|
+
|
219
|
+
assert_instance_of(Array, type.attributes)
|
220
|
+
assert_equal(2, type.attributes.length)
|
221
|
+
assert_instance_of(LibXML::XML::Schema::Attribute, type.attributes.first)
|
222
|
+
end
|
223
|
+
|
224
|
+
def test_schema_attribute
|
225
|
+
attribute = @schema.types['shiporderType'].attributes.first
|
226
|
+
|
227
|
+
assert_equal("orderid", attribute.name)
|
228
|
+
assert_nil(attribute.namespace)
|
229
|
+
assert_equal(1, attribute.occurs)
|
230
|
+
assert_equal('string', attribute.type.name)
|
231
|
+
|
232
|
+
attribute = @schema.types['shiporderType'].attributes[1]
|
233
|
+
assert_equal(2, attribute.occurs)
|
234
|
+
assert_equal('1', attribute.default)
|
235
|
+
assert_equal('integer', attribute.type.name)
|
236
|
+
end
|
237
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: libxml-ruby
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 4.1.
|
4
|
+
version: 4.1.2
|
5
5
|
platform: x64-mingw-ucrt
|
6
6
|
authors:
|
7
7
|
- Ross Bamform
|
@@ -14,7 +14,7 @@ authors:
|
|
14
14
|
autorequire:
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
|
-
date: 2023-
|
17
|
+
date: 2023-11-04 00:00:00.000000000 Z
|
18
18
|
dependencies:
|
19
19
|
- !ruby/object:Gem::Dependency
|
20
20
|
name: rake-compiler
|
@@ -136,7 +136,6 @@ files:
|
|
136
136
|
- ext/libxml/ruby_xml_xpath_object.h
|
137
137
|
- ext/vc/libxml_ruby.sln
|
138
138
|
- lib/3.1/libxml_ruby.so
|
139
|
-
- lib/3.2/libxml_ruby.so
|
140
139
|
- lib/libxml-ruby.rb
|
141
140
|
- lib/libxml.rb
|
142
141
|
- lib/libxml/attr.rb
|
@@ -275,7 +274,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
275
274
|
- !ruby/object:Gem::Version
|
276
275
|
version: '0'
|
277
276
|
requirements: []
|
278
|
-
rubygems_version: 3.
|
277
|
+
rubygems_version: 3.4.21
|
279
278
|
signing_key:
|
280
279
|
specification_version: 4
|
281
280
|
summary: Ruby Bindings for LibXML2
|
data/lib/3.2/libxml_ruby.so
DELETED
Binary file
|