summaryrefslogtreecommitdiff
path: root/data/data_test.go
diff options
context:
space:
mode:
Diffstat (limited to 'data/data_test.go')
-rw-r--r--data/data_test.go117
1 files changed, 117 insertions, 0 deletions
diff --git a/data/data_test.go b/data/data_test.go
index 2ea6365e..324a3600 100644
--- a/data/data_test.go
+++ b/data/data_test.go
@@ -660,3 +660,120 @@ func TestStringifyYAMLMapMapKeys(t *testing.T) {
assert.EqualValues(t, c.want, c.input)
}
}
+
+func TestCUE(t *testing.T) {
+ in := `package foo
+import "regexp"
+matches: regexp.FindSubmatch(#"^([^:]*):(\d+)$"#, "localhost:443")
+one: 1
+two: 2
+// A field using quotes.
+"two-and-a-half": 2.5
+list: [ 1, 2, 3 ]
+`
+
+ expected := map[string]interface{}{
+ "matches": []interface{}{
+ "localhost:443",
+ "localhost",
+ "443",
+ },
+ "one": 1,
+ "two": 2,
+ "two-and-a-half": 2.5,
+ "list": []interface{}{1, 2, 3},
+ }
+
+ out, err := CUE(in)
+ require.NoError(t, err)
+ assert.EqualValues(t, expected, out)
+
+ out, err = CUE(`[1,2,3]`)
+ require.NoError(t, err)
+ assert.EqualValues(t, []interface{}{1, 2, 3}, out)
+
+ out, err = CUE(`"hello world"`)
+ require.NoError(t, err)
+ assert.EqualValues(t, "hello world", out)
+
+ out, err = CUE(`true`)
+ require.NoError(t, err)
+ assert.EqualValues(t, true, out)
+
+ out, err = CUE(`'\x00\x01\x02\x03\x04'`)
+ require.NoError(t, err)
+ assert.EqualValues(t, []byte{0, 1, 2, 3, 4}, out)
+
+ out, err = CUE(`42`)
+ require.NoError(t, err)
+ assert.EqualValues(t, 42, out)
+
+ out, err = CUE(`42.0`)
+ require.NoError(t, err)
+ assert.EqualValues(t, 42.0, out)
+
+ out, err = CUE(`null`)
+ require.NoError(t, err)
+ assert.EqualValues(t, nil, out)
+
+ _, err = CUE(`>=0 & <=7 & >=3 & <=10`)
+ require.Error(t, err)
+}
+
+func TestToCUE(t *testing.T) {
+ in := map[string]interface{}{
+ "matches": []interface{}{
+ "localhost:443",
+ "localhost",
+ "443",
+ },
+ "one": 1,
+ "two": 2,
+ "two-and-a-half": 2.5,
+ "list": []interface{}{1, 2, 3},
+ }
+
+ expected := `{
+ "two-and-a-half": 2.5
+ list: [1, 2, 3]
+ two: 2
+ one: 1
+ matches: ["localhost:443", "localhost", "443"]
+}`
+
+ out, err := ToCUE(in)
+ require.NoError(t, err)
+ assert.EqualValues(t, expected, out)
+
+ out, err = ToCUE([]interface{}{1, 2, 3})
+ require.NoError(t, err)
+ assert.EqualValues(t, `[1, 2, 3]`, out)
+
+ out, err = ToCUE("hello world")
+ require.NoError(t, err)
+ assert.EqualValues(t, `"hello world"`, out)
+
+ out, err = ToCUE(true)
+ require.NoError(t, err)
+ assert.EqualValues(t, `true`, out)
+
+ out, err = ToCUE([]byte{0, 1, 2, 3, 4})
+ require.NoError(t, err)
+ assert.EqualValues(t, `'\x00\x01\x02\x03\x04'`, out)
+
+ out, err = ToCUE(42)
+ require.NoError(t, err)
+ assert.EqualValues(t, `42`, out)
+
+ out, err = ToCUE(42.0)
+ require.NoError(t, err)
+ assert.EqualValues(t, `42.0`, out)
+
+ out, err = ToCUE(nil)
+ require.NoError(t, err)
+ assert.EqualValues(t, `null`, out)
+
+ out, err = ToCUE(struct{}{})
+ require.NoError(t, err)
+ assert.EqualValues(t, `{}`, out)
+}