github.com/zerosnake0/jzon@v0.0.9-0.20230801092939-1b135cb83f7f/val_encoder_native_base64_test.go (about) 1 package jzon 2 3 import ( 4 "testing" 5 ) 6 7 // byte 8 type testMarshalByte byte 9 10 func (tb testMarshalByte) MarshalJSON() ([]byte, error) { 11 return []byte{'"', '1', byte(tb), '"'}, nil 12 } 13 14 type testMarshalByte2 byte 15 16 func (tb *testMarshalByte2) MarshalJSON() ([]byte, error) { 17 return []byte{'"', '2', byte(*tb), '"'}, nil 18 } 19 20 type testMarshalByte3 byte 21 22 func (tb testMarshalByte3) MarshalText() ([]byte, error) { 23 return []byte{'"', '3', byte(tb), '"'}, nil 24 } 25 26 type testMarshalByte4 byte 27 28 func (tb *testMarshalByte4) MarshalText() ([]byte, error) { 29 return []byte{'"', '4', byte(*tb), '"'}, nil 30 } 31 32 func TestValEncoder_Native_Base64(t *testing.T) { 33 t.Run("nil byte", func(t *testing.T) { 34 checkEncodeValueWithStandard(t, []byte(nil), nil) 35 }) 36 t.Run("empty byte", func(t *testing.T) { 37 checkEncodeValueWithStandard(t, []byte{}, nil) 38 }) 39 t.Run("type alias", func(t *testing.T) { 40 type B byte 41 checkEncodeValueWithStandard(t, []B("test"), nil) 42 }) 43 t.Run("json marshaler", func(t *testing.T) { 44 t.Run("value", func(t *testing.T) { 45 checkEncodeValueWithStandard(t, []testMarshalByte("test"), nil) 46 }) 47 t.Run("pointer", func(t *testing.T) { 48 checkEncodeValueWithStandard(t, []testMarshalByte2("test"), nil) 49 }) 50 }) 51 t.Run("text marshaler", func(t *testing.T) { 52 t.Run("value", func(t *testing.T) { 53 checkEncodeValueWithStandard(t, []testMarshalByte3("test"), nil) 54 }) 55 t.Run("pointer", func(t *testing.T) { 56 checkEncodeValueWithStandard(t, []testMarshalByte4("test"), nil) 57 }) 58 }) 59 } 60 61 func TestValEncoder_Native_Base64_OmitEmpty(t *testing.T) { 62 type st struct { 63 A []byte `json:",omitempty"` 64 } 65 t.Run("nil", func(t *testing.T) { 66 checkEncodeValueWithStandard(t, st{}, nil) 67 }) 68 t.Run("empty", func(t *testing.T) { 69 checkEncodeValueWithStandard(t, st{ 70 A: []byte{}, 71 }, nil) 72 }) 73 t.Run("non empty", func(t *testing.T) { 74 checkEncodeValueWithStandard(t, st{ 75 A: []byte("test"), 76 }, nil) 77 }) 78 }