aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/zencore/compactbinaryjson.cpp34
1 files changed, 34 insertions, 0 deletions
diff --git a/src/zencore/compactbinaryjson.cpp b/src/zencore/compactbinaryjson.cpp
index 02f22ba4d..911e6a3db 100644
--- a/src/zencore/compactbinaryjson.cpp
+++ b/src/zencore/compactbinaryjson.cpp
@@ -877,6 +877,40 @@ TEST_CASE("json.uson")
CHECK(Cb["value"sv].IsHash());
CHECK(Cb["value"sv].AsHash() == Hash);
}
+
+ SUBCASE("cloudquery")
+ {
+ std::string_view QueryJson =
+ "{\"bucketRegex\": \"fortnitegame.staged-build.*\", \"query\": {\"commit\": {\"$lte\": 45375501}, \"type\": {\"$eq\": "
+ "\"staged-build\"}, \"branch\": {\"$eq\": \"fortnite-main\"}, \"platform\": {\"$in\": [\"windows-server\", \"windows\", "
+ "\"windows-client\", \"windows-server\"]}}}";
+ CbObject Cb = LoadCompactBinaryFromJson(QueryJson).AsObject();
+ CHECK_EQ(Cb["bucketRegex"sv].AsString(), "fortnitegame.staged-build.*");
+ CbObjectView Query = Cb["query"sv].AsObjectView();
+ CHECK(Query);
+ CbObjectView Commit = Query["commit"sv].AsObjectView();
+ CHECK(Commit);
+ CHECK_EQ(Commit["$lte"sv].AsDouble(), 45375501.0);
+ CbObjectView Type = Query["type"sv].AsObjectView();
+ CHECK(Type);
+ CHECK_EQ(Type["$eq"sv].AsString(), "staged-build");
+ CbObjectView Branch = Query["branch"sv].AsObjectView();
+ CHECK(Branch);
+ CHECK_EQ(Branch["$eq"sv].AsString(), "fortnite-main");
+ CbObjectView Platform = Query["platform"sv].AsObjectView();
+ CHECK(Platform);
+ CbArrayView In = Platform["$in"sv].AsArrayView();
+ CHECK(In);
+ CHECK_EQ(In.Num(), 4);
+ auto ArrayIt = In.CreateViewIterator();
+ CHECK_EQ(ArrayIt.AsString(), "windows-server");
+ ArrayIt++;
+ CHECK_EQ(ArrayIt.AsString(), "windows");
+ ArrayIt++;
+ CHECK_EQ(ArrayIt.AsString(), "windows-client");
+ ArrayIt++;
+ CHECK_EQ(ArrayIt.AsString(), "windows-server");
+ }
}
#endif // ZEN_WITH_TESTS