// Copyright (C) 2022-2023 Luke Shumaker // // SPDX-License-Identifier: GPL-2.0-or-later package lowmemjson import ( "strings" "testing" "github.com/stretchr/testify/assert" ) func TestReEncode(t *testing.T) { t.Parallel() type testcase struct { enc ReEncoderConfig in any exp string } testcases := map[string]testcase{ "basic": { enc: ReEncoderConfig{ Indent: "\t", CompactIfUnder: 10, }, in: map[string][]string{ "a": {"b", "c"}, "d": {"eeeeeeeeeeeeeee"}, }, exp: `{ "a": ["b","c"], "d": [ "eeeeeeeeeeeeeee" ] }`, }, "arrays1": { enc: ReEncoderConfig{ Indent: "\t", CompactIfUnder: 10, ForceTrailingNewlines: true, }, in: []any{ map[string]any{ "generation": 123456, }, map[string]any{ "a": 1, }, map[string]any{ "generation": 7891011213, }, }, exp: `[ { "generation": 123456 }, {"a":1}, { "generation": 7891011213 } ] `, }, "arrays2": { enc: ReEncoderConfig{ Indent: "\t", CompactIfUnder: 10, ForceTrailingNewlines: true, }, in: []any{ map[string]any{ "a": 1, }, map[string]any{ "generation": 123456, }, map[string]any{ "generation": 7891011213, }, }, exp: `[ {"a":1}, { "generation": 123456 }, { "generation": 7891011213 } ] `, }, "arrays3": { enc: ReEncoderConfig{ Indent: "\t", ForceTrailingNewlines: true, }, in: []any{ map[string]any{ "a": 1, }, map[string]any{ "generation": 123456, }, map[string]any{ "generation": 7891011213, }, }, exp: `[ { "a": 1 }, { "generation": 123456 }, { "generation": 7891011213 } ] `, }, } for tcName, tc := range testcases { tc := tc t.Run(tcName, func(t *testing.T) { t.Parallel() var out strings.Builder enc := NewEncoder(NewReEncoder(&out, tc.enc)) assert.NoError(t, enc.Encode(tc.in)) assert.Equal(t, tc.exp, out.String()) }) } }