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 }
90
View as plain text