this repo has no description
at master 118 lines 2.2 kB view raw
1-- in.cue -- 2import "encoding/yaml" 3 4#test: { 5 fn: _ 6 7 data1: "a: 2" 8 t1: [string]: data1 9 t1: ok1: fn({a!: int} | {b!: int}) // TODO: filter unsatisfied required fields. 10 t1: ok2: fn(close({a: int}) | close({b: int})) 11 12 #A: {a: int} 13 #B: {b: int} 14 t1: ok3: fn(#A | #B) 15 16 data2: "'foo'" 17 t2: [string]: data2 18 t2: ok1: fn(*int | string) 19 t2: ok2: fn(string) 20} 21 22validate: #test & { 23 fn: yaml.Validate 24 25 // TODO: fix this test: the second disjunct should be eliminated, so there 26 // should not be a concreteness error. 27 t1: _ 28} 29 30validatePartial: #test & { 31 fn: yaml.ValidatePartial 32} 33 34invalidDisjuntion: yaml.Validate("a: 3", {a: 1 | 2}) 35-- out/yaml -- 36Errors: 37validate.t1.ok1: invalid value "a: 2" (does not satisfy encoding/yaml.Validate): error in call to encoding/yaml.Validate: incomplete value {a:2} | {a:2,b!:int}: 38 ./in.cue:8:11 39 ./in.cue:6:9 40 ./in.cue:7:16 41invalidDisjuntion: error in call to encoding/yaml.Validate: 2 errors in empty disjunction:: 42 ./in.cue:33:20 43 44Result: 45import "encoding/yaml" 46 47#test: { 48 fn: _ 49 data1: "a: 2" 50 t1: { 51 ok1: data1 & fn({ 52 a!: int 53 } | { 54 b!: int 55 }) 56 ok2: data1 & fn(close({ 57 a: int 58 }) | close({ 59 b: int 60 })) 61 ok3: data1 & fn(#A | #B) 62 } 63 #A: { 64 a: int 65 } 66 #B: { 67 b: int 68 } 69 data2: "'foo'" 70 t2: { 71 ok1: data2 & fn(*int | string) 72 ok2: data2 & fn(string) 73 } 74} 75validate: { 76 fn: yaml.Validate 77 data1: "a: 2" 78 79 // TODO: fix this test: the second disjunct should be eliminated, so there 80 // should not be a concreteness error. 81 t1: { 82 ok1: _|_ // validate.t1.ok1: invalid value "a: 2" (does not satisfy encoding/yaml.Validate): validate.t1.ok1: error in call to encoding/yaml.Validate: validate.t1.ok1: incomplete value {a:2} | {a:2,b!:int} 83 ok2: "a: 2" 84 ok3: "a: 2" 85 } 86 #A: { 87 a: int 88 } 89 #B: { 90 b: int 91 } 92 data2: "'foo'" 93 t2: { 94 ok1: "'foo'" 95 ok2: "'foo'" 96 } 97} 98validatePartial: { 99 fn: yaml.ValidatePartial 100 data1: "a: 2" 101 t1: { 102 ok1: "a: 2" 103 ok2: "a: 2" 104 ok3: "a: 2" 105 } 106 #A: { 107 a: int 108 } 109 #B: { 110 b: int 111 } 112 data2: "'foo'" 113 t2: { 114 ok1: "'foo'" 115 ok2: "'foo'" 116 } 117} 118invalidDisjuntion: _|_ // invalidDisjuntion: error in call to encoding/yaml.Validate: invalidDisjuntion.a: 2 errors in empty disjunction: (and 2 more errors)