You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
119 lines
3.1 KiB
Go
119 lines
3.1 KiB
Go
2 years ago
|
package encoding
|
||
|
|
||
|
import (
|
||
|
"testing"
|
||
|
|
||
|
"github.com/stretchr/testify/assert"
|
||
|
)
|
||
|
|
||
|
func TestTomlToJson(t *testing.T) {
|
||
|
tests := []struct {
|
||
|
input string
|
||
|
expect string
|
||
|
}{
|
||
|
{
|
||
|
input: "a = \"foo\"\nb = 1\nc = \"${FOO}\"\nd = \"abcd!@#$112\"",
|
||
|
expect: "{\"a\":\"foo\",\"b\":1,\"c\":\"${FOO}\",\"d\":\"abcd!@#$112\"}\n",
|
||
|
},
|
||
|
{
|
||
|
input: "a = \"foo\"\nb = 1\nc = \"${FOO}\"\nd = \"abcd!@#$112\"",
|
||
|
expect: "{\"a\":\"foo\",\"b\":1,\"c\":\"${FOO}\",\"d\":\"abcd!@#$112\"}\n",
|
||
|
},
|
||
|
{
|
||
|
input: "a = \"foo\"\nb = 1\nc = \"${FOO}\"\nd = \"abcd!@#$112\"",
|
||
|
expect: "{\"a\":\"foo\",\"b\":1,\"c\":\"${FOO}\",\"d\":\"abcd!@#$112\"}\n",
|
||
|
},
|
||
|
{
|
||
|
input: "a = \"foo\"\nb = 1\nc = \"${FOO}\"\nd = \"abcd!@#$112\"",
|
||
|
expect: "{\"a\":\"foo\",\"b\":1,\"c\":\"${FOO}\",\"d\":\"abcd!@#$112\"}\n",
|
||
|
},
|
||
|
{
|
||
|
input: "a = \"foo\"\nb = 1\nc = \"${FOO}\"\nd = \"abcd!@#$112\"",
|
||
|
expect: "{\"a\":\"foo\",\"b\":1,\"c\":\"${FOO}\",\"d\":\"abcd!@#$112\"}\n",
|
||
|
},
|
||
|
{
|
||
|
input: "a = \"foo\"\nb = 1\nc = \"${FOO}\"\nd = \"abcd!@#$112\"\n",
|
||
|
expect: "{\"a\":\"foo\",\"b\":1,\"c\":\"${FOO}\",\"d\":\"abcd!@#$112\"}\n",
|
||
|
},
|
||
|
{
|
||
|
input: "a = \"foo\"\nb = 1\nc = \"${FOO}\"\nd = \"abcd!@#$112\"\n",
|
||
|
expect: "{\"a\":\"foo\",\"b\":1,\"c\":\"${FOO}\",\"d\":\"abcd!@#$112\"}\n",
|
||
|
},
|
||
|
}
|
||
|
|
||
|
for _, test := range tests {
|
||
|
test := test
|
||
|
t.Run(test.input, func(t *testing.T) {
|
||
|
t.Parallel()
|
||
|
got, err := TomlToJson([]byte(test.input))
|
||
|
assert.NoError(t, err)
|
||
|
assert.Equal(t, test.expect, string(got))
|
||
|
})
|
||
|
}
|
||
|
}
|
||
|
|
||
|
func TestTomlToJsonError(t *testing.T) {
|
||
|
_, err := TomlToJson([]byte("foo"))
|
||
|
assert.Error(t, err)
|
||
|
}
|
||
|
|
||
|
func TestYamlToJson(t *testing.T) {
|
||
|
tests := []struct {
|
||
|
input string
|
||
|
expect string
|
||
|
}{
|
||
|
{
|
||
|
input: "a: foo\nb: 1\nc: ${FOO}\nd: abcd!@#$112",
|
||
|
expect: "{\"a\":\"foo\",\"b\":1,\"c\":\"${FOO}\",\"d\":\"abcd!@#$112\"}\n",
|
||
|
},
|
||
|
{
|
||
|
input: "a: foo\nb: 1\nc: ${FOO}\nd: abcd!@#$112",
|
||
|
expect: "{\"a\":\"foo\",\"b\":1,\"c\":\"${FOO}\",\"d\":\"abcd!@#$112\"}\n",
|
||
|
},
|
||
|
{
|
||
|
input: "a: foo\nb: 1\nc: ${FOO}\nd: abcd!@#$112",
|
||
|
expect: "{\"a\":\"foo\",\"b\":1,\"c\":\"${FOO}\",\"d\":\"abcd!@#$112\"}\n",
|
||
|
},
|
||
|
{
|
||
|
input: "a: foo\nb: 1\nc: ${FOO}\nd: abcd!@#$112",
|
||
|
expect: "{\"a\":\"foo\",\"b\":1,\"c\":\"${FOO}\",\"d\":\"abcd!@#$112\"}\n",
|
||
|
},
|
||
|
{
|
||
|
input: "a: foo\nb: 1\nc: ${FOO}\nd: abcd!@#$112",
|
||
|
expect: "{\"a\":\"foo\",\"b\":1,\"c\":\"${FOO}\",\"d\":\"abcd!@#$112\"}\n",
|
||
|
},
|
||
|
{
|
||
|
input: "a: foo\nb: 1\nc: ${FOO}\nd: abcd!@#$112\n",
|
||
|
expect: "{\"a\":\"foo\",\"b\":1,\"c\":\"${FOO}\",\"d\":\"abcd!@#$112\"}\n",
|
||
|
},
|
||
|
{
|
||
|
input: "a: foo\nb: 1\nc: ${FOO}\nd: abcd!@#$112\n",
|
||
|
expect: "{\"a\":\"foo\",\"b\":1,\"c\":\"${FOO}\",\"d\":\"abcd!@#$112\"}\n",
|
||
|
},
|
||
|
}
|
||
|
|
||
|
for _, test := range tests {
|
||
|
test := test
|
||
|
t.Run(test.input, func(t *testing.T) {
|
||
|
t.Parallel()
|
||
|
got, err := YamlToJson([]byte(test.input))
|
||
|
assert.NoError(t, err)
|
||
|
assert.Equal(t, test.expect, string(got))
|
||
|
})
|
||
|
}
|
||
|
}
|
||
|
|
||
|
func TestYamlToJsonError(t *testing.T) {
|
||
|
_, err := YamlToJson([]byte("':foo"))
|
||
|
assert.Error(t, err)
|
||
|
}
|
||
|
|
||
|
func TestYamlToJsonSlice(t *testing.T) {
|
||
|
b, err := YamlToJson([]byte(`foo:
|
||
|
- bar
|
||
|
- baz`))
|
||
|
assert.NoError(t, err)
|
||
|
assert.Equal(t, `{"foo":["bar","baz"]}
|
||
|
`, string(b))
|
||
|
}
|