-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathdig_test.go
50 lines (41 loc) · 1.11 KB
/
dig_test.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
package dig
import (
"encoding/json"
"testing"
"github.com/stretchr/testify/assert"
)
func TestStringKey(t *testing.T) {
var jsonBlob = []byte(`{"foo": {"bar": {"baz": 1}}}`)
var v interface{}
if err := json.Unmarshal(jsonBlob, &v); err != nil {
t.Fatal(err)
}
success, err := Dig(v, "foo", "bar", "baz")
assert.Equal(t, float64(1), success, "foo.bar.baz should be 1")
assert.Nil(t, err)
failure, err := Dig(v, "foo", "qux", "quux")
assert.Nil(t, failure)
assert.NotNil(t, err)
}
func TestIntKey(t *testing.T) {
var jsonBlob = []byte(`{"foo": [10, 11, 12]}`)
var v interface{}
if err := json.Unmarshal(jsonBlob, &v); err != nil {
t.Fatal(err)
}
success, err := Dig(v, "foo", 1)
assert.Equal(t, float64(11), success, "foo.bar.baz should be 1")
assert.Nil(t, err)
failure, err := Dig(v, "foo", 1, 0)
assert.Nil(t, failure)
assert.NotNil(t, err)
failure2, err := Dig(v, "foo", "bar")
assert.Nil(t, failure2)
assert.NotNil(t, err)
failure3, err := Dig(v, "foo", -1)
assert.Nil(t, failure3)
assert.NotNil(t, err)
failure4, err := Dig(v, "foo", 3)
assert.Nil(t, failure4)
assert.NotNil(t, err)
}