mirror of
https://github.com/tailscale/tailscale.git
synced 2024-11-27 12:05:40 +00:00
7c1d6e35a5
Updates #11058 Change-Id: I35e7ef9b90e83cac04ca93fd964ad00ed5b48430 Signed-off-by: Brad Fitzpatrick <bradfitz@tailscale.com>
65 lines
1.3 KiB
Go
65 lines
1.3 KiB
Go
// Copyright (c) Tailscale Inc & AUTHORS
|
|
// SPDX-License-Identifier: BSD-3-Clause
|
|
|
|
package jsonutil
|
|
|
|
import (
|
|
"encoding/json"
|
|
"reflect"
|
|
"testing"
|
|
)
|
|
|
|
func TestCompareToStd(t *testing.T) {
|
|
tests := []string{
|
|
`{}`,
|
|
`{"a": 1}`,
|
|
`{]`,
|
|
`"abc"`,
|
|
`5`,
|
|
`{"a": 1} `,
|
|
`{"a": 1} {}`,
|
|
`{} bad data`,
|
|
`{"a": 1} "hello"`,
|
|
`[]`,
|
|
` {"x": {"t": [3,4,5]}}`,
|
|
}
|
|
|
|
for _, test := range tests {
|
|
b := []byte(test)
|
|
var ourV, stdV any
|
|
ourErr := Unmarshal(b, &ourV)
|
|
stdErr := json.Unmarshal(b, &stdV)
|
|
if (ourErr == nil) != (stdErr == nil) {
|
|
t.Errorf("Unmarshal(%q): our err = %#[2]v (%[2]T), std err = %#[3]v (%[3]T)", test, ourErr, stdErr)
|
|
}
|
|
// if !reflect.DeepEqual(ourErr, stdErr) {
|
|
// t.Logf("Unmarshal(%q): our err = %#[2]v (%[2]T), std err = %#[3]v (%[3]T)", test, ourErr, stdErr)
|
|
// }
|
|
if ourErr != nil {
|
|
// TODO: if we zero ourV on error, remove this continue.
|
|
continue
|
|
}
|
|
if !reflect.DeepEqual(ourV, stdV) {
|
|
t.Errorf("Unmarshal(%q): our val = %v, std val = %v", test, ourV, stdV)
|
|
}
|
|
}
|
|
}
|
|
|
|
func BenchmarkUnmarshal(b *testing.B) {
|
|
var m any
|
|
j := []byte("5")
|
|
b.ReportAllocs()
|
|
for range b.N {
|
|
Unmarshal(j, &m)
|
|
}
|
|
}
|
|
|
|
func BenchmarkStdUnmarshal(b *testing.B) {
|
|
var m any
|
|
j := []byte("5")
|
|
b.ReportAllocs()
|
|
for range b.N {
|
|
json.Unmarshal(j, &m)
|
|
}
|
|
}
|