mirror of https://github.com/goccy/go-json.git
Add test case
This commit is contained in:
parent
7ac966b81e
commit
23dbdf7fbd
|
@ -1158,3 +1158,56 @@ func TestEncodePointerString(t *testing.T) {
|
|||
t.Fatalf("*N = %d; want 42", *back.N)
|
||||
}
|
||||
}
|
||||
|
||||
type SamePointerNoCycle struct {
|
||||
Ptr1, Ptr2 *SamePointerNoCycle
|
||||
}
|
||||
|
||||
var samePointerNoCycle = &SamePointerNoCycle{}
|
||||
|
||||
type PointerCycle struct {
|
||||
Ptr *PointerCycle
|
||||
}
|
||||
|
||||
var pointerCycle = &PointerCycle{}
|
||||
|
||||
type PointerCycleIndirect struct {
|
||||
Ptrs []interface{}
|
||||
}
|
||||
|
||||
var pointerCycleIndirect = &PointerCycleIndirect{}
|
||||
|
||||
func init() {
|
||||
ptr := &SamePointerNoCycle{}
|
||||
samePointerNoCycle.Ptr1 = ptr
|
||||
samePointerNoCycle.Ptr2 = ptr
|
||||
|
||||
pointerCycle.Ptr = pointerCycle
|
||||
pointerCycleIndirect.Ptrs = []interface{}{pointerCycleIndirect}
|
||||
}
|
||||
|
||||
func TestSamePointerNoCycle(t *testing.T) {
|
||||
if _, err := json.Marshal(samePointerNoCycle); err != nil {
|
||||
t.Fatalf("unexpected error: %v", err)
|
||||
}
|
||||
}
|
||||
|
||||
var unsupportedValues = []interface{}{
|
||||
math.NaN(),
|
||||
math.Inf(-1),
|
||||
math.Inf(1),
|
||||
pointerCycle,
|
||||
pointerCycleIndirect,
|
||||
}
|
||||
|
||||
func TestUnsupportedValues(t *testing.T) {
|
||||
for _, v := range unsupportedValues {
|
||||
if _, err := json.Marshal(v); err != nil {
|
||||
if _, ok := err.(*json.UnsupportedValueError); !ok {
|
||||
t.Errorf("for %v, got %T want UnsupportedValueError", v, err)
|
||||
}
|
||||
} else {
|
||||
t.Errorf("for %v, expected error", v)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue