github.com/99designs/gqlgen@v0.17.45/graphql/uint_test.go (about) 1 package graphql 2 3 import ( 4 "encoding/json" 5 "math" 6 "testing" 7 8 "github.com/stretchr/testify/assert" 9 ) 10 11 func TestUint(t *testing.T) { 12 t.Run("marshal", func(t *testing.T) { 13 assert.Equal(t, "123", m2s(MarshalUint(123))) 14 }) 15 16 t.Run("unmarshal", func(t *testing.T) { 17 assert.Equal(t, uint(123), mustUnmarshalUint(123)) 18 assert.Equal(t, uint(123), mustUnmarshalUint(int64(123))) 19 assert.Equal(t, uint(123), mustUnmarshalUint(json.Number("123"))) 20 assert.Equal(t, uint(123), mustUnmarshalUint("123")) 21 }) 22 23 t.Run("can't unmarshal negative numbers", func(t *testing.T) { 24 _, err := UnmarshalUint(-123) 25 assert.EqualError(t, err, "cannot convert negative numbers to uint") 26 }) 27 } 28 29 func mustUnmarshalUint(v interface{}) uint { 30 res, err := UnmarshalUint(v) 31 if err != nil { 32 panic(err) 33 } 34 return res 35 } 36 37 func TestUint32(t *testing.T) { 38 t.Run("marshal", func(t *testing.T) { 39 assert.Equal(t, "123", m2s(MarshalUint32(123))) 40 assert.Equal(t, "4294967295", m2s(MarshalUint32(math.MaxUint32))) 41 }) 42 43 t.Run("unmarshal", func(t *testing.T) { 44 assert.Equal(t, uint32(123), mustUnmarshalUint32(123)) 45 assert.Equal(t, uint32(123), mustUnmarshalUint32(int64(123))) 46 assert.Equal(t, uint32(123), mustUnmarshalUint32(json.Number("123"))) 47 assert.Equal(t, uint32(123), mustUnmarshalUint32("123")) 48 assert.Equal(t, uint32(4294967295), mustUnmarshalUint32("4294967295")) 49 }) 50 51 t.Run("can't unmarshal negative numbers", func(t *testing.T) { 52 _, err := UnmarshalUint32(-123) 53 assert.EqualError(t, err, "cannot convert negative numbers to uint32") 54 }) 55 } 56 57 func mustUnmarshalUint32(v interface{}) uint32 { 58 res, err := UnmarshalUint32(v) 59 if err != nil { 60 panic(err) 61 } 62 return res 63 } 64 65 func TestUint64(t *testing.T) { 66 t.Run("marshal", func(t *testing.T) { 67 assert.Equal(t, "123", m2s(MarshalUint64(123))) 68 }) 69 70 t.Run("unmarshal", func(t *testing.T) { 71 assert.Equal(t, uint64(123), mustUnmarshalUint64(123)) 72 assert.Equal(t, uint64(123), mustUnmarshalUint64(int64(123))) 73 assert.Equal(t, uint64(123), mustUnmarshalUint64(json.Number("123"))) 74 assert.Equal(t, uint64(123), mustUnmarshalUint64("123")) 75 }) 76 77 t.Run("can't unmarshal negative numbers", func(t *testing.T) { 78 _, err := UnmarshalUint64(-123) 79 assert.EqualError(t, err, "cannot convert negative numbers to uint64") 80 }) 81 } 82 83 func mustUnmarshalUint64(v interface{}) uint64 { 84 res, err := UnmarshalUint64(v) 85 if err != nil { 86 panic(err) 87 } 88 return res 89 }