| package util |
| |
| import ( |
| "testing" |
| |
| "github.com/stretchr/testify/require" |
| "go.skia.org/infra/go/deepequal/assertdeep" |
| ) |
| |
| type myTestType struct { |
| A int |
| B string |
| } |
| |
| func TestJSONCodec(t *testing.T) { |
| itemCodec := NewJSONCodec(&myTestType{}) |
| testInstance := &myTestType{5, "hello"} |
| jsonBytes, err := itemCodec.Encode(testInstance) |
| require.NoError(t, err) |
| |
| decodedInstance, err := itemCodec.Decode(jsonBytes) |
| require.NoError(t, err) |
| require.IsType(t, &myTestType{}, decodedInstance) |
| require.Equal(t, testInstance, decodedInstance) |
| |
| arrCodec := NewJSONCodec([]*myTestType{}) |
| testArr := []*myTestType{{1, "1"}, {2, "2"}} |
| jsonBytes, err = arrCodec.Encode(testArr) |
| require.NoError(t, err) |
| |
| decodedArr, err := arrCodec.Decode(jsonBytes) |
| require.NoError(t, err) |
| require.IsType(t, []*myTestType{}, decodedArr) |
| require.Equal(t, testArr, decodedArr) |
| |
| mapCodec := NewJSONCodec(map[string]map[string]int{}) |
| testMap := map[string]map[string]int{"hello": {"world": 55}} |
| jsonBytes, err = mapCodec.Encode(testMap) |
| require.NoError(t, err) |
| found, err := mapCodec.Decode(jsonBytes) |
| require.NoError(t, err) |
| assertdeep.Equal(t, testMap, found) |
| } |