cddl 0.7.2 → 0.7.3
Sign up to get free protection for your applications and to get access to all the features.
- 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:
|