cddl 0.7.2 → 0.7.3
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/cddl.gemspec +1 -1
- data/lib/cbor-pp.rb +28 -9
- data/lib/cddl.rb +2 -2
- data/test-data/grasp-01-extract.cddl +91 -0
- data/test-data/xmlmig.cddl +15 -0
- data/test/test-cddl.rb +245 -230
- metadata +4 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 8059c1eece18e74a9f61203673b8e9650b90a41b
|
4
|
+
data.tar.gz: 2cbd8a2ffe191c1e63b65ecd8c1274c37d916eab
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 805dec239578ebd63c6d0ebd53f60bb15c7b536ed6ad7c08a796158f8046ba800557985f3995469a77ddb3c7fd89f67add4ce2c336073d87ecfa369ccbcaf654
|
7
|
+
data.tar.gz: 336f8a01af37ca9b6f40f7a06ed8193fc96acfab84123537e8a552eb64a8fffcd457c6c0bddd0e5b80cc7c864bce03405f65531ecc42e682971da9cbfb4f8bf9
|
data/cddl.gemspec
CHANGED
data/lib/cbor-pp.rb
CHANGED
@@ -109,6 +109,19 @@ class CBOR::PP < PrettyPrint
|
|
109
109
|
end
|
110
110
|
end
|
111
111
|
|
112
|
+
module EqlMixin
|
113
|
+
def eql?(other)
|
114
|
+
if other.respond_to? :__getobj__
|
115
|
+
eql? other.__getobj__
|
116
|
+
else
|
117
|
+
super
|
118
|
+
end
|
119
|
+
end
|
120
|
+
# def ==(other)
|
121
|
+
# eql?(other) || super
|
122
|
+
# end
|
123
|
+
end
|
124
|
+
|
112
125
|
def self.add_annotations(tree, ann_list)
|
113
126
|
tree.cbor_add_annotations_from(ann_list)
|
114
127
|
end
|
@@ -161,7 +174,7 @@ class Hash # :nodoc:
|
|
161
174
|
end
|
162
175
|
def cbor_add_annotations_from(ann_list)
|
163
176
|
super
|
164
|
-
each {|k, v|
|
177
|
+
each {|k, v|
|
165
178
|
# k.cbor_add_annotations_from(ann_list)
|
166
179
|
v.cbor_add_annotations_from(ann_list)
|
167
180
|
}
|
@@ -170,19 +183,25 @@ class Hash # :nodoc:
|
|
170
183
|
# to_a.cbor_clone.to_h # this breaks for unknown reasons
|
171
184
|
h = {}
|
172
185
|
each {|k, v| h[k.cbor_clone] = v.cbor_clone}
|
173
|
-
each {|k, v| fail [h, k, h[k], v].inspect unless h[k] == v}
|
186
|
+
each {|k, v| fail [h, k, k.cbor_clone, h[k], v].inspect unless h[k] == v}
|
174
187
|
h
|
175
188
|
end
|
176
189
|
end
|
177
190
|
|
178
191
|
class Numeric
|
179
|
-
|
180
|
-
|
181
|
-
|
182
|
-
|
183
|
-
|
184
|
-
|
185
|
-
|
192
|
+
prepend CBOR::PP::EqlMixin
|
193
|
+
end
|
194
|
+
|
195
|
+
class TrueClass
|
196
|
+
prepend CBOR::PP::EqlMixin
|
197
|
+
end
|
198
|
+
|
199
|
+
class FalseClass
|
200
|
+
prepend CBOR::PP::EqlMixin
|
201
|
+
end
|
202
|
+
|
203
|
+
class NilClass
|
204
|
+
prepend CBOR::PP::EqlMixin
|
186
205
|
end
|
187
206
|
|
188
207
|
class Object < BasicObject # :nodoc:
|
data/lib/cddl.rb
CHANGED
@@ -345,7 +345,7 @@ module CDDL
|
|
345
345
|
generate1(vr)
|
346
346
|
]}
|
347
347
|
rescue BackTrack
|
348
|
-
fail BackTrack("Need #{where[1]}..#{where[2]} of these: #{[kr, vr].inspect}") unless where[1] == 0
|
348
|
+
fail BackTrack.new("Need #{where[1]}..#{where[2]} of these: #{[kr, vr].inspect}") unless where[1] == 0
|
349
349
|
[]
|
350
350
|
end
|
351
351
|
when :string, :int, :float
|
@@ -768,7 +768,7 @@ module CDDL
|
|
768
768
|
when 7
|
769
769
|
t, v = extract_value(where)
|
770
770
|
if t
|
771
|
-
v
|
771
|
+
v.eql? d
|
772
772
|
else
|
773
773
|
case where[2]
|
774
774
|
when nil
|
@@ -0,0 +1,91 @@
|
|
1
|
+
|
2
|
+
grasp-message = message
|
3
|
+
|
4
|
+
session-id = 0..16777215
|
5
|
+
; that is up to 24 bits
|
6
|
+
|
7
|
+
message /= discovery-message
|
8
|
+
discovery-message = [M_DISCOVERY, session-id, objective]
|
9
|
+
|
10
|
+
message /= response-message
|
11
|
+
response-message = [M_RESPONSE, session-id,
|
12
|
+
(+locator-option // divert-option // objective)]
|
13
|
+
|
14
|
+
message /= request-message
|
15
|
+
request-message = [M_REQUEST, session-id, objective]
|
16
|
+
|
17
|
+
message /= negotiation-message
|
18
|
+
negotiation-message = [M_NEGOTIATE, session-id, objective]
|
19
|
+
|
20
|
+
message /= end-message
|
21
|
+
end-message = [M_END, session-id, (accept-option / decline-option)]
|
22
|
+
|
23
|
+
message /= wait-message
|
24
|
+
wait-message = [M_WAIT, session-id, waiting-time-option]
|
25
|
+
|
26
|
+
divert-option = [O_DIVERT, +locator-option]
|
27
|
+
|
28
|
+
accept-option = [O_ACCEPT]
|
29
|
+
|
30
|
+
decline-option = [O_DECLINE]
|
31
|
+
|
32
|
+
waiting-time-option = [O_WAITING, option-waiting-time]
|
33
|
+
option-waiting-time = 0..4294967295 ; in milliseconds
|
34
|
+
|
35
|
+
option-device-id = [O_DEVICE_ID, bytes]
|
36
|
+
|
37
|
+
locator-option /= ipv4-locator-option
|
38
|
+
ipv4-locator-option = bytes .size 4
|
39
|
+
; this is simpler than [O_IPv4_LOCATOR, bytes .size 4]
|
40
|
+
|
41
|
+
locator-option /= ipv6-locator-option
|
42
|
+
ipv6-locator-option = bytes .size 16
|
43
|
+
|
44
|
+
locator-option /= fqdn-locator-option
|
45
|
+
fqdn-locator-option = [O_FQDN_LOCATOR, text]
|
46
|
+
|
47
|
+
locator-option /= url-locator-option
|
48
|
+
url-locator-option = [O_URL_LOCATOR, text]
|
49
|
+
|
50
|
+
objective-flags = uint .bits objective-flag
|
51
|
+
|
52
|
+
objective-flag = &(
|
53
|
+
D: 0
|
54
|
+
N: 1
|
55
|
+
S: 2
|
56
|
+
)
|
57
|
+
|
58
|
+
; D means valid for discovery only
|
59
|
+
; N means valid for discovery and negotiation
|
60
|
+
; S means valid for discovery and synchronization
|
61
|
+
|
62
|
+
objective /= generic-obj
|
63
|
+
generic-obj = [objective-name, objective-flags, loop-count, ?any]
|
64
|
+
|
65
|
+
objective /= vendor-obj
|
66
|
+
vendor-obj = [{"PEN":pen}, objective-name, objective-flags,
|
67
|
+
loop-count, ?any]
|
68
|
+
|
69
|
+
; A PEN is used to distinguish vendor-specific options.
|
70
|
+
|
71
|
+
pen = 0..4294967295
|
72
|
+
objective-name = tstr
|
73
|
+
loop-count = 0..255
|
74
|
+
|
75
|
+
; Constants
|
76
|
+
|
77
|
+
M_DISCOVERY = 1
|
78
|
+
M_RESPONSE = 2
|
79
|
+
M_REQUEST = 3
|
80
|
+
M_NEGOTIATE = 4
|
81
|
+
M_END = 5
|
82
|
+
M_WAIT = 6
|
83
|
+
|
84
|
+
O_DIVERT = 100
|
85
|
+
O_ACCEPT = 101
|
86
|
+
O_DECLINE = 102
|
87
|
+
O_WAITING = 103
|
88
|
+
O_DEVICE_ID = 104
|
89
|
+
O_FQDN_LOCATOR = 105
|
90
|
+
O_URL_LOCATOR = 106
|
91
|
+
|
@@ -0,0 +1,15 @@
|
|
1
|
+
element = [ns, gi, attr, elts]
|
2
|
+
|
3
|
+
ns = text / nil
|
4
|
+
; can be name syntax or URI
|
5
|
+
|
6
|
+
gi = text ; name syntax
|
7
|
+
|
8
|
+
attr = { * label => any }
|
9
|
+
|
10
|
+
label = text / int
|
11
|
+
|
12
|
+
elts = value / [* element]
|
13
|
+
; could allow values inside array for mixed content
|
14
|
+
|
15
|
+
value = int / text
|
data/test/test-cddl.rb
CHANGED
@@ -7,6 +7,13 @@ require 'cbor-diagnostic.rb'
|
|
7
7
|
require_relative '../lib/cddl'
|
8
8
|
require_relative '../lib/cbor-pp'
|
9
9
|
|
10
|
+
module CDDL
|
11
|
+
class Parser
|
12
|
+
def validate_for_test(d, warn = true)
|
13
|
+
validate(d, warn) && validate(d.cbor_clone, warn)
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
10
17
|
|
11
18
|
class TestABNF < Test::Unit::TestCase
|
12
19
|
|
@@ -68,37 +75,37 @@ HERE
|
|
68
75
|
parser2 = CDDL::Parser.new "oneortwoPerson = [1*2 person ]" + person
|
69
76
|
parser3 = CDDL::Parser.new "min2Person = [2* person ]" + person
|
70
77
|
|
71
|
-
assert parser1.
|
72
|
-
refute parser2.
|
73
|
-
refute parser3.
|
74
|
-
assert parser1.
|
75
|
-
assert parser2.
|
76
|
-
refute parser3.
|
77
|
-
assert parser1.
|
78
|
-
assert parser2.
|
79
|
-
assert parser3.
|
80
|
-
assert parser1.
|
81
|
-
refute parser2.
|
82
|
-
assert parser3.
|
83
|
-
refute parser1.
|
84
|
-
refute parser2.
|
85
|
-
refute parser3.
|
86
|
-
refute parser1.
|
87
|
-
refute parser2.
|
88
|
-
refute parser3.
|
78
|
+
assert parser1.validate_for_test([])
|
79
|
+
refute parser2.validate_for_test([], false)
|
80
|
+
refute parser3.validate_for_test([], false)
|
81
|
+
assert parser1.validate_for_test(["Methuselah", 969])
|
82
|
+
assert parser2.validate_for_test(["Methuselah", 969])
|
83
|
+
refute parser3.validate_for_test(["Methuselah", 969], false)
|
84
|
+
assert parser1.validate_for_test(["Methuselah", 969, "Methuselah", 969])
|
85
|
+
assert parser2.validate_for_test(["Methuselah", 969, "Methuselah", 969])
|
86
|
+
assert parser3.validate_for_test(["Methuselah", 969, "Methuselah", 969])
|
87
|
+
assert parser1.validate_for_test(["Methuselah", 969, "Methuselah", 969, "Methuselah", 969])
|
88
|
+
refute parser2.validate_for_test(["Methuselah", 969, "Methuselah", 969, "Methuselah", 969], false)
|
89
|
+
assert parser3.validate_for_test(["Methuselah", 969, "Methuselah", 969, "Methuselah", 969])
|
90
|
+
refute parser1.validate_for_test(["Methuselah", "Methuselah", 969, 969], false)
|
91
|
+
refute parser2.validate_for_test(["Methuselah", "Methuselah", 969, 969], false)
|
92
|
+
refute parser3.validate_for_test(["Methuselah", "Methuselah", 969, 969], false)
|
93
|
+
refute parser1.validate_for_test(["Methuselah", "Methuselah", "Methuselah", 969, 969], false)
|
94
|
+
refute parser2.validate_for_test(["Methuselah", "Methuselah", "Methuselah", 969, 969], false)
|
95
|
+
refute parser3.validate_for_test(["Methuselah", "Methuselah", "Methuselah", 969, 969], false)
|
89
96
|
end
|
90
97
|
|
91
98
|
def test_validate
|
92
99
|
parser1 = CDDL::Parser.new(File.read("test-data/7071-concise.cddl"))
|
93
100
|
g = parser1.generate
|
94
101
|
pp g
|
95
|
-
assert parser1.
|
102
|
+
assert parser1.validate_for_test(g)
|
96
103
|
old = g["application"]
|
97
104
|
g["application"] = 4711
|
98
|
-
refute parser1.
|
105
|
+
refute parser1.validate_for_test(g, false)
|
99
106
|
g["application"] = old
|
100
107
|
g["reputons"] << 5712
|
101
|
-
refute parser1.
|
108
|
+
refute parser1.validate_for_test(g, false)
|
102
109
|
end
|
103
110
|
|
104
111
|
def test_aaaaaaa_cbor_clone_hash
|
@@ -136,30 +143,37 @@ HERE
|
|
136
143
|
parser = CDDL::Parser.new <<HERE
|
137
144
|
test = 1
|
138
145
|
HERE
|
139
|
-
assert parser.
|
146
|
+
assert parser.validate_for_test(1)
|
147
|
+
end
|
148
|
+
|
149
|
+
def test_aaaaaa_validate_true
|
150
|
+
parser = CDDL::Parser.new <<HERE
|
151
|
+
test = true
|
152
|
+
HERE
|
153
|
+
assert parser.validate_for_test(true)
|
140
154
|
end
|
141
155
|
|
142
156
|
def test_validate_a
|
143
157
|
parser = CDDL::Parser.new <<HERE
|
144
158
|
test = [* one: 1]
|
145
159
|
HERE
|
146
|
-
assert parser.
|
147
|
-
assert parser.
|
148
|
-
assert parser.
|
149
|
-
refute parser.
|
150
|
-
refute parser.
|
160
|
+
assert parser.validate_for_test([])
|
161
|
+
assert parser.validate_for_test([1])
|
162
|
+
assert parser.validate_for_test([1, 1])
|
163
|
+
refute parser.validate_for_test([1, 2], false)
|
164
|
+
refute parser.validate_for_test([2, 1], false)
|
151
165
|
end
|
152
166
|
|
153
167
|
def test_validate_a_string
|
154
168
|
parser = CDDL::Parser.new <<HERE
|
155
169
|
test = [* one: "one"]
|
156
170
|
HERE
|
157
|
-
assert parser.
|
158
|
-
assert parser.
|
159
|
-
assert parser.
|
160
|
-
refute parser.
|
161
|
-
refute parser.
|
162
|
-
refute parser.
|
171
|
+
assert parser.validate_for_test([])
|
172
|
+
assert parser.validate_for_test(["one"])
|
173
|
+
assert parser.validate_for_test(["one", "one"])
|
174
|
+
refute parser.validate_for_test([1], false)
|
175
|
+
refute parser.validate_for_test(['two'], false)
|
176
|
+
refute parser.validate_for_test(["one", "two"], false)
|
163
177
|
end
|
164
178
|
|
165
179
|
|
@@ -167,12 +181,12 @@ HERE
|
|
167
181
|
parser = CDDL::Parser.new <<HERE
|
168
182
|
test = [* "two" => "one"]
|
169
183
|
HERE
|
170
|
-
assert parser.
|
171
|
-
assert parser.
|
172
|
-
assert parser.
|
173
|
-
refute parser.
|
174
|
-
refute parser.
|
175
|
-
refute parser.
|
184
|
+
assert parser.validate_for_test([])
|
185
|
+
assert parser.validate_for_test(["one"])
|
186
|
+
assert parser.validate_for_test(["one", "one"])
|
187
|
+
refute parser.validate_for_test([1], false)
|
188
|
+
refute parser.validate_for_test(['two'], false)
|
189
|
+
refute parser.validate_for_test(["one", "two"], false)
|
176
190
|
end
|
177
191
|
|
178
192
|
def test_validate_a_once
|
@@ -184,11 +198,11 @@ HERE
|
|
184
198
|
# pp parser.rules
|
185
199
|
# puts "APR:"
|
186
200
|
# pp parser.apr
|
187
|
-
refute parser.
|
188
|
-
assert parser.
|
189
|
-
refute parser.
|
190
|
-
refute parser.
|
191
|
-
refute parser.
|
201
|
+
refute parser.validate_for_test([], false)
|
202
|
+
assert parser.validate_for_test([1])
|
203
|
+
refute parser.validate_for_test([1, 1], false)
|
204
|
+
refute parser.validate_for_test([1, 2], false)
|
205
|
+
refute parser.validate_for_test([2, 1], false)
|
192
206
|
end
|
193
207
|
|
194
208
|
def test_validate_unknown_key
|
@@ -216,10 +230,10 @@ HERE
|
|
216
230
|
# puts "APR:"
|
217
231
|
# pp parser.apr
|
218
232
|
assert_equal [1, 2], parser.generate()
|
219
|
-
refute parser.
|
220
|
-
refute parser.
|
221
|
-
refute parser.
|
222
|
-
assert parser.
|
233
|
+
refute parser.validate_for_test({}, false)
|
234
|
+
refute parser.validate_for_test([], false)
|
235
|
+
refute parser.validate_for_test([1], false)
|
236
|
+
assert parser.validate_for_test([1, 2])
|
223
237
|
end
|
224
238
|
|
225
239
|
|
@@ -233,10 +247,10 @@ HERE
|
|
233
247
|
# puts "APR:"
|
234
248
|
# pp parser.apr
|
235
249
|
assert_equal [1, 2], parser.generate()
|
236
|
-
refute parser.
|
237
|
-
refute parser.
|
238
|
-
refute parser.
|
239
|
-
assert parser.
|
250
|
+
refute parser.validate_for_test({}, false)
|
251
|
+
refute parser.validate_for_test([], false)
|
252
|
+
refute parser.validate_for_test([1], false)
|
253
|
+
assert parser.validate_for_test([1, 2])
|
240
254
|
end
|
241
255
|
|
242
256
|
|
@@ -250,12 +264,12 @@ HERE
|
|
250
264
|
# pp parser.rules
|
251
265
|
# puts "APR:"
|
252
266
|
# pp parser.apr
|
253
|
-
assert parser.
|
254
|
-
assert parser.
|
255
|
-
assert parser.
|
256
|
-
refute parser.
|
257
|
-
refute parser.
|
258
|
-
refute parser.
|
267
|
+
assert parser.validate_for_test([])
|
268
|
+
assert parser.validate_for_test([1, 2])
|
269
|
+
assert parser.validate_for_test([1, 2, 1, 2])
|
270
|
+
refute parser.validate_for_test([1, 1, 2, 2], false)
|
271
|
+
refute parser.validate_for_test([1], false)
|
272
|
+
refute parser.validate_for_test([1, 2, 1], false)
|
259
273
|
end
|
260
274
|
|
261
275
|
def test_validate_occur1 # XXX need indirection for now
|
@@ -268,13 +282,13 @@ HERE
|
|
268
282
|
# pp parser.rules
|
269
283
|
# puts "APR:"
|
270
284
|
# pp parser.apr
|
271
|
-
refute parser.
|
272
|
-
refute parser.
|
273
|
-
assert parser.
|
274
|
-
refute parser.
|
275
|
-
refute parser.
|
276
|
-
refute parser.
|
277
|
-
refute parser.
|
285
|
+
refute parser.validate_for_test([], false)
|
286
|
+
refute parser.validate_for_test([1], false)
|
287
|
+
assert parser.validate_for_test([1, 2])
|
288
|
+
refute parser.validate_for_test([2, 1], false)
|
289
|
+
refute parser.validate_for_test([1, 1, 2, 2], false)
|
290
|
+
refute parser.validate_for_test([1, 2, 1, 2], false)
|
291
|
+
refute parser.validate_for_test([1, 2, 1], false)
|
278
292
|
end
|
279
293
|
|
280
294
|
def test_validate_occur01 # XXX need indirection for now
|
@@ -287,13 +301,13 @@ HERE
|
|
287
301
|
# pp parser.rules
|
288
302
|
# puts "APR:"
|
289
303
|
# pp parser.apr
|
290
|
-
assert parser.
|
291
|
-
refute parser.
|
292
|
-
assert parser.
|
293
|
-
refute parser.
|
294
|
-
refute parser.
|
295
|
-
refute parser.
|
296
|
-
refute parser.
|
304
|
+
assert parser.validate_for_test([])
|
305
|
+
refute parser.validate_for_test([1], false)
|
306
|
+
assert parser.validate_for_test([1, 2])
|
307
|
+
refute parser.validate_for_test([2, 1], false)
|
308
|
+
refute parser.validate_for_test([1, 1, 2, 2], false)
|
309
|
+
refute parser.validate_for_test([1, 2, 1, 2], false)
|
310
|
+
refute parser.validate_for_test([1, 2, 1], false)
|
297
311
|
end
|
298
312
|
|
299
313
|
def test_validate_occur1n # XXX need indirection for now
|
@@ -306,13 +320,13 @@ HERE
|
|
306
320
|
# pp parser.rules
|
307
321
|
# puts "APR:"
|
308
322
|
# pp parser.apr
|
309
|
-
refute parser.
|
310
|
-
refute parser.
|
311
|
-
assert parser.
|
312
|
-
refute parser.
|
313
|
-
refute parser.
|
314
|
-
assert parser.
|
315
|
-
refute parser.
|
323
|
+
refute parser.validate_for_test([], false)
|
324
|
+
refute parser.validate_for_test([1], false)
|
325
|
+
assert parser.validate_for_test([1, 2])
|
326
|
+
refute parser.validate_for_test([2, 1], false)
|
327
|
+
refute parser.validate_for_test([1, 1, 2, 2], false)
|
328
|
+
assert parser.validate_for_test([1, 2, 1, 2])
|
329
|
+
refute parser.validate_for_test([1, 2, 1], false)
|
316
330
|
end
|
317
331
|
|
318
332
|
def test_validate_occur0n # XXX need indirection for now
|
@@ -325,13 +339,13 @@ HERE
|
|
325
339
|
# pp parser.rules
|
326
340
|
# puts "APR:"
|
327
341
|
# pp parser.apr
|
328
|
-
assert parser.
|
329
|
-
refute parser.
|
330
|
-
assert parser.
|
331
|
-
refute parser.
|
332
|
-
refute parser.
|
333
|
-
assert parser.
|
334
|
-
refute parser.
|
342
|
+
assert parser.validate_for_test([])
|
343
|
+
refute parser.validate_for_test([1], false)
|
344
|
+
assert parser.validate_for_test([1, 2])
|
345
|
+
refute parser.validate_for_test([2, 1], false)
|
346
|
+
refute parser.validate_for_test([1, 1, 2, 2], false)
|
347
|
+
assert parser.validate_for_test([1, 2, 1, 2])
|
348
|
+
refute parser.validate_for_test([1, 2, 1], false)
|
335
349
|
end
|
336
350
|
|
337
351
|
|
@@ -346,16 +360,16 @@ HERE
|
|
346
360
|
# puts "APR:"
|
347
361
|
# pp parser.apr
|
348
362
|
assert_includes [[1, 2, 1, 2], [1, 2, 1, 2, 1, 2]], parser.generate
|
349
|
-
refute parser.
|
350
|
-
refute parser.
|
351
|
-
refute parser.
|
352
|
-
refute parser.
|
353
|
-
assert parser.
|
354
|
-
assert parser.
|
355
|
-
refute parser.
|
356
|
-
refute parser.
|
357
|
-
refute parser.
|
358
|
-
refute parser.
|
363
|
+
refute parser.validate_for_test([], false)
|
364
|
+
refute parser.validate_for_test([1], false)
|
365
|
+
refute parser.validate_for_test([1, 2], false)
|
366
|
+
refute parser.validate_for_test([2, 1], false)
|
367
|
+
assert parser.validate_for_test([1, 2, 1, 2])
|
368
|
+
assert parser.validate_for_test([1, 2, 1, 2, 1, 2])
|
369
|
+
refute parser.validate_for_test([1, 2, 1, 2, 1, 2, 1, 2], false)
|
370
|
+
refute parser.validate_for_test([1, 1, 2, 2, 2], false)
|
371
|
+
refute parser.validate_for_test([1, 1, 1, 2, 2, 2], false)
|
372
|
+
refute parser.validate_for_test([1, 2, 1], false)
|
359
373
|
end
|
360
374
|
|
361
375
|
|
@@ -370,16 +384,16 @@ HERE
|
|
370
384
|
# puts "APR:"
|
371
385
|
# pp parser.apr
|
372
386
|
assert_includes [[1, 2, 1, 2], [1, 2, 1, 2, 1, 2]], parser.generate
|
373
|
-
refute parser.
|
374
|
-
refute parser.
|
375
|
-
refute parser.
|
376
|
-
refute parser.
|
377
|
-
refute parser.
|
378
|
-
assert parser.
|
379
|
-
refute parser.
|
380
|
-
refute parser.
|
381
|
-
refute parser.
|
382
|
-
refute parser.
|
387
|
+
refute parser.validate_for_test([], false)
|
388
|
+
refute parser.validate_for_test([1], false)
|
389
|
+
refute parser.validate_for_test([1, 2], false)
|
390
|
+
refute parser.validate_for_test([2, 1], false)
|
391
|
+
refute parser.validate_for_test([1, 2, 1, 2], false) # !!! PEG semantics gets us here
|
392
|
+
assert parser.validate_for_test([1, 2, 1, 2, 1, 2])
|
393
|
+
refute parser.validate_for_test([1, 2, 1, 2, 1, 2, 1, 2], false)
|
394
|
+
refute parser.validate_for_test([1, 1, 2, 2, 2], false)
|
395
|
+
refute parser.validate_for_test([1, 1, 1, 2, 2, 2], false)
|
396
|
+
refute parser.validate_for_test([1, 2, 1], false)
|
383
397
|
end
|
384
398
|
|
385
399
|
|
@@ -422,7 +436,7 @@ HERE
|
|
422
436
|
g = parser.generate
|
423
437
|
# pp g
|
424
438
|
assert expected1 == g || expected2 == g
|
425
|
-
assert parser.
|
439
|
+
assert parser.validate_for_test(g)
|
426
440
|
}
|
427
441
|
end
|
428
442
|
|
@@ -438,7 +452,7 @@ HERE
|
|
438
452
|
# pp ["tasa", g]
|
439
453
|
bar = g['bar']
|
440
454
|
assert bar == true || Integer(bar)
|
441
|
-
assert parser.
|
455
|
+
assert parser.validate_for_test(g)
|
442
456
|
}
|
443
457
|
end
|
444
458
|
|
@@ -454,9 +468,9 @@ HERE
|
|
454
468
|
# pp ["tasag", g]
|
455
469
|
bar = g['bar']
|
456
470
|
assert bar == true || Integer(bar)
|
457
|
-
assert parser.
|
458
|
-
refute parser.
|
459
|
-
refute parser.
|
471
|
+
assert parser.validate_for_test(g)
|
472
|
+
refute parser.validate_for_test(g.merge(foo: 3), false)
|
473
|
+
refute parser.validate_for_test(g.merge(bar: "baz"), false)
|
460
474
|
}
|
461
475
|
end
|
462
476
|
|
@@ -467,7 +481,7 @@ test = {
|
|
467
481
|
}
|
468
482
|
HERE
|
469
483
|
# pp parser.rules
|
470
|
-
parser.
|
484
|
+
parser.validate_for_test({})
|
471
485
|
10.times {
|
472
486
|
g = parser.generate
|
473
487
|
# pp ["tasag", g]
|
@@ -475,9 +489,9 @@ HERE
|
|
475
489
|
bar = g['bar']
|
476
490
|
fail "GGG #{g.inspect}" unless bar
|
477
491
|
assert bar == true || Integer(bar)
|
478
|
-
assert parser.
|
479
|
-
refute parser.
|
480
|
-
refute parser.
|
492
|
+
assert parser.validate_for_test(g)
|
493
|
+
refute parser.validate_for_test(g.merge(foo: 3), false)
|
494
|
+
refute parser.validate_for_test(g.merge(bar: "baz"), false)
|
481
495
|
end
|
482
496
|
}
|
483
497
|
end
|
@@ -506,7 +520,7 @@ HERE
|
|
506
520
|
assert_equal g.size, 2
|
507
521
|
assert [1, 2].include? g[0]
|
508
522
|
assert [3, 4].include? g[1]
|
509
|
-
assert parser.
|
523
|
+
assert parser.validate_for_test(g)
|
510
524
|
}
|
511
525
|
end
|
512
526
|
|
@@ -527,7 +541,7 @@ HERE
|
|
527
541
|
assert [1, 2].include? g[0]
|
528
542
|
assert [5, 6].include? g[1]
|
529
543
|
assert [3, 4].include? g[2]
|
530
|
-
assert parser.
|
544
|
+
assert parser.validate_for_test(g)
|
531
545
|
}
|
532
546
|
end
|
533
547
|
|
@@ -553,15 +567,15 @@ HERE
|
|
553
567
|
assert [3, 4].include? g[2]
|
554
568
|
assert [5, 6, 9].include? g[3]
|
555
569
|
assert_equal g[4], 10 if g[3] == 9
|
556
|
-
assert parser.
|
570
|
+
assert parser.validate_for_test(g)
|
557
571
|
}
|
558
|
-
refute parser.
|
559
|
-
refute parser.
|
560
|
-
assert parser.
|
561
|
-
refute parser.
|
562
|
-
assert parser.
|
563
|
-
refute parser.
|
564
|
-
refute parser.
|
572
|
+
refute parser.validate_for_test([1, 5, 8, 9], false)
|
573
|
+
refute parser.validate_for_test([1, 5, 3], false)
|
574
|
+
assert parser.validate_for_test([1, 5, 4, 5])
|
575
|
+
refute parser.validate_for_test([1, 5, 4, 9], false)
|
576
|
+
assert parser.validate_for_test([1, 5, 4, 9, 10])
|
577
|
+
refute parser.validate_for_test([1, 5, 4, 3], false)
|
578
|
+
refute parser.validate_for_test([1, 5, 4, 9, 10, 3], false)
|
565
579
|
end
|
566
580
|
|
567
581
|
def test_validate_number_key
|
@@ -574,7 +588,7 @@ HERE
|
|
574
588
|
# pp parser.rules
|
575
589
|
expected = [{1 => 2}, {3.0 => "a"}, {'foo' => "bar"}]
|
576
590
|
assert_equal expected, parser.generate
|
577
|
-
assert parser.
|
591
|
+
assert parser.validate_for_test(expected)
|
578
592
|
end
|
579
593
|
|
580
594
|
def test_validate_json_float
|
@@ -591,12 +605,12 @@ beer = 3.14 / 6.28
|
|
591
605
|
HERE
|
592
606
|
# pp parser.rules
|
593
607
|
# pp parser.generate
|
594
|
-
refute parser.
|
595
|
-
assert parser.
|
596
|
-
assert parser.
|
597
|
-
refute parser.
|
598
|
-
assert parser.
|
599
|
-
refute parser.
|
608
|
+
refute parser.validate_for_test({}, false)
|
609
|
+
assert parser.validate_for_test({"f16" => 1.5, "foo" => 1, "f64" => 1.1, "bar" => 3.14})
|
610
|
+
assert parser.validate_for_test({"f16" => 1.5, "foo" => 1, "f64" => 1.1, "bar" => 6.28})
|
611
|
+
refute parser.validate_for_test({"f16" => 1.5, "foo" => 1, "f64" => 1.1, "bar" => 3.15}, false)
|
612
|
+
assert parser.validate_for_test({"f16" => 1.5, "foo" => 1, "f64" => 1.1})
|
613
|
+
refute parser.validate_for_test({"f16" => 1, "foo" => 1, "f64" => 1.1}, false)
|
600
614
|
end
|
601
615
|
|
602
616
|
def test_validate_tags
|
@@ -612,13 +626,13 @@ solid = tstr
|
|
612
626
|
HERE
|
613
627
|
# pp parser.rules
|
614
628
|
# pp parser.generate
|
615
|
-
refute parser.
|
616
|
-
refute parser.
|
617
|
-
refute parser.
|
618
|
-
assert parser.
|
619
|
-
assert parser.
|
620
|
-
refute parser.
|
621
|
-
refute parser.
|
629
|
+
refute parser.validate_for_test({}, false)
|
630
|
+
refute parser.validate_for_test(CBOR::Tagged.new(55799, CBOR::Tagged.new(997, 1)), false)
|
631
|
+
refute parser.validate_for_test(CBOR::Tagged.new(55799, CBOR::Tagged.new(998, 1)), false)
|
632
|
+
assert parser.validate_for_test(CBOR::Tagged.new(55799, CBOR::Tagged.new(998, "cornflakes")))
|
633
|
+
assert parser.validate_for_test(CBOR::Tagged.new(55799, CBOR::Tagged.new(999, [0, "barley"])))
|
634
|
+
refute parser.validate_for_test(CBOR::Tagged.new(55799, CBOR::Tagged.new(999, [0, 1])), false)
|
635
|
+
refute parser.validate_for_test(CBOR::Tagged.new(55799, CBOR::Tagged.new(999, [0, "barley", 1])), false)
|
622
636
|
end
|
623
637
|
|
624
638
|
def test_nested_group_many1
|
@@ -653,11 +667,11 @@ HERE
|
|
653
667
|
10.times {
|
654
668
|
assert parser.generate.between?(0, 12)
|
655
669
|
}
|
656
|
-
assert parser.
|
657
|
-
assert parser.
|
658
|
-
assert parser.
|
659
|
-
refute parser.
|
660
|
-
refute parser.
|
670
|
+
assert parser.validate_for_test(0)
|
671
|
+
assert parser.validate_for_test(7)
|
672
|
+
assert parser.validate_for_test(12)
|
673
|
+
refute parser.validate_for_test(-1, false)
|
674
|
+
refute parser.validate_for_test(13, false)
|
661
675
|
end
|
662
676
|
|
663
677
|
def test_range_integer_excl
|
@@ -667,12 +681,12 @@ HERE
|
|
667
681
|
10.times {
|
668
682
|
assert parser.generate.between?(0, 12)
|
669
683
|
}
|
670
|
-
assert parser.
|
671
|
-
assert parser.
|
672
|
-
refute parser.
|
673
|
-
assert parser.
|
674
|
-
refute parser.
|
675
|
-
refute parser.
|
684
|
+
assert parser.validate_for_test(0)
|
685
|
+
assert parser.validate_for_test(7)
|
686
|
+
refute parser.validate_for_test(7.0, false)
|
687
|
+
assert parser.validate_for_test(12)
|
688
|
+
refute parser.validate_for_test(-1, false)
|
689
|
+
refute parser.validate_for_test(13, false)
|
676
690
|
end
|
677
691
|
|
678
692
|
def test_range_float
|
@@ -684,14 +698,14 @@ HERE
|
|
684
698
|
10.times {
|
685
699
|
assert parser.generate.between?(0.5, 12.5)
|
686
700
|
}
|
687
|
-
refute parser.
|
688
|
-
assert parser.
|
689
|
-
assert parser.
|
690
|
-
refute parser.
|
691
|
-
assert parser.
|
692
|
-
assert parser.
|
693
|
-
refute parser.
|
694
|
-
refute parser.
|
701
|
+
refute parser.validate_for_test(0.0, false)
|
702
|
+
assert parser.validate_for_test(0.5)
|
703
|
+
assert parser.validate_for_test(7.0)
|
704
|
+
refute parser.validate_for_test(7, false)
|
705
|
+
assert parser.validate_for_test(12.0)
|
706
|
+
assert parser.validate_for_test(12.5)
|
707
|
+
refute parser.validate_for_test(-1.0, false)
|
708
|
+
refute parser.validate_for_test(13.0, false)
|
695
709
|
end
|
696
710
|
|
697
711
|
def test_enum
|
@@ -852,7 +866,7 @@ HERE
|
|
852
866
|
assert String === gen
|
853
867
|
assert gen.bytesize == 3
|
854
868
|
pp gen
|
855
|
-
assert parser.
|
869
|
+
assert parser.validate_for_test(gen)
|
856
870
|
end
|
857
871
|
|
858
872
|
|
@@ -866,11 +880,11 @@ HERE
|
|
866
880
|
assert Integer === gen
|
867
881
|
assert gen < 2**24
|
868
882
|
assert gen >= 0
|
869
|
-
assert parser.
|
883
|
+
assert parser.validate_for_test(gen)
|
870
884
|
end
|
871
|
-
refute parser.
|
872
|
-
refute parser.
|
873
|
-
refute parser.
|
885
|
+
refute parser.validate_for_test(-1, false)
|
886
|
+
refute parser.validate_for_test(2**24, false)
|
887
|
+
refute parser.validate_for_test(2**218, false)
|
874
888
|
end
|
875
889
|
|
876
890
|
def test_bits_annotation
|
@@ -881,11 +895,11 @@ HERE
|
|
881
895
|
gen = parser.generate
|
882
896
|
assert String === gen
|
883
897
|
pp gen # should mostly be "*"
|
884
|
-
assert parser.
|
885
|
-
assert parser.
|
886
|
-
refute parser.
|
887
|
-
refute parser.
|
888
|
-
refute parser.
|
898
|
+
assert parser.validate_for_test(gen)
|
899
|
+
assert parser.validate_for_test("\x08".b)
|
900
|
+
refute parser.validate_for_test("\x01".b, false)
|
901
|
+
refute parser.validate_for_test("\x10".b, false)
|
902
|
+
refute parser.validate_for_test("\x40".b, false)
|
889
903
|
end
|
890
904
|
|
891
905
|
def test_bits_annotation_on_uint
|
@@ -896,11 +910,11 @@ HERE
|
|
896
910
|
gen = parser.generate
|
897
911
|
assert Integer === gen
|
898
912
|
pp gen # should mostly be 42
|
899
|
-
assert parser.
|
900
|
-
assert parser.
|
901
|
-
refute parser.
|
902
|
-
refute parser.
|
903
|
-
refute parser.
|
913
|
+
assert parser.validate_for_test(gen)
|
914
|
+
assert parser.validate_for_test(1 << 3)
|
915
|
+
refute parser.validate_for_test(1 << 0, false)
|
916
|
+
refute parser.validate_for_test(1 << 4, false)
|
917
|
+
refute parser.validate_for_test(1 << 6, false)
|
904
918
|
end
|
905
919
|
|
906
920
|
def test_regexp_annotation
|
@@ -912,12 +926,12 @@ HERE
|
|
912
926
|
gen = parser.generate
|
913
927
|
assert String === gen
|
914
928
|
pp gen
|
915
|
-
assert parser.
|
929
|
+
assert parser.validate_for_test(gen)
|
916
930
|
end
|
917
|
-
assert parser.
|
918
|
-
assert parser.
|
919
|
-
refute parser.
|
920
|
-
refute parser.
|
931
|
+
assert parser.validate_for_test("reg")
|
932
|
+
assert parser.validate_for_test("regfoo")
|
933
|
+
refute parser.validate_for_test("foo", false)
|
934
|
+
refute parser.validate_for_test("re", false)
|
921
935
|
end
|
922
936
|
|
923
937
|
def test_cbor_annotation1
|
@@ -929,12 +943,12 @@ HERE
|
|
929
943
|
gen = parser.generate
|
930
944
|
assert_equal "\x01", gen
|
931
945
|
pp gen
|
932
|
-
assert parser.
|
946
|
+
assert parser.validate_for_test(gen)
|
933
947
|
end
|
934
|
-
assert parser.
|
935
|
-
assert parser.
|
936
|
-
refute parser.
|
937
|
-
refute parser.
|
948
|
+
assert parser.validate_for_test("\x01".b)
|
949
|
+
assert parser.validate_for_test("\x18\x01".b)
|
950
|
+
refute parser.validate_for_test("1", false)
|
951
|
+
refute parser.validate_for_test("\x00".b, false)
|
938
952
|
end
|
939
953
|
|
940
954
|
def test_cbor_annotation_uint
|
@@ -947,13 +961,13 @@ HERE
|
|
947
961
|
assert String === gen
|
948
962
|
assert_equal 0, gen.getbyte(0) >> 5
|
949
963
|
pp ["CAU", gen]
|
950
|
-
assert parser.
|
964
|
+
assert parser.validate_for_test(gen)
|
951
965
|
end
|
952
|
-
assert parser.
|
953
|
-
assert parser.
|
954
|
-
assert parser.
|
955
|
-
refute parser.
|
956
|
-
refute parser.
|
966
|
+
assert parser.validate_for_test("\x01".b)
|
967
|
+
assert parser.validate_for_test("\x00".b)
|
968
|
+
assert parser.validate_for_test("\x18\x01".b)
|
969
|
+
refute parser.validate_for_test("1", false)
|
970
|
+
refute parser.validate_for_test("\x00\x00".b, false)
|
957
971
|
end
|
958
972
|
|
959
973
|
def test_cborseq_annotation_uint
|
@@ -976,12 +990,12 @@ HERE
|
|
976
990
|
assert String === gen
|
977
991
|
pp ["CAUA", gen]
|
978
992
|
assert_equal 0, gen.getbyte(0) >> 5 unless gen == ''
|
979
|
-
assert parser.
|
993
|
+
assert parser.validate_for_test(gen)
|
980
994
|
end
|
981
|
-
assert parser.
|
982
|
-
assert parser.
|
983
|
-
refute parser.
|
984
|
-
refute parser.
|
995
|
+
assert parser.validate_for_test("\x01".b)
|
996
|
+
assert parser.validate_for_test("\x18\x01".b)
|
997
|
+
refute parser.validate_for_test("1", false)
|
998
|
+
refute parser.validate_for_test("\x00\x00\x00\x00\x00".b, false)
|
985
999
|
end
|
986
1000
|
|
987
1001
|
def test_and_annotation
|
@@ -994,11 +1008,11 @@ HERE
|
|
994
1008
|
gen = parser.generate
|
995
1009
|
assert Integer === gen
|
996
1010
|
pp ["CAA", gen]
|
997
|
-
assert parser.
|
1011
|
+
assert parser.validate_for_test(gen)
|
998
1012
|
end
|
999
|
-
assert parser.
|
1000
|
-
refute parser.
|
1001
|
-
refute parser.
|
1013
|
+
assert parser.validate_for_test(1)
|
1014
|
+
refute parser.validate_for_test(-1, false)
|
1015
|
+
refute parser.validate_for_test(0, false)
|
1002
1016
|
end
|
1003
1017
|
|
1004
1018
|
def test_within_annotation
|
@@ -1011,11 +1025,11 @@ HERE
|
|
1011
1025
|
gen = parser.generate
|
1012
1026
|
assert Integer === gen
|
1013
1027
|
pp ["CWA", gen] # should also generate some warnings
|
1014
|
-
assert parser.
|
1028
|
+
assert parser.validate_for_test(gen)
|
1015
1029
|
end
|
1016
|
-
assert parser.
|
1017
|
-
refute parser.
|
1018
|
-
refute parser.
|
1030
|
+
assert parser.validate_for_test(1)
|
1031
|
+
refute parser.validate_for_test(-1, false)
|
1032
|
+
refute parser.validate_for_test(0, false)
|
1019
1033
|
end
|
1020
1034
|
|
1021
1035
|
def test_dcaf
|
@@ -1132,7 +1146,7 @@ HERE
|
|
1132
1146
|
10.times {
|
1133
1147
|
g = parser.generate
|
1134
1148
|
# pp ["recurse-test1", g]
|
1135
|
-
assert parser.
|
1149
|
+
assert parser.validate_for_test(g)
|
1136
1150
|
}
|
1137
1151
|
end
|
1138
1152
|
|
@@ -1158,7 +1172,7 @@ HERE
|
|
1158
1172
|
10.times {
|
1159
1173
|
g = parser.generate
|
1160
1174
|
# pp ["non-recurse-test", g]
|
1161
|
-
assert parser.
|
1175
|
+
assert parser.validate_for_test(g)
|
1162
1176
|
}
|
1163
1177
|
end
|
1164
1178
|
|
@@ -1174,7 +1188,7 @@ HERE
|
|
1174
1188
|
10.times {
|
1175
1189
|
g = parser.generate
|
1176
1190
|
pp ["recurse-group-test", g]
|
1177
|
-
assert parser.
|
1191
|
+
assert parser.validate_for_test(g)
|
1178
1192
|
}
|
1179
1193
|
end
|
1180
1194
|
|
@@ -1192,8 +1206,8 @@ HERE
|
|
1192
1206
|
10.times {
|
1193
1207
|
g = parser.generate
|
1194
1208
|
# pp ["recurse-group-test2", g]
|
1195
|
-
assert parser.
|
1196
|
-
refute parser.
|
1209
|
+
assert parser.validate_for_test(g)
|
1210
|
+
refute parser.validate_for_test(g.merge(baz: 3), false)
|
1197
1211
|
}
|
1198
1212
|
end
|
1199
1213
|
|
@@ -1219,7 +1233,7 @@ HERE
|
|
1219
1233
|
# puts "empty_group RULES:"
|
1220
1234
|
# pp parser.rules
|
1221
1235
|
assert_equal({}, parser.generate)
|
1222
|
-
assert parser.
|
1236
|
+
assert parser.validate_for_test({})
|
1223
1237
|
end
|
1224
1238
|
|
1225
1239
|
|
@@ -1234,7 +1248,7 @@ HERE
|
|
1234
1248
|
# puts "empty_group_sp RULES:"
|
1235
1249
|
# pp parser.rules
|
1236
1250
|
assert_equal({}, parser.generate)
|
1237
|
-
assert parser.
|
1251
|
+
assert parser.validate_for_test({})
|
1238
1252
|
end
|
1239
1253
|
|
1240
1254
|
|
@@ -1251,7 +1265,7 @@ HERE
|
|
1251
1265
|
# puts "empty_group_sp RULES:"
|
1252
1266
|
# pp parser.rules
|
1253
1267
|
assert_equal({}, parser.generate)
|
1254
|
-
assert parser.
|
1268
|
+
assert parser.validate_for_test({})
|
1255
1269
|
end
|
1256
1270
|
|
1257
1271
|
def test_simple_group_augmented
|
@@ -1272,9 +1286,9 @@ HERE
|
|
1272
1286
|
v[parser.generate["abs"]] = true
|
1273
1287
|
end
|
1274
1288
|
assert_equal({3 => true, -3 => true, 5 => true}, v)
|
1275
|
-
assert parser.
|
1276
|
-
assert parser.
|
1277
|
-
assert parser.
|
1289
|
+
assert parser.validate_for_test({"abs" => 3})
|
1290
|
+
assert parser.validate_for_test({"abs" => 5})
|
1291
|
+
assert parser.validate_for_test({"abs" => -3})
|
1278
1292
|
end
|
1279
1293
|
|
1280
1294
|
def test_simple_group_augmented_uninitialized
|
@@ -1294,8 +1308,8 @@ HERE
|
|
1294
1308
|
v[parser.generate["abs"]] = true
|
1295
1309
|
end
|
1296
1310
|
assert_equal({3 => true, -3 => true}, v)
|
1297
|
-
assert parser.
|
1298
|
-
assert parser.
|
1311
|
+
assert parser.validate_for_test({"abs" => 3})
|
1312
|
+
assert parser.validate_for_test({"abs" => -3})
|
1299
1313
|
end
|
1300
1314
|
|
1301
1315
|
|
@@ -1316,8 +1330,8 @@ HERE
|
|
1316
1330
|
v[parser.generate["abs"]] = true
|
1317
1331
|
end
|
1318
1332
|
assert_equal({3 => true, -3 => true}, v)
|
1319
|
-
assert parser.
|
1320
|
-
assert parser.
|
1333
|
+
assert parser.validate_for_test({"abs" => 3})
|
1334
|
+
assert parser.validate_for_test({"abs" => -3})
|
1321
1335
|
end
|
1322
1336
|
|
1323
1337
|
|
@@ -1356,7 +1370,7 @@ HERE
|
|
1356
1370
|
# puts "simple_type_augmented RULES:"
|
1357
1371
|
# pp parser.rules
|
1358
1372
|
assert_equal parser.generate, {"abs" => 17}
|
1359
|
-
assert parser.
|
1373
|
+
assert parser.validate_for_test({"abs" => 17})
|
1360
1374
|
end
|
1361
1375
|
|
1362
1376
|
|
@@ -1369,7 +1383,7 @@ HERE
|
|
1369
1383
|
# puts "simple_type_augmented RULES:"
|
1370
1384
|
# pp parser.rules
|
1371
1385
|
assert_equal parser.generate, {"a" => 1}
|
1372
|
-
assert parser.
|
1386
|
+
assert parser.validate_for_test({"a" => 1})
|
1373
1387
|
end
|
1374
1388
|
|
1375
1389
|
|
@@ -1382,7 +1396,7 @@ HERE
|
|
1382
1396
|
# puts "simple_type_augmented RULES:"
|
1383
1397
|
# pp parser.rules
|
1384
1398
|
assert_equal parser.generate, {}
|
1385
|
-
assert parser.
|
1399
|
+
assert parser.validate_for_test({})
|
1386
1400
|
end
|
1387
1401
|
|
1388
1402
|
def test_aaa_validate_more_socket_in_star
|
@@ -1407,10 +1421,10 @@ HERE
|
|
1407
1421
|
# pp parser.rules
|
1408
1422
|
10.times do
|
1409
1423
|
g = parser.generate
|
1410
|
-
|
1411
|
-
assert parser.
|
1424
|
+
pp g
|
1425
|
+
assert parser.validate_for_test(g)
|
1412
1426
|
end
|
1413
|
-
assert parser.
|
1427
|
+
assert parser.validate_for_test({"seq" => 1, "ack" => 2})
|
1414
1428
|
end
|
1415
1429
|
|
1416
1430
|
|
@@ -1431,8 +1445,8 @@ HERE
|
|
1431
1445
|
v[parser.generate["abs"]] = true
|
1432
1446
|
end
|
1433
1447
|
assert_equal({3 => true, -3 => true}, v)
|
1434
|
-
assert parser.
|
1435
|
-
assert parser.
|
1448
|
+
assert parser.validate_for_test({"abs" => 3})
|
1449
|
+
assert parser.validate_for_test({"abs" => -3})
|
1436
1450
|
end
|
1437
1451
|
|
1438
1452
|
|
@@ -1444,7 +1458,7 @@ c = ()
|
|
1444
1458
|
HERE
|
1445
1459
|
# XXX: Pending
|
1446
1460
|
# assert_equal({}, parser.generate)
|
1447
|
-
# assert parser.
|
1461
|
+
# assert parser.validate_for_test({})
|
1448
1462
|
end
|
1449
1463
|
|
1450
1464
|
def test_group_occur
|
@@ -1462,7 +1476,7 @@ HERE
|
|
1462
1476
|
# puts "empty_group_sp RULES:"
|
1463
1477
|
pp parser.rules
|
1464
1478
|
assert_equal parser.rules, parser2.rules
|
1465
|
-
# assert parser.
|
1479
|
+
# assert parser.validate_for_test({})
|
1466
1480
|
10.times {
|
1467
1481
|
g = parser2.generate
|
1468
1482
|
# pp ["group-occur", g]
|
@@ -1470,8 +1484,8 @@ HERE
|
|
1470
1484
|
g.each_slice(2) do |sl|
|
1471
1485
|
assert_equal sl, [1, 2]
|
1472
1486
|
end
|
1473
|
-
assert parser2.
|
1474
|
-
refute parser2.
|
1487
|
+
assert parser2.validate_for_test(g)
|
1488
|
+
refute parser2.validate_for_test(g << 1, false)
|
1475
1489
|
}
|
1476
1490
|
end
|
1477
1491
|
|
@@ -1529,8 +1543,9 @@ HERE
|
|
1529
1543
|
a = {a: nil}
|
1530
1544
|
HERE
|
1531
1545
|
g = parser.generate
|
1532
|
-
assert parser.
|
1546
|
+
assert parser.validate_for_test(g)
|
1533
1547
|
assert_equal g, {"a" => nil}
|
1548
|
+
assert_equal g.cbor_clone, {"a" => nil}
|
1534
1549
|
end
|
1535
1550
|
|
1536
1551
|
def test_extractor_ignores_map
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: cddl
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.7.
|
4
|
+
version: 0.7.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Carsten Bormann
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2016-04-14 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: cbor-diag
|
@@ -104,6 +104,7 @@ files:
|
|
104
104
|
- test-data/dcaf.cddl
|
105
105
|
- test-data/dcaf1.cddl
|
106
106
|
- test-data/extractor-demo.cddl
|
107
|
+
- test-data/grasp-01-extract.cddl
|
107
108
|
- test-data/grasp-01-test.cddl
|
108
109
|
- test-data/grasp-01.cddl
|
109
110
|
- test-data/grasp-v1.cddl
|
@@ -122,6 +123,7 @@ files:
|
|
122
123
|
- test-data/wrong1a.cddl
|
123
124
|
- test-data/wrong2.cddl
|
124
125
|
- test-data/wrong2a.cddl
|
126
|
+
- test-data/xmlmig.cddl
|
125
127
|
- test/test-cddl.rb
|
126
128
|
homepage: http://github.com/cabo/cddl
|
127
129
|
licenses:
|