From 5818e29aea84279dbdcafebf8084819b35f00618 Mon Sep 17 00:00:00 2001 From: Amar Prakash Pandey Date: Tue, 24 May 2022 01:10:36 +0530 Subject: [PATCH 1/3] Add test for TOML parser Removed comments and print statement from test. --- parsers/hcl/hcl_test.go | 1 - parsers/toml/toml_test.go | 142 ++++++++++++++++++++++++++++++++++++++ parsers/yaml/yaml_test.go | 2 - 3 files changed, 142 insertions(+), 3 deletions(-) create mode 100644 parsers/toml/toml_test.go diff --git a/parsers/hcl/hcl_test.go b/parsers/hcl/hcl_test.go index f9028b3..8d76307 100644 --- a/parsers/hcl/hcl_test.go +++ b/parsers/hcl/hcl_test.go @@ -108,7 +108,6 @@ func TestHCL_Unmarshal(t *testing.T) { func TestHCL_Marshal(t *testing.T) { hclParserWithFlatten := Parser(true) - // hclParserWithoutFlatten := Parser(false) testCases := []struct { name string diff --git a/parsers/toml/toml_test.go b/parsers/toml/toml_test.go new file mode 100644 index 0000000..0b3dc05 --- /dev/null +++ b/parsers/toml/toml_test.go @@ -0,0 +1,142 @@ +package toml + +import ( + "testing" + + "github.com/stretchr/testify/assert" +) + +func TestTOML_Unmarshal(t *testing.T) { + + testCases := []struct { + name string + input []byte + keys []string + values []interface{} + isErr bool + }{ + { + name: "Empty TOML", + input: []byte(``), + }, + { + name: "Valid TOML", + input: []byte(`key = "val" + name = "test" + number = 2 + `), + keys: []string{"key", "name", "number"}, + values: []interface{}{"val", "test", int64(2)}, + }, + { + name: "Invalid TOML - missing end quotes", + input: []byte(`key = "val`), + isErr: true, + }, + { + name: "Complex TOML - All types", + input: []byte(`array = [ 1, 2, 3 ] + boolean = true + color = "gold" + number = 123 + string = "Hello World" + + [object] + a = "b" + c = "d"`), + keys: []string{"array", "boolean", "color", "null", "number", "object", "string"}, + values: []interface{}{[]interface{}{int64(1), int64(2), int64(3)}, + true, + "gold", + nil, + int64(123), + map[string]interface{}{"a": "b", "c": "d"}, + "Hello World"}, + }, + { + name: "Invalid TOML - missing equal", + input: []byte(`key "val"`), + isErr: true, + }, + } + + tp := Parser() + + for _, tc := range testCases { + t.Run(tc.name, func(t *testing.T) { + out, err := tp.Unmarshal(tc.input) + if tc.isErr { + assert.NotNil(t, err) + } else { + assert.Nil(t, err) + for i, k := range tc.keys { + v := out[k] + assert.Equal(t, tc.values[i], v) + } + } + }) + } +} + +func TestTOML_Marshal(t *testing.T) { + + testCases := []struct { + name string + input map[string]interface{} + output []byte + isErr bool + }{ + { + name: "Empty TOML", + input: map[string]interface{}{}, + output: []byte(nil), + }, + { + name: "Valid TOML", + input: map[string]interface{}{ + "key": "val", + "name": "test", + "number": 2.0, + }, + output: []byte(`key = "val" +name = "test" +number = 2.0 +`), + }, + { + name: "Complex TOML - All types", + input: map[string]interface{}{ + "array": []interface{}{1, 2, 3, 4, 5}, + "boolean": true, + "color": "gold", + "number": 123, + "object": map[string]interface{}{"a": "b", "c": "d"}, + "string": "Hello World", + }, + output: []byte(`array = [1,2,3,4,5] +boolean = true +color = "gold" +number = 123 +string = "Hello World" + +[object] + a = "b" + c = "d" +`), + }, + } + + tp := Parser() + + for _, tc := range testCases { + t.Run(tc.name, func(t *testing.T) { + out, err := tp.Marshal(tc.input) + if tc.isErr { + assert.NotNil(t, err) + } else { + assert.Nil(t, err) + assert.Equal(t, tc.output, out) + } + }) + } +} diff --git a/parsers/yaml/yaml_test.go b/parsers/yaml/yaml_test.go index 5049dd1..6d6e0bd 100644 --- a/parsers/yaml/yaml_test.go +++ b/parsers/yaml/yaml_test.go @@ -1,7 +1,6 @@ package yaml import ( - "fmt" "testing" "github.com/stretchr/testify/assert" @@ -83,7 +82,6 @@ key: #Here is a single-line comment assert.Nil(t, err) for i, k := range tc.keys { v := out[k] - fmt.Println(out[k]) assert.Equal(t, tc.values[i], v) } } From cae9ff46d574dfe00ffbd9cab53602d38549a718 Mon Sep 17 00:00:00 2001 From: Amar Prakash Pandey Date: Thu, 26 May 2022 11:07:02 +0530 Subject: [PATCH 2/3] Fix: extra new line at function start --- parsers/toml/toml_test.go | 2 -- 1 file changed, 2 deletions(-) diff --git a/parsers/toml/toml_test.go b/parsers/toml/toml_test.go index 0b3dc05..92df269 100644 --- a/parsers/toml/toml_test.go +++ b/parsers/toml/toml_test.go @@ -7,7 +7,6 @@ import ( ) func TestTOML_Unmarshal(t *testing.T) { - testCases := []struct { name string input []byte @@ -79,7 +78,6 @@ func TestTOML_Unmarshal(t *testing.T) { } func TestTOML_Marshal(t *testing.T) { - testCases := []struct { name string input map[string]interface{} From 113aa2b9f9605c80af9e108f990ead0699fbd480 Mon Sep 17 00:00:00 2001 From: Amar Prakash Pandey Date: Thu, 26 May 2022 11:34:29 +0530 Subject: [PATCH 3/3] Fix: change marshal test struct from key value to map --- parsers/toml/toml_test.go | 37 ++++++++++++++++++------------------- 1 file changed, 18 insertions(+), 19 deletions(-) diff --git a/parsers/toml/toml_test.go b/parsers/toml/toml_test.go index 92df269..719b01d 100644 --- a/parsers/toml/toml_test.go +++ b/parsers/toml/toml_test.go @@ -10,13 +10,13 @@ func TestTOML_Unmarshal(t *testing.T) { testCases := []struct { name string input []byte - keys []string - values []interface{} + output map[string]interface{} isErr bool }{ { - name: "Empty TOML", - input: []byte(``), + name: "Empty TOML", + input: []byte(``), + output: map[string]interface{}{}, }, { name: "Valid TOML", @@ -24,8 +24,11 @@ func TestTOML_Unmarshal(t *testing.T) { name = "test" number = 2 `), - keys: []string{"key", "name", "number"}, - values: []interface{}{"val", "test", int64(2)}, + output: map[string]interface{}{ + "key": "val", + "name": "test", + "number": int64(2), + }, }, { name: "Invalid TOML - missing end quotes", @@ -39,18 +42,17 @@ func TestTOML_Unmarshal(t *testing.T) { color = "gold" number = 123 string = "Hello World" - [object] a = "b" c = "d"`), - keys: []string{"array", "boolean", "color", "null", "number", "object", "string"}, - values: []interface{}{[]interface{}{int64(1), int64(2), int64(3)}, - true, - "gold", - nil, - int64(123), - map[string]interface{}{"a": "b", "c": "d"}, - "Hello World"}, + output: map[string]interface{}{ + "array": []interface{}{int64(1), int64(2), int64(3)}, + "boolean": true, + "color": "gold", + "number": int64(123), + "object": map[string]interface{}{"a": "b", "c": "d"}, + "string": "Hello World", + }, }, { name: "Invalid TOML - missing equal", @@ -68,10 +70,7 @@ func TestTOML_Unmarshal(t *testing.T) { assert.NotNil(t, err) } else { assert.Nil(t, err) - for i, k := range tc.keys { - v := out[k] - assert.Equal(t, tc.values[i], v) - } + assert.Equal(t, tc.output, out) } }) }