github.com/RevenueMonster/sqlike@v1.0.6/jsonb/string_test.go (about) 1 package jsonb 2 3 import ( 4 "testing" 5 6 "github.com/stretchr/testify/assert" 7 "github.com/stretchr/testify/require" 8 ) 9 10 func TestReadEscapeString(t *testing.T) { 11 12 } 13 14 func TestReadRawString(t *testing.T) { 15 t.Run("ReadRawString with invalid null", func(t *testing.T) { 16 r := NewReader([]byte(`nan`)) 17 str, err := r.ReadRawString() 18 require.Error(t, err) 19 require.Empty(t, str) 20 }) 21 22 t.Run("ReadRawString with null", func(t *testing.T) { 23 r := NewReader([]byte(`null`)) 24 str, err := r.ReadRawString() 25 require.NoError(t, err) 26 require.Equal(t, `null`, str) 27 }) 28 29 t.Run("ReadRawString", func(t *testing.T) { 30 r := NewReader([]byte(`"Hello World !"`)) 31 str, err := r.ReadRawString() 32 require.NoError(t, err) 33 require.Equal(t, `Hello World !`, str) 34 }) 35 36 t.Run("ReadRawString with unquoted string", func(t *testing.T) { 37 r := NewReader([]byte(`"12344`)) 38 str, err := r.ReadRawString() 39 require.Error(t, err) 40 require.Empty(t, str) 41 }) 42 } 43 44 func TestReadString(t *testing.T) { 45 46 t.Run("escapeString", func(t *testing.T) { 47 str := `test \"asdasjkd 48 lkasd128378127#$%^&*()_)(*&^%$#@#~!@#$%` 49 blr := NewWriter() 50 escapeString(blr, str) 51 assert.Equal(t, `test\t\t\\\"asdasjkd\n\tlkasd128378127#$%^&*()_)(*&^%$#@#~!@#$%`, blr.String(), "unexpected result") 52 }) 53 t.Run("ReadString with escape string", func(t *testing.T) { 54 r := NewReader([]byte(`"1234\"4abc\"de\nfg"`)) 55 str, err := r.ReadString() 56 require.NoError(t, err) 57 require.Equal(t, "1234\"4abc\"de\nfg", str) 58 }) 59 60 t.Run("ReadString with unquoted string", func(t *testing.T) { 61 r := NewReader([]byte(`"12344`)) 62 str, err := r.ReadString() 63 require.Error(t, err) 64 require.Empty(t, str) 65 }) 66 67 t.Run("ReadString with null", func(t *testing.T) { 68 r := NewReader([]byte(`null`)) 69 str, err := r.ReadString() 70 require.NoError(t, err) 71 require.Empty(t, str) 72 }) 73 74 t.Run("ReadString with errors", func(t *testing.T) { 75 r := NewReader([]byte(`ss""`)) 76 str, err := r.ReadString() 77 require.Error(t, err) 78 require.Empty(t, str) 79 }) 80 }