// Copyright (C) 2023 Luke Shumaker // // SPDX-License-Identifier: GPL-2.0-or-later package json import ( "bytes" "testing" "github.com/stretchr/testify/assert" ) func TestCompatValid(t *testing.T) { t.Parallel() type testcase struct { In string Exp bool } testcases := map[string]testcase{ "empty": {In: ``, Exp: false}, "num": {In: `1`, Exp: true}, "trunc": {In: `{`, Exp: false}, "object": {In: `{}`, Exp: true}, } for tcName, tc := range testcases { tc := tc t.Run(tcName, func(t *testing.T) { t.Parallel() t.Logf("in=%q", tc.In) act := Valid([]byte(tc.In)) assert.Equal(t, tc.Exp, act) }) } } func TestCompatCompact(t *testing.T) { t.Parallel() type testcase struct { In string Out string Err string } testcases := map[string]testcase{ "trunc": {In: `{`, Out: ``, Err: `unexpected end of JSON input`}, "object": {In: `{}`, Out: `{}`}, } for tcName, tc := range testcases { tc := tc t.Run(tcName, func(t *testing.T) { t.Parallel() t.Logf("in=%q", tc.In) var out bytes.Buffer err := Compact(&out, []byte(tc.In)) assert.Equal(t, tc.Out, out.String()) if tc.Err == "" { assert.NoError(t, err) } else { assert.EqualError(t, err, tc.Err) } }) } } func TestCompatIndent(t *testing.T) { t.Parallel() type testcase struct { In string Out string Err string } testcases := map[string]testcase{ "trunc": {In: `{`, Out: ``, Err: `unexpected end of JSON input`}, "object": {In: `{}`, Out: `{}`}, } for tcName, tc := range testcases { tc := tc t.Run(tcName, func(t *testing.T) { t.Parallel() t.Logf("in=%q", tc.In) var out bytes.Buffer err := Indent(&out, []byte(tc.In), ">", ".") assert.Equal(t, tc.Out, out.String()) if tc.Err == "" { assert.NoError(t, err) } else { assert.EqualError(t, err, tc.Err) } }) } }