| package xjson
|
|
|
| import (
|
| "encoding/json"
|
| "testing"
|
|
|
| "github.com/stretchr/testify/require"
|
| )
|
|
|
| func TestSafeJSONRawMessage_Empty(t *testing.T) {
|
| got := SafeJSONRawMessage("")
|
| require.Equal(t, json.RawMessage("{}"), got)
|
| }
|
|
|
| func TestSafeJSONRawMessage_ValidPassThrough(t *testing.T) {
|
| in := `{"a":1,"b":"x"}`
|
| got := SafeJSONRawMessage(in)
|
| require.True(t, json.Valid(got))
|
|
|
| require.Equal(t, json.RawMessage(in), got)
|
| }
|
|
|
| func TestSafeJSONRawMessage_Repairable(t *testing.T) {
|
|
|
| in := "{a:1,'b':'x',}"
|
| got := SafeJSONRawMessage(in)
|
|
|
| require.True(t, json.Valid(got))
|
|
|
| var m map[string]any
|
| require.NoError(t, json.Unmarshal(got, &m))
|
| require.Equal(t, float64(1), m["a"])
|
| require.Equal(t, "x", m["b"])
|
| }
|
|
|
| func TestSafeJSONRawMessage_Unrepairable(t *testing.T) {
|
| in := "@@@ not json @@@"
|
| got := SafeJSONRawMessage(in)
|
|
|
| require.True(t, json.Valid(got))
|
|
|
| var s string
|
| require.NoError(t, json.Unmarshal(got, &s))
|
| require.Equal(t, in, s)
|
| }
|
|
|