github.com/go-board/x-go@v0.1.2-0.20220610024734-db1323f6cb15/xcodec/codec_test.go (about)

     1  package xcodec_test
     2  
     3  //
     4  //import (
     5  //	"encoding/gob"
     6  //	"testing"
     7  //
     8  //	"github.com/stretchr/testify/require"
     9  //
    10  //
    11  //	"github.com/go-board/x-go/xcodec"
    12  //	"github.com/go-board/x-go/xcodec/xgob"
    13  //	"github.com/go-board/x-go/xcodec/xjson"
    14  //)
    15  //
    16  //type testStruct struct {
    17  //	A int
    18  //	B string
    19  //}
    20  //
    21  //func init() {
    22  //	gob.Register(&testStruct{})
    23  //}
    24  //
    25  //func TestCodec(t *testing.T) {
    26  //	t.Run("gob", func(t *testing.T) {
    27  //		codec := xcodec.Get(xgob.Name)
    28  //		testCodec(t, codec)
    29  //	})
    30  //	t.Run("json", func(t *testing.T) {
    31  //		codec := xcodec.Get(xjson.Name)
    32  //		testCodec(t, codec)
    33  //	})
    34  //	t.Run("proto", func(t *testing.T) {
    35  //		codec := xcodec.Get(xproto.Name)
    36  //		bytes, err := codec.Marshal(&internal.Test{
    37  //			A: "hello",
    38  //			B: true,
    39  //			C: 3,
    40  //		})
    41  //		require.Nil(t, err, "err must be nil")
    42  //		x := new(internal.Test)
    43  //		err = codec.Unmarshal(bytes, x)
    44  //		require.Nil(t, err, "err must be nil")
    45  //		require.Equal(t, "hello", x.A, "x.A must be string(hello)")
    46  //		require.Equal(t, true, x.B, "x.B must be bool(false)")
    47  //		require.Equal(t, int64(3), x.C, "x.C must be integer(3)")
    48  //	})
    49  //	t.Run("toml", func(t *testing.T) {
    50  //		codec := xcodec.Get(xtoml.Name)
    51  //		testCodec(t, codec)
    52  //	})
    53  //	t.Run("yaml", func(t *testing.T) {
    54  //		codec := xcodec.Get(xyaml.Name)
    55  //		testCodec(t, codec)
    56  //	})
    57  //}
    58  //
    59  //func testCodec(t *testing.T, codec xcodec.Codec) {
    60  //	bytes, err := codec.Marshal(&testStruct{A: 1, B: "hello"})
    61  //	require.Nil(t, err, "err must be nil")
    62  //	x := new(testStruct)
    63  //	err = codec.Unmarshal(bytes, x)
    64  //	require.Nil(t, err, "err must be nil")
    65  //	require.Equal(t, 1, x.A, "x.A must be integer(1)")
    66  //	require.Equal(t, "hello", x.B, "x.B must be string(hello)")
    67  //}