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  }