mirror of
https://github.com/google/uuid.git
synced 2025-09-16 09:16:30 +02:00
chore(tests): Add json.Unmarshal test with empty value cases (#116)
This commit is contained in:
committed by
GitHub
parent
b3cae7c306
commit
06716f6a60
51
json_test.go
51
json_test.go
@@ -31,6 +31,57 @@ func TestJSON(t *testing.T) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestJSONUnmarshal(t *testing.T) {
|
||||||
|
type S struct {
|
||||||
|
ID1 UUID
|
||||||
|
ID2 UUID `json:"ID2,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
testCases := map[string]struct {
|
||||||
|
data []byte
|
||||||
|
expectedError error
|
||||||
|
expectedResult UUID
|
||||||
|
}{
|
||||||
|
"success": {
|
||||||
|
data: []byte(`{"ID1": "f47ac10b-58cc-0372-8567-0e02b2c3d479"}`),
|
||||||
|
expectedError: nil,
|
||||||
|
expectedResult: testUUID,
|
||||||
|
},
|
||||||
|
"zero": {
|
||||||
|
data: []byte(`{"ID1": "00000000-0000-0000-0000-000000000000"}`),
|
||||||
|
expectedError: nil,
|
||||||
|
expectedResult: Nil,
|
||||||
|
},
|
||||||
|
"null": {
|
||||||
|
data: []byte(`{"ID1": null}`),
|
||||||
|
expectedError: nil,
|
||||||
|
expectedResult: Nil,
|
||||||
|
},
|
||||||
|
"empty": {
|
||||||
|
data: []byte(`{"ID1": ""}`),
|
||||||
|
expectedError: invalidLengthError{len: 0},
|
||||||
|
expectedResult: Nil,
|
||||||
|
},
|
||||||
|
"omitempty": {
|
||||||
|
data: []byte(`{"ID2": ""}`),
|
||||||
|
expectedError: invalidLengthError{len: 0},
|
||||||
|
expectedResult: Nil,
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
for name, tc := range testCases {
|
||||||
|
t.Run(name, func(t *testing.T) {
|
||||||
|
var s S
|
||||||
|
if err := json.Unmarshal(tc.data, &s); err != tc.expectedError {
|
||||||
|
t.Errorf("unexpected error: got %v, want %v", err, tc.expectedError)
|
||||||
|
}
|
||||||
|
if !reflect.DeepEqual(s.ID1, tc.expectedResult) {
|
||||||
|
t.Errorf("got %#v, want %#v", s.ID1, tc.expectedResult)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
func BenchmarkUUID_MarshalJSON(b *testing.B) {
|
func BenchmarkUUID_MarshalJSON(b *testing.B) {
|
||||||
x := &struct {
|
x := &struct {
|
||||||
UUID UUID `json:"uuid"`
|
UUID UUID `json:"uuid"`
|
||||||
|
Reference in New Issue
Block a user