Skip to content

Commit 5b246ec

Browse files
committed
add uint support
Signed-off-by: Dmitrii Aleksandrov <goodmobiledevices@gmail.com>
1 parent 5c45ad6 commit 5b246ec

4 files changed

Lines changed: 116 additions & 1 deletion

File tree

field.go

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,16 @@ func (f Field) Get(obj interface{}) interface{} {
3636
return getPtrValue[*int32](ptrToField)
3737
case reflect.Int64:
3838
return getPtrValue[*int64](ptrToField)
39+
case reflect.Uint:
40+
return getPtrValue[*uint](ptrToField)
41+
case reflect.Uint8:
42+
return getPtrValue[*uint8](ptrToField)
43+
case reflect.Uint16:
44+
return getPtrValue[*uint16](ptrToField)
45+
case reflect.Uint32:
46+
return getPtrValue[*uint32](ptrToField)
47+
case reflect.Uint64:
48+
return getPtrValue[*uint64](ptrToField)
3949
case reflect.Float32:
4050
return getPtrValue[*float32](ptrToField)
4151
case reflect.Float64:
@@ -65,6 +75,16 @@ func (f Field) Get(obj interface{}) interface{} {
6575
return getPtrValue[int32](ptrToField)
6676
case reflect.Int64:
6777
return getPtrValue[int64](ptrToField)
78+
case reflect.Uint:
79+
return getPtrValue[uint](ptrToField)
80+
case reflect.Uint8:
81+
return getPtrValue[uint8](ptrToField)
82+
case reflect.Uint16:
83+
return getPtrValue[uint16](ptrToField)
84+
case reflect.Uint32:
85+
return getPtrValue[uint32](ptrToField)
86+
case reflect.Uint64:
87+
return getPtrValue[uint64](ptrToField)
6888
case reflect.Float32:
6989
return getPtrValue[float32](ptrToField)
7090
case reflect.Float64:
@@ -132,6 +152,16 @@ func (f Field) Set(obj interface{}, val interface{}) {
132152
setPtrValue[*int32](ptrToField, val)
133153
case reflect.Int64:
134154
setPtrValue[*int64](ptrToField, val)
155+
case reflect.Uint:
156+
setPtrValue[*uint](ptrToField, val)
157+
case reflect.Uint8:
158+
setPtrValue[*uint8](ptrToField, val)
159+
case reflect.Uint16:
160+
setPtrValue[*uint16](ptrToField, val)
161+
case reflect.Uint32:
162+
setPtrValue[*uint32](ptrToField, val)
163+
case reflect.Uint64:
164+
setPtrValue[*uint64](ptrToField, val)
135165
case reflect.Float32:
136166
setPtrValue[*float32](ptrToField, val)
137167
case reflect.Float64:
@@ -158,6 +188,16 @@ func (f Field) Set(obj interface{}, val interface{}) {
158188
setPtrValue[int32](ptrToField, val)
159189
case reflect.Int64:
160190
setPtrValue[int64](ptrToField, val)
191+
case reflect.Uint:
192+
setPtrValue[uint](ptrToField, val)
193+
case reflect.Uint8:
194+
setPtrValue[uint8](ptrToField, val)
195+
case reflect.Uint16:
196+
setPtrValue[uint16](ptrToField, val)
197+
case reflect.Uint32:
198+
setPtrValue[uint32](ptrToField, val)
199+
case reflect.Uint64:
200+
setPtrValue[uint64](ptrToField, val)
161201
case reflect.Float32:
162202
setPtrValue[float32](ptrToField, val)
163203
case reflect.Float64:

fields_test.go

Lines changed: 70 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,11 @@ type TestStruct struct {
1919
Int16 int16
2020
Int32 int32
2121
Int64 int64
22+
Uint uint
23+
Uint8 uint8
24+
Uint16 uint16
25+
Uint32 uint32
26+
Uint64 uint64
2227
Float32 float32
2328
Float64 float64
2429
Bool bool
@@ -31,6 +36,11 @@ type TestStruct struct {
3136
PtrInt16 *int16
3237
PtrInt32 *int32
3338
PtrInt64 *int64
39+
PtrUint *uint
40+
PtrUint8 *uint8
41+
PtrUint16 *uint16
42+
PtrUint32 *uint32
43+
PtrUint64 *uint64
3444
PtrFloat32 *float32
3545
PtrFloat64 *float64
3646
PtrBool *bool
@@ -47,6 +57,11 @@ func TestGetFrom(t *testing.T) {
4757
assert.Contains(t, fieldMap, "Int16")
4858
assert.Contains(t, fieldMap, "Int32")
4959
assert.Contains(t, fieldMap, "Int64")
60+
assert.Contains(t, fieldMap, "Uint")
61+
assert.Contains(t, fieldMap, "Uint8")
62+
assert.Contains(t, fieldMap, "Uint16")
63+
assert.Contains(t, fieldMap, "Uint32")
64+
assert.Contains(t, fieldMap, "Uint64")
5065
assert.Contains(t, fieldMap, "Float32")
5166
assert.Contains(t, fieldMap, "Float64")
5267
assert.Contains(t, fieldMap, "Bool")
@@ -56,6 +71,11 @@ func TestGetFrom(t *testing.T) {
5671
assert.Contains(t, fieldMap, "PtrInt16")
5772
assert.Contains(t, fieldMap, "PtrInt32")
5873
assert.Contains(t, fieldMap, "PtrInt64")
74+
assert.Contains(t, fieldMap, "PtrUint")
75+
assert.Contains(t, fieldMap, "PtrUint8")
76+
assert.Contains(t, fieldMap, "PtrUint16")
77+
assert.Contains(t, fieldMap, "PtrUint32")
78+
assert.Contains(t, fieldMap, "PtrUint64")
5979
assert.Contains(t, fieldMap, "PtrFloat32")
6080
assert.Contains(t, fieldMap, "PtrFloat64")
6181
assert.Contains(t, fieldMap, "PtrBool")
@@ -77,6 +97,11 @@ func TestGet(t *testing.T) {
7797
int16Val := int16(3)
7898
int32Val := int32(4)
7999
int64Val := int64(5)
100+
uintVal := uint(6)
101+
uint8Val := uint8(7)
102+
uint16Val := uint16(8)
103+
uint32Val := uint32(9)
104+
uint64Val := uint64(10)
80105
f32Val := float32(6.6)
81106
f64Val := float64(7.7)
82107
boolVal := true
@@ -89,6 +114,11 @@ func TestGet(t *testing.T) {
89114
Int16: int16Val,
90115
Int32: int32Val,
91116
Int64: int64Val,
117+
Uint: uintVal,
118+
Uint8: uint8Val,
119+
Uint16: uint16Val,
120+
Uint32: uint32Val,
121+
Uint64: uint64Val,
92122
Float32: f32Val,
93123
Float64: f64Val,
94124
Bool: boolVal,
@@ -100,6 +130,11 @@ func TestGet(t *testing.T) {
100130
PtrInt16: &int16Val,
101131
PtrInt32: &int32Val,
102132
PtrInt64: &int64Val,
133+
PtrUint: &uintVal,
134+
PtrUint8: &uint8Val,
135+
PtrUint16: &uint16Val,
136+
PtrUint32: &uint32Val,
137+
PtrUint64: &uint64Val,
103138
PtrFloat32: &f32Val,
104139
PtrFloat64: &f64Val,
105140
PtrBool: &boolVal,
@@ -117,6 +152,11 @@ func TestGet(t *testing.T) {
117152
assert.Equal(t, source.Int16, fieldsMap["Int16"].Get(source))
118153
assert.Equal(t, source.Int32, fieldsMap["Int32"].Get(source))
119154
assert.Equal(t, source.Int64, fieldsMap["Int64"].Get(source))
155+
assert.Equal(t, source.Uint, fieldsMap["Uint"].Get(source))
156+
assert.Equal(t, source.Uint8, fieldsMap["Uint8"].Get(source))
157+
assert.Equal(t, source.Uint16, fieldsMap["Uint16"].Get(source))
158+
assert.Equal(t, source.Uint32, fieldsMap["Uint32"].Get(source))
159+
assert.Equal(t, source.Uint64, fieldsMap["Uint64"].Get(source))
120160
assert.Equal(t, source.Float32, fieldsMap["Float32"].Get(source))
121161
assert.Equal(t, source.Float64, fieldsMap["Float64"].Get(source))
122162
assert.Equal(t, source.Bool, fieldsMap["Bool"].Get(source))
@@ -127,6 +167,11 @@ func TestGet(t *testing.T) {
127167
assert.Equal(t, source.PtrInt16, fieldsMap["PtrInt16"].Get(source))
128168
assert.Equal(t, source.PtrInt32, fieldsMap["PtrInt32"].Get(source))
129169
assert.Equal(t, source.PtrInt64, fieldsMap["PtrInt64"].Get(source))
170+
assert.Equal(t, source.PtrUint, fieldsMap["PtrUint"].Get(source))
171+
assert.Equal(t, source.PtrUint8, fieldsMap["PtrUint8"].Get(source))
172+
assert.Equal(t, source.PtrUint16, fieldsMap["PtrUint16"].Get(source))
173+
assert.Equal(t, source.PtrUint32, fieldsMap["PtrUint32"].Get(source))
174+
assert.Equal(t, source.PtrUint64, fieldsMap["PtrUint64"].Get(source))
130175
assert.Equal(t, source.PtrFloat32, fieldsMap["PtrFloat32"].Get(source))
131176
assert.Equal(t, source.PtrFloat64, fieldsMap["PtrFloat64"].Get(source))
132177
assert.Equal(t, source.PtrBool, fieldsMap["PtrBool"].Get(source))
@@ -147,6 +192,11 @@ func TestSet(t *testing.T) {
147192
int16Val := int16(8)
148193
int32Val := int32(9)
149194
int64Val := int64(10)
195+
uintVal := uint(6)
196+
uint8Val := uint8(7)
197+
uint16Val := uint16(8)
198+
uint32Val := uint32(9)
199+
uint64Val := uint64(10)
150200
f32Val := float32(11.11)
151201
f64Val := 12.12
152202
boolVal := true
@@ -161,6 +211,11 @@ func TestSet(t *testing.T) {
161211
fieldMap["Int16"].Set(dest, int16Val)
162212
fieldMap["Int32"].Set(dest, int32Val)
163213
fieldMap["Int64"].Set(dest, int64Val)
214+
fieldMap["Uint"].Set(dest, uintVal)
215+
fieldMap["Uint8"].Set(dest, uint8Val)
216+
fieldMap["Uint16"].Set(dest, uint16Val)
217+
fieldMap["Uint32"].Set(dest, uint32Val)
218+
fieldMap["Uint64"].Set(dest, uint64Val)
164219
fieldMap["Float32"].Set(dest, f32Val)
165220
fieldMap["Float64"].Set(dest, f64Val)
166221
fieldMap["Bool"].Set(dest, boolVal)
@@ -172,6 +227,11 @@ func TestSet(t *testing.T) {
172227
fieldMap["PtrInt16"].Set(dest, &int16Val)
173228
fieldMap["PtrInt32"].Set(dest, &int32Val)
174229
fieldMap["PtrInt64"].Set(dest, &int64Val)
230+
fieldMap["PtrUint"].Set(dest, &uintVal)
231+
fieldMap["PtrUint8"].Set(dest, &uint8Val)
232+
fieldMap["PtrUint16"].Set(dest, &uint16Val)
233+
fieldMap["PtrUint32"].Set(dest, &uint32Val)
234+
fieldMap["PtrUint64"].Set(dest, &uint64Val)
175235
fieldMap["PtrFloat32"].Set(dest, &f32Val)
176236
fieldMap["PtrFloat64"].Set(dest, &f64Val)
177237
fieldMap["PtrBool"].Set(dest, &boolVal)
@@ -186,6 +246,11 @@ func TestSet(t *testing.T) {
186246
assert.Equal(t, int16Val, dest.Int16)
187247
assert.Equal(t, int32Val, dest.Int32)
188248
assert.Equal(t, int64Val, dest.Int64)
249+
assert.Equal(t, uintVal, dest.Uint)
250+
assert.Equal(t, uint8Val, dest.Uint8)
251+
assert.Equal(t, uint16Val, dest.Uint16)
252+
assert.Equal(t, uint32Val, dest.Uint32)
253+
assert.Equal(t, uint64Val, dest.Uint64)
189254
assert.Equal(t, f32Val, dest.Float32)
190255
assert.Equal(t, f64Val, dest.Float64)
191256
assert.Equal(t, boolVal, dest.Bool)
@@ -197,6 +262,11 @@ func TestSet(t *testing.T) {
197262
assert.Equal(t, &int16Val, dest.PtrInt16)
198263
assert.Equal(t, &int32Val, dest.PtrInt32)
199264
assert.Equal(t, &int64Val, dest.PtrInt64)
265+
assert.Equal(t, &uintVal, dest.PtrUint)
266+
assert.Equal(t, &uint8Val, dest.PtrUint8)
267+
assert.Equal(t, &uint16Val, dest.PtrUint16)
268+
assert.Equal(t, &uint32Val, dest.PtrUint32)
269+
assert.Equal(t, &uint64Val, dest.PtrUint64)
200270
assert.Equal(t, &f32Val, dest.PtrFloat32)
201271
assert.Equal(t, &f64Val, dest.PtrFloat64)
202272
assert.Equal(t, &boolVal, dest.PtrBool)

go.mod

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,4 +8,4 @@ require (
88
github.com/davecgh/go-spew v1.1.1 // indirect
99
github.com/pmezard/go-difflib v1.0.0 // indirect
1010
gopkg.in/yaml.v3 v3.0.1 // indirect
11-
)
11+
)

go.sum

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,10 @@
1+
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
12
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
3+
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
24
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
5+
github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg=
36
github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY=
7+
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM=
48
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
9+
gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
510
gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=

0 commit comments

Comments
 (0)