cddl 0.6.0 → 0.6.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 393b811831045b4c855ad1f27ba0fa410c6e5278
4
- data.tar.gz: 8f28e4e50d8a408b1ef43c13b90c6c8c00c6d99c
3
+ metadata.gz: 8e2adafcd62e2e19c64d3b561c3f4fa020551ded
4
+ data.tar.gz: 42cfe0856afa556943bdcf10c8805bf9acf87d13
5
5
  SHA512:
6
- metadata.gz: 73d8c3fb4b67680d74eeb9ea2b91dc84e9b23410a5ee4f8fb253dddfccbf3531114fece3c2d4008e36cd171c7f833567141690a856f3a41684dfb14f0d227cdf
7
- data.tar.gz: 1402b3fd3b79bc6f1c69627125886ef9d59a1693d1c65c76883d79f982551f94af2332cc35eec9f8141100bb8e086a079542677551d2c209ff704b405dc9469a
6
+ metadata.gz: 3e3aaa3ec40b05a3b0afb50a13e7cf169c33cb55634289379bc481a7831fc4faf490536828097e490a172a776dc7b2c30f3b83f975595dfdc857f5b15f8c4988
7
+ data.tar.gz: 30308d4da1eb610ebba0d9fd67906b4615a2d701bed333a0afc4695b92d2c2a49f0a6819c61a58784c26e834e57ea496f6aaf214c314c274624bd553aec25c75
@@ -1,6 +1,6 @@
1
1
  spec = Gem::Specification.new do |s|
2
2
  s.name = 'cddl'
3
- s.version = '0.6.0'
3
+ s.version = '0.6.1'
4
4
  s.summary = "CDDL generator and validator."
5
5
  s.description = %{A parser, generator, and validator for CDDL}
6
6
  s.add_dependency('cbor-diag')
@@ -34,7 +34,7 @@ group = grpchoice S *("//" S grpchoice S)
34
34
  grpchoice = *grpent
35
35
 
36
36
  grpent = [occur S] [memberkey S] type optcom
37
- / [occur S] groupname [genericarg] optcom ; always preempted by previous...
37
+ / [occur S] groupname [genericarg] optcom ; preempted by previous
38
38
  / [occur S] "(" S group S ")" optcom
39
39
 
40
40
  memberkey = type1 S "=>"
@@ -236,9 +236,14 @@ module CDDL
236
236
  vr = where[4]
237
237
  if inmap
238
238
  unless kr
239
- if vr[0] == :grpent
239
+ case vr[0]
240
+ when :grpent
240
241
  fail "grpent in map #{vr.inspect}" unless vr.size == 2
241
- g = generate1(vr[1], true)
242
+ g = Array.new(st) { generate1(vr[1], true) }.flatten(1)
243
+ # warn "GGG #{g.inspect}"
244
+ return g
245
+ when :grpchoice
246
+ g = Array.new(st) { generate1(vr, true) }.flatten(1)
242
247
  # warn "GGG #{g.inspect}"
243
248
  return g
244
249
  else
@@ -448,10 +453,17 @@ module CDDL
448
453
  }
449
454
  when :member
450
455
  unless k
451
- fail "member name not known for group entry #{r} in map" unless v[0] == :grpent
456
+ case v[0]
457
+ when :grpent
458
+ entries = v[1..-1]
459
+ when :grpchoice
460
+ entries = [v]
461
+ else
462
+ fail "member name not known for group entry #{r} in map"
463
+ end
452
464
  d_check1 = d_check.dup
453
- # XXX this is ignoring occur = [s, _e]
454
- return map_check(d, d_check1, v[1..-1]) && d_check.replace(d_check1)
465
+ # XXX this is ignoring occur = [s, _e] FIXME!
466
+ return map_check(d, d_check1, entries) && d_check.replace(d_check1)
455
467
  end
456
468
  # this is mostly quadratic; let's do the linear thing if possible
457
469
  simple, simpleval = extract_value(k)
@@ -832,7 +844,7 @@ module CDDL
832
844
  end
833
845
  when :recurse_grpent # XXX we don't have the entry yet
834
846
  when :member
835
- fail "map entry without member key given: #{member}" unless member[3] || member[4][0] == :grpent # || member[4] == [:grpchoice]
847
+ fail "map entry without member key given: #{member}" unless member[3] || member[4][0] == :grpent || member[4][0] == :grpchoice
836
848
  else
837
849
  fail ["type1 member", member].inspect unless member[0] == :member
838
850
  end
@@ -1237,6 +1237,31 @@ HERE
1237
1237
  assert parser.validate({})
1238
1238
  end
1239
1239
 
1240
+ def test_aaa_validate_more_socket_in_star
1241
+ parser = CDDL::Parser.new <<HERE
1242
+ tcp-header = {seq: uint, ack: uint, * $$tcp-option}
1243
+
1244
+ ; later, in a different file
1245
+
1246
+ $$tcp-option //= (
1247
+ sack: [+(left: uint, right: uint)]
1248
+ )
1249
+
1250
+ ; and, maybe in another file
1251
+
1252
+ $$tcp-option //= (
1253
+ sack-permitted: true
1254
+ )
1255
+ HERE
1256
+ # puts "empty_group_sp AST:"
1257
+ # puts parser.ast_debug
1258
+ # puts "simple_type_augmented RULES:"
1259
+ # pp parser.rules
1260
+ g = parser.generate
1261
+ pp g
1262
+ assert parser.validate(g)
1263
+ end
1264
+
1240
1265
 
1241
1266
  def test_simple_type_augmented_uninitialized
1242
1267
  parser = CDDL::Parser.new <<HERE
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cddl
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.6.0
4
+ version: 0.6.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Carsten Bormann