diff --git a/marshal_2_tinyint_test.go b/marshal_2_tinyint_test.go new file mode 100644 index 00000000..33d1ee07 --- /dev/null +++ b/marshal_2_tinyint_test.go @@ -0,0 +1,81 @@ +package gocql + +import ( + "math/big" + "testing" + + "github.com/gocql/gocql/marshal/tests/mod" + "github.com/gocql/gocql/marshal/tests/serialization" + "github.com/gocql/gocql/marshal/tinyint" +) + +func TestMarshalTinyint(t *testing.T) { + names := [2]string{ + "new", + "glob", + } + + for i, name := range names { + t.Run(name, func(t *testing.T) { + marshal := tinyint.Marshal + unmarshal := tinyint.Unmarshal + if i == 1 { + marshal = func(i interface{}) ([]byte, error) { return Marshal(NativeType{proto: 4, typ: TypeTinyInt}, i) } + unmarshal = func(bytes []byte, i interface{}) error { + return Unmarshal(NativeType{proto: 4, typ: TypeTinyInt}, bytes, i) + } + } + + serialization.Set{ + Data: nil, + Values: mod.Values{ + (*int8)(nil), (*int16)(nil), (*int32)(nil), (*int64)(nil), (*int)(nil), + (*uint8)(nil), (*uint16)(nil), (*uint32)(nil), (*uint64)(nil), (*uint)(nil), + (*string)(nil), (*big.Int)(nil), string(""), + }.AddVariants(mod.CustomType), + }.Run("[nil]nullable", t, marshal, unmarshal) + + serialization.Set{ + Data: nil, + Values: mod.Values{ + int8(0), int16(0), int32(0), int64(0), int(0), + uint8(0), uint16(0), uint32(0), uint64(0), uint(0), + "", big.Int{}, + }.AddVariants(mod.CustomType), + }.Run("[nil]unmarshal", t, nil, unmarshal) + + serialization.Set{ + Data: make([]byte, 0), + Values: mod.Values{ + int8(0), int16(0), int32(0), int64(0), int(0), + uint8(0), uint16(0), uint32(0), uint64(0), uint(0), + "0", *big.NewInt(0), + }.AddVariants(mod.All...), + }.Run("[]unmarshal", t, nil, unmarshal) + + serialization.Set{ + Data: []byte("\x00"), + Values: mod.Values{ + int8(0), int16(0), int32(0), int64(0), int(0), + uint8(0), uint16(0), uint32(0), uint64(0), uint(0), + "0", *big.NewInt(0), + }.AddVariants(mod.All...), + }.Run("zeros", t, marshal, unmarshal) + + serialization.Set{ + Data: []byte("\x7f"), + Values: mod.Values{int8(127), int16(127), int32(127), int64(127), int(127), "127", *big.NewInt(127)}.AddVariants(mod.All...), + }.Run("127", t, marshal, unmarshal) + + serialization.Set{ + Data: []byte("\x80"), + Values: mod.Values{int8(-128), int16(-128), int32(-128), int64(-128), int(-128), "-128", *big.NewInt(-128)}.AddVariants(mod.All...), + }.Run("-128", t, marshal, unmarshal) + + serialization.Set{ + Data: []byte("\xff"), + Values: mod.Values{uint8(255), uint16(255), uint32(255), uint64(255), uint(255)}.AddVariants(mod.All...), + }.Run("255", t, marshal, unmarshal) + }) + } +}