mirror of
https://github.com/golang/go.git
synced 2025-11-02 01:30:55 +00:00
plus significant hand editing.
Back to T{x} for composite literals.
R=r
OCL=25612
CL=25632
72 lines
1.5 KiB
Go
72 lines
1.5 KiB
Go
// Copyright 2009 The Go Authors. All rights reserved.
|
|
// Use of this source code is governed by a BSD-style
|
|
// license that can be found in the LICENSE file.
|
|
|
|
package json
|
|
|
|
import (
|
|
"json";
|
|
"testing";
|
|
)
|
|
|
|
var jsontests = []string {
|
|
`null`,
|
|
`true`,
|
|
`false`,
|
|
`"abc"`,
|
|
`123`,
|
|
`0.1`,
|
|
`1e-10`,
|
|
`[]`,
|
|
`[1,2,3,4]`,
|
|
`[1,2,"abc",null,true,false]`,
|
|
`{}`,
|
|
`{"a":1}`,
|
|
}
|
|
|
|
func TestJson(t *testing.T) {
|
|
for i := 0; i < len(jsontests); i++ {
|
|
val, ok, errtok := StringToJson(jsontests[i]);
|
|
if !ok {
|
|
t.Errorf("StringToJson(%#q) => error near %v", jsontests[i], errtok);
|
|
continue;
|
|
}
|
|
str := JsonToString(val);
|
|
if str != jsontests[i] {
|
|
t.Errorf("JsonToString(StringToJson(%#q)) = %#q", jsontests[i], str);
|
|
continue;
|
|
}
|
|
}
|
|
}
|
|
|
|
func TestJsonMap(t *testing.T) {
|
|
values := make(map[string]Json);
|
|
mapstr := "{";
|
|
for i := 0; i < len(jsontests); i++ {
|
|
val, ok, errtok := StringToJson(jsontests[i]);
|
|
if !ok {
|
|
t.Errorf("StringToJson(%#q) => error near %v", jsontests[i], errtok);
|
|
}
|
|
if i > 0 {
|
|
mapstr += ",";
|
|
}
|
|
values[jsontests[i]] = val;
|
|
mapstr += Quote(jsontests[i]);
|
|
mapstr += ":";
|
|
mapstr += JsonToString(val);
|
|
}
|
|
mapstr += "}";
|
|
|
|
mapv, ok, errtok := StringToJson(mapstr);
|
|
if !ok {
|
|
t.Fatalf("StringToJson(%#q) => error near %v", mapstr, errtok);
|
|
}
|
|
if mapv == nil {
|
|
t.Fatalf("StringToJson(%#q) => nil, %v, %v", mapstr, ok, errtok);
|
|
}
|
|
for k,v := range values {
|
|
if v1 := mapv.Get(k); !Equal(v1, v) {
|
|
t.Errorf("MapTest: Walk(%#q) => %v, want %v", k, v1, v);
|
|
}
|
|
}
|
|
}
|