feat: deliver authenticated task APIs, SDK and P1 regression
This commit is contained in:
38
internal/jsonvalue/canonical_test.go
Normal file
38
internal/jsonvalue/canonical_test.go
Normal file
@@ -0,0 +1,38 @@
|
||||
package jsonvalue
|
||||
|
||||
import "testing"
|
||||
|
||||
func TestCanonicalPreservesExactNumbers(t *testing.T) {
|
||||
for _, pair := range [][2]string{
|
||||
{`{"z":1.0,"a":9007199254740993}`, `{"a":9007199254740993,"z":1}`},
|
||||
{`[0,-0,100,0.0001000]`, `[0,0,1e2,1e-4]`},
|
||||
{`{"x":12345678901234567890.1234567890123456789}`, `{"x":123456789012345678901234567890123456789e-19}`},
|
||||
{`"\ud83d\ude00"`, `"😀"`},
|
||||
} {
|
||||
got, err := Canonical([]byte(pair[0]))
|
||||
if err != nil || string(got) != pair[1] {
|
||||
t.Fatalf("%s => %s, %v", pair[0], got, err)
|
||||
}
|
||||
}
|
||||
for _, raw := range []string{`{"a":1,"\u0061":2}`, `{"nested":{"x":1,"x":2}}`, `1 2`, `9e308`, `1e309`, `"\ud800"`, `"\udc00"`, `"\ud800\u1234"`, string([]byte{'"', 0xff, '"'})} {
|
||||
if _, err := Canonical([]byte(raw)); err == nil {
|
||||
t.Fatalf("accepted %q", raw)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func FuzzCanonical(f *testing.F) {
|
||||
for _, s := range []string{`{"a":1.0}`, `[1,true,null]`, `"\ud83d\ude00"`, `0.0000000000000000001`} {
|
||||
f.Add(s)
|
||||
}
|
||||
f.Fuzz(func(t *testing.T, s string) {
|
||||
b, err := Canonical([]byte(s))
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
again, err := Canonical(b)
|
||||
if err != nil || string(again) != string(b) {
|
||||
t.Fatalf("unstable canonical form %s %v", b, err)
|
||||
}
|
||||
})
|
||||
}
|
||||
Reference in New Issue
Block a user