This is an automated email from the ASF dual-hosted git repository.
tison pushed a commit to branch unstable
in repository https://gitbox.apache.org/repos/asf/kvrocks.git
The following commit(s) were added to refs/heads/unstable by this push:
new cf2f4ad7 test: Use require.JSONEq instead of require.Equal for the
JSON string (#2100)
cf2f4ad7 is described below
commit cf2f4ad7d95d7c792ff93e7cd83403b8c7434eda
Author: 纪华裕 <[email protected]>
AuthorDate: Tue Feb 13 19:12:13 2024 +0800
test: Use require.JSONEq instead of require.Equal for the JSON string
(#2100)
Co-authored-by: hulk <[email protected]>
---
tests/gocase/unit/type/json/json_test.go | 121 ++++++++++++++++---------------
1 file changed, 62 insertions(+), 59 deletions(-)
diff --git a/tests/gocase/unit/type/json/json_test.go
b/tests/gocase/unit/type/json/json_test.go
index a849d46d..a1489f7a 100644
--- a/tests/gocase/unit/type/json/json_test.go
+++ b/tests/gocase/unit/type/json/json_test.go
@@ -39,27 +39,27 @@ func TestJson(t *testing.T) {
t.Run("JSON.SET and JSON.GET basics", func(t *testing.T) {
require.Error(t, rdb.Do(ctx, "JSON.SET", "a").Err())
require.NoError(t, rdb.Do(ctx, "JSON.SET", "a", "$", ` {"x":1,
"y":2} `).Err())
- require.Equal(t, rdb.Do(ctx, "JSON.GET", "a").Val(),
`{"x":1,"y":2}`)
+ EqualJSON(t, `{"x":1,"y":2}`, rdb.Do(ctx, "JSON.GET",
"a").Val())
require.NoError(t, rdb.Do(ctx, "JSON.SET", "a", "$.y",
`233`).Err())
- require.Equal(t, rdb.Do(ctx, "JSON.GET", "a").Val(),
`{"x":1,"y":233}`)
+ EqualJSON(t, `{"x":1,"y":233}`, rdb.Do(ctx, "JSON.GET",
"a").Val())
require.NoError(t, rdb.Do(ctx, "JSON.SET", "a", "$", `[[1],
[2]]`).Err())
require.NoError(t, rdb.Do(ctx, "JSON.SET", "a", "$[*][0]",
"3").Err())
- require.Equal(t, rdb.Do(ctx, "JSON.GET", "a").Val(),
`[[3],[3]]`)
+ EqualJSON(t, `[[3],[3]]`, rdb.Do(ctx, "JSON.GET", "a").Val())
- require.Equal(t, rdb.Do(ctx, "JSON.GET", "a", "$").Val(),
`[[[3],[3]]]`)
- require.Equal(t, rdb.Do(ctx, "JSON.GET", "a", "$[0]").Val(),
`[[3]]`)
- require.Equal(t, rdb.Do(ctx, "JSON.GET", "a", "$[0][0]").Val(),
`[3]`)
+ EqualJSON(t, `[[[3],[3]]]`, rdb.Do(ctx, "JSON.GET", "a",
"$").Val())
+ EqualJSON(t, `[[3]]`, rdb.Do(ctx, "JSON.GET", "a",
"$[0]").Val())
+ EqualJSON(t, `[3]`, rdb.Do(ctx, "JSON.GET", "a",
"$[0][0]").Val())
require.NoError(t, rdb.Do(ctx, "JSON.SET", "a", "$",
`{"x":1,"y":{"x":{"y":2},"y":3}}`).Err())
- require.Equal(t, rdb.Do(ctx, "JSON.GET", "a").Val(),
`{"x":1,"y":{"x":{"y":2},"y":3}}`)
- require.Equal(t, rdb.Do(ctx, "JSON.GET", "a", "$").Val(),
`[{"x":1,"y":{"x":{"y":2},"y":3}}]`)
- require.Equal(t, rdb.Do(ctx, "JSON.GET", "a", "$..x").Val(),
`[1,{"y":2}]`)
- require.Equal(t, rdb.Do(ctx, "JSON.GET", "a", "$..x",
"$..y").Val(), `{"$..x":[1,{"y":2}],"$..y":[{"x":{"y":2},"y":3},3,2]}`)
+ EqualJSON(t, `{"x":1,"y":{"x":{"y":2},"y":3}}`, rdb.Do(ctx,
"JSON.GET", "a").Val())
+ EqualJSON(t, `[{"x":1,"y":{"x":{"y":2},"y":3}}]`, rdb.Do(ctx,
"JSON.GET", "a", "$").Val())
+ EqualJSON(t, `[1,{"y":2}]`, rdb.Do(ctx, "JSON.GET", "a",
"$..x").Val())
+ EqualJSON(t,
`{"$..x":[1,{"y":2}],"$..y":[{"x":{"y":2},"y":3},3,2]}`, rdb.Do(ctx,
"JSON.GET", "a", "$..x", "$..y").Val())
require.Equal(t, rdb.Do(ctx, "JSON.GET", "no-such-key").Val(),
nil)
- require.Equal(t, rdb.Type(ctx, "a").Val(), "ReJSON-RL")
+ require.Equal(t, "ReJSON-RL", rdb.Type(ctx, "a").Val())
})
t.Run("JSON.DEL and JSON.FORGET basics", func(t *testing.T) {
@@ -67,11 +67,11 @@ func TestJson(t *testing.T) {
for _, command := range []string{"JSON.DEL", "JSON.FORGET"} {
require.NoError(t, rdb.Do(ctx, "JSON.SET", "a", "$",
`{"x": 1, "nested": {"x": 2, "y": 3}}`).Err())
require.EqualValues(t, 2, rdb.Do(ctx, command, "a",
"$..x").Val())
- require.Equal(t, `[{"nested":{"y":3}}]`, rdb.Do(ctx,
"JSON.GET", "a", "$").Val())
+ EqualJSON(t, `[{"nested":{"y":3}}]`, rdb.Do(ctx,
"JSON.GET", "a", "$").Val())
require.NoError(t, rdb.Do(ctx, "JSON.SET", "a", "$",
`{"x": 1, "nested": {"x": 2, "y": 3}}`).Err())
require.EqualValues(t, 1, rdb.Do(ctx, command, "a",
"$.x").Val())
- require.Equal(t, `[{"nested":{"x":2,"y":3}}]`,
rdb.Do(ctx, "JSON.GET", "a", "$").Val())
+ EqualJSON(t, `[{"nested":{"x":2,"y":3}}]`, rdb.Do(ctx,
"JSON.GET", "a", "$").Val())
require.EqualValues(t, 1, rdb.Do(ctx, command, "a",
"$").Val())
require.EqualValues(t, 0, rdb.Do(ctx, command,
"no-such-json-key", "$").Val())
@@ -80,11 +80,11 @@ func TestJson(t *testing.T) {
t.Run("JSON.GET with options", func(t *testing.T) {
require.NoError(t, rdb.Do(ctx, "JSON.SET", "a", "$", ` {"x":1,
"y":2} `).Err())
- require.Equal(t, rdb.Do(ctx, "JSON.GET", "a", "INDENT", "
").Val(), `{ "x":1, "y":2}`)
- require.Equal(t, rdb.Do(ctx, "JSON.GET", "a", "INDENT", " ",
"SPACE", " ").Val(), `{ "x": 1, "y": 2}`)
- require.Equal(t, rdb.Do(ctx, "JSON.GET", "a", "NEWLINE",
"\n").Val(), "{\n\"x\":1,\n\"y\":2\n}")
- require.Equal(t, rdb.Do(ctx, "JSON.GET", "a", "NEWLINE", "\n",
"INDENT", " ", "SPACE", " ").Val(), "{\n \"x\": 1,\n \"y\": 2\n}")
- require.Equal(t, rdb.Do(ctx, "JSON.GET", "a", "INDENT", " ",
"$").Val(), `[ { "x":1, "y":2 }]`)
+ require.Equal(t, `{ "x":1, "y":2}`, rdb.Do(ctx, "JSON.GET",
"a", "INDENT", " ").Val())
+ require.Equal(t, `{ "x": 1, "y": 2}`, rdb.Do(ctx, "JSON.GET",
"a", "INDENT", " ", "SPACE", " ").Val())
+ require.Equal(t, "{\n\"x\":1,\n\"y\":2\n}", rdb.Do(ctx,
"JSON.GET", "a", "NEWLINE", "\n").Val())
+ require.Equal(t, "{\n \"x\": 1,\n \"y\": 2\n}", rdb.Do(ctx,
"JSON.GET", "a", "NEWLINE", "\n", "INDENT", " ", "SPACE", " ").Val())
+ require.Equal(t, `[ { "x":1, "y":2 }]`, rdb.Do(ctx,
"JSON.GET", "a", "INDENT", " ", "$").Val())
})
t.Run("JSON storage format CBOR", func(t *testing.T) {
@@ -94,8 +94,8 @@ func TestJson(t *testing.T) {
require.NoError(t, rdb.Do(ctx, "CONFIG", "SET",
"json-storage-format", "cbor").Err())
require.NoError(t, rdb.Do(ctx, "JSON.SET", "b", "$", `{"x":1,
"y":2}`).Err())
require.Equal(t, "cbor", rdb.Do(ctx, "JSON.INFO",
"b").Val().([]interface{})[1])
- require.Equal(t, `{"x":1,"y":2}`, rdb.Do(ctx, "JSON.GET",
"b").Val())
- require.Equal(t, `{"x":1,"y":2}`, rdb.Do(ctx, "JSON.GET",
"a").Val())
+ EqualJSON(t, `{"x":1,"y":2}`, rdb.Do(ctx, "JSON.GET",
"b").Val())
+ EqualJSON(t, `{"x":1,"y":2}`, rdb.Do(ctx, "JSON.GET",
"a").Val())
})
t.Run("JSON.ARRAPPEND basics", func(t *testing.T) {
@@ -112,19 +112,19 @@ func TestJson(t *testing.T) {
require.NoError(t, rdb.Do(ctx, "JSON.SET", "a", "$", ` {"x":1,
"y": {"x":[]} } `).Err())
require.Equal(t, []interface{}{int64(1), nil}, rdb.Do(ctx,
"JSON.ARRAPPEND", "a", "$..x", `1`).Val())
- require.Equal(t, `[{"x":1,"y":{"x":[1]}}]`, rdb.Do(ctx,
"JSON.GET", "a", "$").Val())
+ EqualJSON(t, `[{"x":1,"y":{"x":[1]}}]`, rdb.Do(ctx, "JSON.GET",
"a", "$").Val())
require.NoError(t, rdb.Do(ctx, "JSON.SET", "a", "$", ` {"x":[],
"y":[]} `).Err())
require.Equal(t, []interface{}{int64(1)}, rdb.Do(ctx,
"JSON.ARRAPPEND", "a", "$.x", `1`).Val())
- require.Equal(t, `{"x":[1],"y":[]}`, rdb.Do(ctx, "JSON.GET",
"a").Val())
+ EqualJSON(t, `{"x":[1],"y":[]}`, rdb.Do(ctx, "JSON.GET",
"a").Val())
require.Equal(t, []interface{}{int64(4)}, rdb.Do(ctx,
"JSON.ARRAPPEND", "a", "$.x", `1`, `2`, `3`).Val())
require.Equal(t, []interface{}{int64(1)}, rdb.Do(ctx,
"JSON.ARRAPPEND", "a", "$.y", ` {"x":[], "y":[]} `).Val())
- require.Equal(t, `[{"x":[1,1,2,3],"y":[{"x":[],"y":[]}]}]`,
rdb.Do(ctx, "JSON.GET", "a", "$").Val())
+ EqualJSON(t, `[{"x":[1,1,2,3],"y":[{"x":[],"y":[]}]}]`,
rdb.Do(ctx, "JSON.GET", "a", "$").Val())
require.Equal(t, []interface{}{int64(2), int64(6)}, rdb.Do(ctx,
"JSON.ARRAPPEND", "a", "$..x", `1`, `2`).Val())
- require.Equal(t, `[[1,2]]`, rdb.Do(ctx, "JSON.GET", "a",
"$.y[0].x").Val())
- require.Equal(t, `[]`, rdb.Do(ctx, "JSON.GET", "a",
"$.x.x").Val())
- require.Equal(t,
`[{"x":[1,1,2,3,1,2],"y":[{"x":[1,2],"y":[]}]}]`, rdb.Do(ctx, "JSON.GET", "a",
"$").Val())
+ EqualJSON(t, `[[1,2]]`, rdb.Do(ctx, "JSON.GET", "a",
"$.y[0].x").Val())
+ EqualJSON(t, `[]`, rdb.Do(ctx, "JSON.GET", "a", "$.x.x").Val())
+ EqualJSON(t, `[{"x":[1,1,2,3,1,2],"y":[{"x":[1,2],"y":[]}]}]`,
rdb.Do(ctx, "JSON.GET", "a", "$").Val())
})
t.Run("JSON.TYPE basics", func(t *testing.T) {
@@ -185,38 +185,38 @@ func TestJson(t *testing.T) {
t.Run("Merge basics", func(t *testing.T) {
require.NoError(t, rdb.Do(ctx, "JSON.SET", "key", "$",
`{"a":2}`).Err())
require.NoError(t, rdb.Do(ctx, "JSON.MERGE", "key", "$.a",
`3`).Err())
- require.Equal(t, `{"a":3}`, rdb.Do(ctx, "JSON.GET",
"key").Val())
+ EqualJSON(t, `{"a":3}`, rdb.Do(ctx, "JSON.GET", "key").Val())
require.NoError(t, rdb.Do(ctx, "JSON.SET", "key", "$",
`{"a":2}`).Err())
require.NoError(t, rdb.Do(ctx, "JSON.MERGE", "key", "$.a",
`null`).Err())
- require.Equal(t, `{}`, rdb.Do(ctx, "JSON.GET", "key").Val())
+ EqualJSON(t, `{}`, rdb.Do(ctx, "JSON.GET", "key").Val())
require.NoError(t, rdb.Do(ctx, "JSON.SET", "key", "$",
`{"a":[2,4,6,8]}`).Err())
require.NoError(t, rdb.Do(ctx, "JSON.MERGE", "key", "$.a",
`[10,12]`).Err())
- require.Equal(t, `{"a":[10,12]}`, rdb.Do(ctx, "JSON.GET",
"key").Val())
+ EqualJSON(t, `{"a":[10,12]}`, rdb.Do(ctx, "JSON.GET",
"key").Val())
require.NoError(t, rdb.Do(ctx, "JSON.SET", "key", "$", `{"f1":
{"a":1}, "f2":{"a":2}}`).Err())
- require.Equal(t, `{"f1":{"a":1},"f2":{"a":2}}`, rdb.Do(ctx,
"JSON.GET", "key").Val())
+ EqualJSON(t, `{"f1":{"a":1},"f2":{"a":2}}`, rdb.Do(ctx,
"JSON.GET", "key").Val())
require.NoError(t, rdb.Do(ctx, "JSON.MERGE", "key", "$",
`{"f1": null, "f2":{"a":3, "b":4}, "f3":[2,4,6]}`).Err())
- require.Equal(t, `{"f2":{"a":3,"b":4},"f3":[2,4,6]}`,
rdb.Do(ctx, "JSON.GET", "key").Val())
+ EqualJSON(t, `{"f2":{"a":3,"b":4},"f3":[2,4,6]}`, rdb.Do(ctx,
"JSON.GET", "key").Val())
})
t.Run("Clear JSON values", func(t *testing.T) {
require.NoError(t, rdb.Do(ctx, "JSON.SET", "bb", "$",
`{"obj":{"a":1, "b":2}, "arr":[1,2,3], "str": "foo", "bool": true, "int": 42,
"float": 3.14}`).Err())
require.NoError(t, rdb.Do(ctx, "JSON.CLEAR", "bb", "$").Err())
- require.Equal(t, `{}`, rdb.Do(ctx, "JSON.GET", "bb").Val())
+ EqualJSON(t, `{}`, rdb.Do(ctx, "JSON.GET", "bb").Val())
require.NoError(t, rdb.Do(ctx, "JSON.SET", "bb", "$",
`{"obj":{"a":1, "b":2}, "arr":[1,2,3], "str": "foo", "bool": true, "int": 42,
"float": 3.14}`).Err())
require.NoError(t, rdb.Do(ctx, "JSON.CLEAR", "bb",
"$.obj").Err())
- require.Equal(t,
`{"arr":[1,2,3],"bool":true,"float":3.14,"int":42,"obj":{},"str":"foo"}`,
rdb.Do(ctx, "JSON.GET", "bb").Val())
+ EqualJSON(t,
`{"arr":[1,2,3],"bool":true,"float":3.14,"int":42,"obj":{},"str":"foo"}`,
rdb.Do(ctx, "JSON.GET", "bb").Val())
require.NoError(t, rdb.Do(ctx, "JSON.CLEAR", "bb",
"$.arr").Err())
- require.Equal(t,
`{"arr":[],"bool":true,"float":3.14,"int":42,"obj":{},"str":"foo"}`,
rdb.Do(ctx, "JSON.GET", "bb").Val())
+ EqualJSON(t,
`{"arr":[],"bool":true,"float":3.14,"int":42,"obj":{},"str":"foo"}`,
rdb.Do(ctx, "JSON.GET", "bb").Val())
require.NoError(t, rdb.Do(ctx, "JSON.SET", "bb", "$",
`{"obj":{"a":1, "b":2}, "arr":[1,2,3], "str": "foo", "bool": true, "int": 42,
"float": 3.14}`).Err())
require.NoError(t, rdb.Do(ctx, "JSON.CLEAR", "bb", "$.*").Err())
- require.Equal(t,
`{"arr":[],"bool":true,"float":0,"int":0,"obj":{},"str":"foo"}`, rdb.Do(ctx,
"JSON.GET", "bb").Val())
+ EqualJSON(t,
`{"arr":[],"bool":true,"float":0,"int":0,"obj":{},"str":"foo"}`, rdb.Do(ctx,
"JSON.GET", "bb").Val())
_, err := rdb.Do(ctx, "JSON.CLEAR", "bb", "$.some").Result()
require.NoError(t, err)
@@ -276,28 +276,28 @@ func TestJson(t *testing.T) {
// json path has one array
require.NoError(t, rdb.Do(ctx, "JSON.SET", "a", "$",
`{"a":[1,2,3],
"b":{"a":[4,5,6,7],"c":2},"c":[1,2,3,4],"e":[6,7,8],"f":{"a":[10,11,12,13,14],
"g":2}}`).Err())
require.EqualValues(t, []interface{}{int64(4)}, rdb.Do(ctx,
arrInsertCmd, "a", "$.e", 1, 90).Val())
- require.Equal(t,
"[{\"a\":[1,2,3],\"b\":{\"a\":[4,5,6,7],\"c\":2},\"c\":[1,2,3,4],\"e\":[6,90,7,8],\"f\":{\"a\":[10,11,12,13,14],\"g\":2}}]",
rdb.Do(ctx, "JSON.GET", "a", "$").Val())
+ EqualJSON(t,
"[{\"a\":[1,2,3],\"b\":{\"a\":[4,5,6,7],\"c\":2},\"c\":[1,2,3,4],\"e\":[6,90,7,8],\"f\":{\"a\":[10,11,12,13,14],\"g\":2}}]",
rdb.Do(ctx, "JSON.GET", "a", "$").Val())
// insert many value
require.EqualValues(t, []interface{}{int64(8)}, rdb.Do(ctx,
arrInsertCmd, "a", "$.e", 2, 80, 81, 82, 83).Val())
- require.Equal(t,
"[{\"a\":[1,2,3],\"b\":{\"a\":[4,5,6,7],\"c\":2},\"c\":[1,2,3,4],\"e\":[6,90,80,81,82,83,7,8],\"f\":{\"a\":[10,11,12,13,14],\"g\":2}}]",
rdb.Do(ctx, "JSON.GET", "a", "$").Val())
+ EqualJSON(t,
"[{\"a\":[1,2,3],\"b\":{\"a\":[4,5,6,7],\"c\":2},\"c\":[1,2,3,4],\"e\":[6,90,80,81,82,83,7,8],\"f\":{\"a\":[10,11,12,13,14],\"g\":2}}]",
rdb.Do(ctx, "JSON.GET", "a", "$").Val())
// json path has many array
require.EqualValues(t, []interface{}{int64(6), int64(5),
int64(4)}, rdb.Do(ctx, arrInsertCmd, "a", "$..a", 1, 91).Val())
- require.Equal(t,
"[{\"a\":[1,91,2,3],\"b\":{\"a\":[4,91,5,6,7],\"c\":2},\"c\":[1,2,3,4],\"e\":[6,90,80,81,82,83,7,8],\"f\":{\"a\":[10,91,11,12,13,14],\"g\":2}}]",
rdb.Do(ctx, "JSON.GET", "a", "$").Val())
+ EqualJSON(t,
"[{\"a\":[1,91,2,3],\"b\":{\"a\":[4,91,5,6,7],\"c\":2},\"c\":[1,2,3,4],\"e\":[6,90,80,81,82,83,7,8],\"f\":{\"a\":[10,91,11,12,13,14],\"g\":2}}]",
rdb.Do(ctx, "JSON.GET", "a", "$").Val())
// json path has many array and one is not array
require.EqualValues(t, []interface{}{int64(5), nil},
rdb.Do(ctx, arrInsertCmd, "a", "$..c", 0, 92).Val())
- require.Equal(t,
"[{\"a\":[1,91,2,3],\"b\":{\"a\":[4,91,5,6,7],\"c\":2},\"c\":[92,1,2,3,4],\"e\":[6,90,80,81,82,83,7,8],\"f\":{\"a\":[10,91,11,12,13,14],\"g\":2}}]",
rdb.Do(ctx, "JSON.GET", "a", "$").Val())
+ EqualJSON(t,
"[{\"a\":[1,91,2,3],\"b\":{\"a\":[4,91,5,6,7],\"c\":2},\"c\":[92,1,2,3,4],\"e\":[6,90,80,81,82,83,7,8],\"f\":{\"a\":[10,91,11,12,13,14],\"g\":2}}]",
rdb.Do(ctx, "JSON.GET", "a", "$").Val())
// index = 0
require.EqualValues(t, []interface{}{int64(9)}, rdb.Do(ctx,
arrInsertCmd, "a", "$.e", 0, 93).Val())
- require.Equal(t,
"[{\"a\":[1,91,2,3],\"b\":{\"a\":[4,91,5,6,7],\"c\":2},\"c\":[92,1,2,3,4],\"e\":[93,6,90,80,81,82,83,7,8],\"f\":{\"a\":[10,91,11,12,13,14],\"g\":2}}]",
rdb.Do(ctx, "JSON.GET", "a", "$").Val())
+ EqualJSON(t,
"[{\"a\":[1,91,2,3],\"b\":{\"a\":[4,91,5,6,7],\"c\":2},\"c\":[92,1,2,3,4],\"e\":[93,6,90,80,81,82,83,7,8],\"f\":{\"a\":[10,91,11,12,13,14],\"g\":2}}]",
rdb.Do(ctx, "JSON.GET", "a", "$").Val())
// index < 0
require.EqualValues(t, []interface{}{int64(10)}, rdb.Do(ctx,
arrInsertCmd, "a", "$.e", -2, 94).Val())
- require.Equal(t,
"[{\"a\":[1,91,2,3],\"b\":{\"a\":[4,91,5,6,7],\"c\":2},\"c\":[92,1,2,3,4],\"e\":[93,6,90,80,81,82,83,94,7,8],\"f\":{\"a\":[10,91,11,12,13,14],\"g\":2}}]",
rdb.Do(ctx, "JSON.GET", "a", "$").Val())
+ EqualJSON(t,
"[{\"a\":[1,91,2,3],\"b\":{\"a\":[4,91,5,6,7],\"c\":2},\"c\":[92,1,2,3,4],\"e\":[93,6,90,80,81,82,83,94,7,8],\"f\":{\"a\":[10,91,11,12,13,14],\"g\":2}}]",
rdb.Do(ctx, "JSON.GET", "a", "$").Val())
// index >= len
require.EqualValues(t, []interface{}{nil}, rdb.Do(ctx,
arrInsertCmd, "a", "$.e", 15, 95).Val())
- require.Equal(t,
"[{\"a\":[1,91,2,3],\"b\":{\"a\":[4,91,5,6,7],\"c\":2},\"c\":[92,1,2,3,4],\"e\":[93,6,90,80,81,82,83,94,7,8],\"f\":{\"a\":[10,91,11,12,13,14],\"g\":2}}]",
rdb.Do(ctx, "JSON.GET", "a", "$").Val())
+ EqualJSON(t,
"[{\"a\":[1,91,2,3],\"b\":{\"a\":[4,91,5,6,7],\"c\":2},\"c\":[92,1,2,3,4],\"e\":[93,6,90,80,81,82,83,94,7,8],\"f\":{\"a\":[10,91,11,12,13,14],\"g\":2}}]",
rdb.Do(ctx, "JSON.GET", "a", "$").Val())
// index + len < 0
require.EqualValues(t, []interface{}{nil}, rdb.Do(ctx,
arrInsertCmd, "a", "$", -15, 96).Val())
- require.Equal(t,
"[{\"a\":[1,91,2,3],\"b\":{\"a\":[4,91,5,6,7],\"c\":2},\"c\":[92,1,2,3,4],\"e\":[93,6,90,80,81,82,83,94,7,8],\"f\":{\"a\":[10,91,11,12,13,14],\"g\":2}}]",
rdb.Do(ctx, "JSON.GET", "a", "$").Val())
+ EqualJSON(t,
"[{\"a\":[1,91,2,3],\"b\":{\"a\":[4,91,5,6,7],\"c\":2},\"c\":[92,1,2,3,4],\"e\":[93,6,90,80,81,82,83,94,7,8],\"f\":{\"a\":[10,91,11,12,13,14],\"g\":2}}]",
rdb.Do(ctx, "JSON.GET", "a", "$").Val())
})
@@ -441,27 +441,27 @@ func TestJson(t *testing.T) {
require.NoError(t, rdb.Do(ctx, "JSON.SET", "a", "$",
`{"bool":true}`).Err())
require.EqualValues(t, []interface{}{int64(0)}, rdb.Do(ctx,
"JSON.TOGGLE", "a", "$.bool").Val())
- require.Equal(t, `{"bool":false}`, rdb.Do(ctx, "JSON.GET",
"a").Val())
+ EqualJSON(t, `{"bool":false}`, rdb.Do(ctx, "JSON.GET",
"a").Val())
require.NoError(t, rdb.Do(ctx, "JSON.SET", "a", "$",
`{"bool":true,"bools":{"bool":true}}`).Err())
require.EqualValues(t, []interface{}{int64(0)}, rdb.Do(ctx,
"JSON.TOGGLE", "a", "$.bool").Val())
- require.Equal(t, `{"bool":false,"bools":{"bool":true}}`,
rdb.Do(ctx, "JSON.GET", "a").Val())
+ EqualJSON(t, `{"bool":false,"bools":{"bool":true}}`,
rdb.Do(ctx, "JSON.GET", "a").Val())
require.NoError(t, rdb.Do(ctx, "JSON.SET", "a", "$",
`{"bool":true,"bools":{"bool":true}}`).Err())
require.EqualValues(t, []interface{}{int64(0), int64(0)},
rdb.Do(ctx, "JSON.TOGGLE", "a", "$..bool").Val())
- require.Equal(t, `{"bool":false,"bools":{"bool":false}}`,
rdb.Do(ctx, "JSON.GET", "a").Val())
+ EqualJSON(t, `{"bool":false,"bools":{"bool":false}}`,
rdb.Do(ctx, "JSON.GET", "a").Val())
require.NoError(t, rdb.Do(ctx, "JSON.SET", "a", "$",
`{"bool":false,"bools":{"bool":true}}`).Err())
require.EqualValues(t, []interface{}{int64(1), int64(0)},
rdb.Do(ctx, "JSON.TOGGLE", "a", "$..bool").Val())
- require.Equal(t, `{"bool":true,"bools":{"bool":false}}`,
rdb.Do(ctx, "JSON.GET", "a").Val())
+ EqualJSON(t, `{"bool":true,"bools":{"bool":false}}`,
rdb.Do(ctx, "JSON.GET", "a").Val())
require.NoError(t, rdb.Do(ctx, "JSON.SET", "a", "$",
`{"incorrectbool":99,"bools":{"bool":true},"bool":{"bool":false}}`).Err())
require.EqualValues(t, []interface{}{nil, int64(1), int64(0)},
rdb.Do(ctx, "JSON.TOGGLE", "a", "$..bool").Val())
- require.Equal(t,
`{"bool":{"bool":true},"bools":{"bool":false},"incorrectbool":99}`, rdb.Do(ctx,
"JSON.GET", "a").Val())
+ EqualJSON(t,
`{"bool":{"bool":true},"bools":{"bool":false},"incorrectbool":99}`, rdb.Do(ctx,
"JSON.GET", "a").Val())
require.NoError(t, rdb.Do(ctx, "JSON.SET", "a", "$",
`[99,true,99]`).Err())
require.EqualValues(t, []interface{}{nil, int64(0), nil},
rdb.Do(ctx, "JSON.TOGGLE", "a", "$..*").Val())
- require.Equal(t, `[99,false,99]`, rdb.Do(ctx, "JSON.GET",
"a").Val())
+ EqualJSON(t, `[99,false,99]`, rdb.Do(ctx, "JSON.GET",
"a").Val())
})
t.Run("JSON.ARRINDEX basics", func(t *testing.T) {
@@ -505,23 +505,23 @@ func TestJson(t *testing.T) {
t.Run("JSON.NUMOP basics", func(t *testing.T) {
require.NoError(t, rdb.Do(ctx, "JSON.SET", "a", "$", `{ "foo":
0, "bar": "baz" }`).Err())
- require.Equal(t, `[1]`, rdb.Do(ctx, "JSON.NUMINCRBY", "a",
"$.foo", 1).Val())
- require.Equal(t, `[1]`, rdb.Do(ctx, "JSON.GET", "a",
"$.foo").Val())
- require.Equal(t, `[3]`, rdb.Do(ctx, "JSON.NUMINCRBY", "a",
"$.foo", 2).Val())
- require.Equal(t, `[3.5]`, rdb.Do(ctx, "JSON.NUMINCRBY", "a",
"$.foo", 0.5).Val())
+ EqualJSON(t, `[1]`, rdb.Do(ctx, "JSON.NUMINCRBY", "a", "$.foo",
1).Val())
+ EqualJSON(t, `[1]`, rdb.Do(ctx, "JSON.GET", "a", "$.foo").Val())
+ EqualJSON(t, `[3]`, rdb.Do(ctx, "JSON.NUMINCRBY", "a", "$.foo",
2).Val())
+ EqualJSON(t, `[3.5]`, rdb.Do(ctx, "JSON.NUMINCRBY", "a",
"$.foo", 0.5).Val())
// wrong type
require.Equal(t, `[null]`, rdb.Do(ctx, "JSON.NUMINCRBY", "a",
"$.bar", 1).Val())
- require.Equal(t, `[]`, rdb.Do(ctx, "JSON.NUMINCRBY", "a",
"$.fuzz", 1).Val())
+ EqualJSON(t, `[]`, rdb.Do(ctx, "JSON.NUMINCRBY", "a", "$.fuzz",
1).Val())
require.NoError(t, rdb.Do(ctx, "JSON.SET", "a", "$", `0`).Err())
- require.Equal(t, `[1]`, rdb.Do(ctx, "JSON.NUMINCRBY", "a", "$",
1).Val())
- require.Equal(t, `[2.5]`, rdb.Do(ctx, "JSON.NUMINCRBY", "a",
"$", 1.5).Val())
+ EqualJSON(t, `[1]`, rdb.Do(ctx, "JSON.NUMINCRBY", "a", "$",
1).Val())
+ EqualJSON(t, `[2.5]`, rdb.Do(ctx, "JSON.NUMINCRBY", "a", "$",
1.5).Val())
require.NoError(t, rdb.Do(ctx, "JSON.SET", "a", "$",
`{"foo":0,"bar":42}`).Err())
- require.Equal(t, `[1]`, rdb.Do(ctx, "JSON.NUMINCRBY", "a",
"$.foo", 1).Val())
- require.Equal(t, `[84]`, rdb.Do(ctx, "JSON.NUMMULTBY", "a",
"$.bar", 2).Val())
+ EqualJSON(t, `[1]`, rdb.Do(ctx, "JSON.NUMINCRBY", "a", "$.foo",
1).Val())
+ EqualJSON(t, `[84]`, rdb.Do(ctx, "JSON.NUMMULTBY", "a",
"$.bar", 2).Val())
// overflow case
require.NoError(t, rdb.Do(ctx, "JSON.SET", "big_num", "$",
"1.6350000000001313e+308").Err())
@@ -605,7 +605,6 @@ func TestJson(t *testing.T) {
require.Equal(t, 2, len(vals))
require.EqualValues(t, "[null]", vals[0])
require.EqualValues(t, "[null]", vals[1])
-
vals, err = rdb.Do(ctx, "JSON.MGET", "a0", "a1",
"$.nonexists").Slice()
require.NoError(t, err)
require.Equal(t, 2, len(vals))
@@ -614,3 +613,7 @@ func TestJson(t *testing.T) {
})
}
+
+func EqualJSON(t *testing.T, expected string, actual interface{}) {
+ require.JSONEq(t, expected, actual.(string))
+}