diff options
| author | joeslay <54322500+joeslay@users.noreply.github.com> | 2019-10-14 16:03:40 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2019-10-14 16:03:40 +0100 |
| commit | d53aee179b6624b981caa7e702425ec260808be9 (patch) | |
| tree | 0e641a775fe2ba398283282b9f9a109986e41f58 /weed/query/json/query_json_test.go | |
| parent | baa813ee3012d52a4b861cb61a2ef87f94e5b127 (diff) | |
| parent | 50e885da45a58180eeb0098e5446d252181964fc (diff) | |
| download | seaweedfs-d53aee179b6624b981caa7e702425ec260808be9.tar.xz seaweedfs-d53aee179b6624b981caa7e702425ec260808be9.zip | |
Merge pull request #10 from chrislusf/master
merge seaweed master
Diffstat (limited to 'weed/query/json/query_json_test.go')
| -rw-r--r-- | weed/query/json/query_json_test.go | 133 |
1 files changed, 133 insertions, 0 deletions
diff --git a/weed/query/json/query_json_test.go b/weed/query/json/query_json_test.go new file mode 100644 index 000000000..1794bb333 --- /dev/null +++ b/weed/query/json/query_json_test.go @@ -0,0 +1,133 @@ +package json + +import ( + "testing" + + "github.com/tidwall/gjson" +) + +func TestGjson(t *testing.T) { + data := ` + { + "quiz": { + "sport": { + "q1": { + "question": "Which one is correct team name in NBA?", + "options": [ + "New York Bulls", + "Los Angeles Kings", + "Golden State Warriros", + "Huston Rocket" + ], + "answer": "Huston Rocket" + } + }, + "maths": { + "q1": { + "question": "5 + 7 = ?", + "options": [ + "10", + "11", + "12", + "13" + ], + "answer": "12" + }, + "q2": { + "question": "12 - 8 = ?", + "options": [ + "1", + "2", + "3", + "4" + ], + "answer": "4" + } + } + } + } + + { + "fruit": "Apple", + "size": "Large", + "quiz": "Red" + } + +` + + projections := []string{"quiz", "fruit"} + + gjson.ForEachLine(data, func(line gjson.Result) bool { + println(line.Raw) + println("+++++++++++") + results := gjson.GetMany(line.Raw, projections...) + for _, result := range results { + println(result.Index, result.Type, result.String()) + } + println("-----------") + return true + }) + +} + +func TestJsonQueryRow(t *testing.T) { + + data := ` + { + "fruit": "Bl\"ue", + "size": 6, + "quiz": "green" + } + +` + selections := []string{"fruit", "size"} + + isFiltered, values := QueryJson(data, selections, Query{ + Field: "quiz", + Op: "=", + Value: "green", + }) + + if !isFiltered { + t.Errorf("should have been filtered") + } + + if values == nil { + t.Errorf("values should have been returned") + } + + buf := ToJson(nil, selections, values) + println(string(buf)) + +} + +func TestJsonQueryNumber(t *testing.T) { + + data := ` + { + "fruit": "Bl\"ue", + "size": 6, + "quiz": "green" + } + +` + selections := []string{"fruit", "quiz"} + + isFiltered, values := QueryJson(data, selections, Query{ + Field: "size", + Op: ">=", + Value: "6", + }) + + if !isFiltered { + t.Errorf("should have been filtered") + } + + if values == nil { + t.Errorf("values should have been returned") + } + + buf := ToJson(nil, selections, values) + println(string(buf)) + +} |
