| // 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); | |
| } | |
| if cnt := mapv.Len(); cnt != len(jsontests) { | |
| t.Errorf("StringToJson(%#q).Len() => %v, want %v", mapstr, cnt, | |
| len(jsontests)); | |
| } | |
| for k,v := range values { | |
| if v1 := mapv.Get(k); !Equal(v1, v) { | |
| t.Errorf("MapTest: Walk(%#q) => %v, want %v", k, v1, v); | |
| } | |
| } | |
| } |