forked from Archives/fx
52 lines
833 B
Go
52 lines
833 B
Go
package json
|
|
|
|
import (
|
|
"encoding/json"
|
|
. "github.com/antonmedv/fx/pkg/dict"
|
|
"strings"
|
|
"testing"
|
|
)
|
|
|
|
func Test_parse(t *testing.T) {
|
|
input := `{
|
|
"a": 1,
|
|
"b": 2,
|
|
"a": 3,
|
|
"slice": [{"z": "z", "1": "1"}]
|
|
}`
|
|
|
|
p, err := Parse(json.NewDecoder(strings.NewReader(input)))
|
|
if err != nil {
|
|
t.Error("JSON parse error", err)
|
|
}
|
|
o := p.(*Dict)
|
|
|
|
expectedKeys := []string{
|
|
"a",
|
|
"b",
|
|
"slice",
|
|
}
|
|
for i := range o.Keys {
|
|
if o.Keys[i] != expectedKeys[i] {
|
|
t.Error("Wrong key order ", i, o.Keys[i], "!=", expectedKeys[i])
|
|
}
|
|
}
|
|
|
|
s, ok := o.Get("slice")
|
|
if !ok {
|
|
t.Error("slice missing")
|
|
}
|
|
a := s.(Array)
|
|
z := a[0].(*Dict)
|
|
|
|
expectedKeys = []string{
|
|
"z",
|
|
"1",
|
|
}
|
|
for i := range z.Keys {
|
|
if z.Keys[i] != expectedKeys[i] {
|
|
t.Error("Wrong key order for nested map ", i, z.Keys[i], "!=", expectedKeys[i])
|
|
}
|
|
}
|
|
}
|