MCPcopy Create free account
hub / github.com/brimdata/super / TestValueValidate

Function TestValueValidate

value_test.go:29–85  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

27}
28
29func TestValueValidate(t *testing.T) {
30 recType := super.NewTypeRecord(0, []super.Field{
31 super.NewField("f", super.NewTypeSet(0, super.TypeString)),
32 })
33 t.Run("set/error/duplicate-element", func(t *testing.T) {
34 var b scode.Builder
35 b.BeginContainer()
36 b.Append([]byte("dup"))
37 b.Append([]byte("dup"))
38 // Don't normalize.
39 b.EndContainer()
40 val := super.NewValue(recType, b.Bytes())
41 assert.EqualError(t, val.Validate(), "invalid BSUP: duplicate set element")
42 })
43 t.Run("set/error/unsorted-elements", func(t *testing.T) {
44 var b scode.Builder
45 b.BeginContainer()
46 b.Append([]byte("a"))
47 b.Append([]byte("z"))
48 b.Append([]byte("b"))
49 // Don't normalize.
50 b.EndContainer()
51 val := super.NewValue(recType, b.Bytes())
52 assert.EqualError(t, val.Validate(), "invalid BSUP: set elements not sorted")
53 })
54 t.Run("set/primitive-elements", func(t *testing.T) {
55 var b scode.Builder
56 b.BeginContainer()
57 b.Append([]byte("dup"))
58 b.Append([]byte("dup"))
59 b.Append([]byte("z"))
60 b.Append([]byte("a"))
61 b.TransformContainer(super.NormalizeSet)
62 b.EndContainer()
63 val := super.NewValue(recType, b.Bytes())
64 assert.NoError(t, val.Validate())
65 })
66 t.Run("set/complex-elements", func(t *testing.T) {
67 var b scode.Builder
68 b.BeginContainer()
69 for _, s := range []string{"dup", "dup", "z", "a"} {
70 b.BeginContainer()
71 b.Append([]byte(s))
72 b.EndContainer()
73 }
74 b.TransformContainer(super.NormalizeSet)
75 b.EndContainer()
76 r := super.NewValue(
77 super.NewTypeRecord(0, []super.Field{
78 super.NewField("f", super.NewTypeSet(0, super.NewTypeRecord(0, []super.Field{
79 super.NewField("g", super.TypeString),
80 }))),
81 }),
82 b.Bytes())
83 assert.NoError(t, r.Validate())
84 })
85}

Callers

nothing calls this directly

Calls 11

BeginContainerMethod · 0.95
AppendMethod · 0.95
EndContainerMethod · 0.95
BytesMethod · 0.95
ValidateMethod · 0.95
TransformContainerMethod · 0.95
NewTypeRecordFunction · 0.92
NewFieldFunction · 0.92
NewTypeSetFunction · 0.92
NewValueFunction · 0.92
RunMethod · 0.65

Tested by

no test coverage detected