| // 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 ( |
| "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) |
| } |
| } |
| } |