2008-12-11 12:25:58 -08:00
|
|
|
// 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";
|
|
|
|
|
)
|
|
|
|
|
|
2009-03-03 08:39:12 -08:00
|
|
|
var jsontests = []string {
|
2008-12-11 12:25:58 -08:00
|
|
|
`null`,
|
|
|
|
|
`true`,
|
|
|
|
|
`false`,
|
|
|
|
|
`"abc"`,
|
|
|
|
|
`123`,
|
|
|
|
|
`0.1`,
|
|
|
|
|
`1e-10`,
|
|
|
|
|
`[]`,
|
|
|
|
|
`[1,2,3,4]`,
|
|
|
|
|
`[1,2,"abc",null,true,false]`,
|
|
|
|
|
`{}`,
|
|
|
|
|
`{"a":1}`,
|
2009-03-03 08:39:12 -08:00
|
|
|
}
|
2008-12-11 12:25:58 -08:00
|
|
|
|
2009-01-20 14:40:40 -08:00
|
|
|
func TestJson(t *testing.T) {
|
2008-12-11 12:25:58 -08:00
|
|
|
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;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
2009-01-20 14:40:40 -08:00
|
|
|
func TestJsonMap(t *testing.T) {
|
2009-01-06 15:19:02 -08:00
|
|
|
values := make(map[string]Json);
|
2008-12-11 12:25:58 -08:00
|
|
|
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);
|
|
|
|
|
}
|
2008-12-15 13:44:27 -08:00
|
|
|
for k,v := range values {
|
2008-12-11 12:25:58 -08:00
|
|
|
if v1 := mapv.Get(k); !Equal(v1, v) {
|
|
|
|
|
t.Errorf("MapTest: Walk(%#q) => %v, want %v", k, v1, v);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|