diff options
Diffstat (limited to 'src/mongo/db/query/lite_parsed_query_test.cpp')
-rw-r--r-- | src/mongo/db/query/lite_parsed_query_test.cpp | 70 |
1 files changed, 27 insertions, 43 deletions
diff --git a/src/mongo/db/query/lite_parsed_query_test.cpp b/src/mongo/db/query/lite_parsed_query_test.cpp index b0fd0c5591f..c6120ee247f 100644 --- a/src/mongo/db/query/lite_parsed_query_test.cpp +++ b/src/mongo/db/query/lite_parsed_query_test.cpp @@ -216,59 +216,43 @@ namespace { ASSERT_FALSE(isFirstElementTextScoreMeta("{a: {$meta: \"textScore\", b: 1}}")); } - void testSortOrder(bool expectedValid, const char* expectedStr, const char* sortStr) { - BSONObj sortOrder = fromjson(sortStr); - bool valid = LiteParsedQuery::isValidSortOrder(sortOrder); - if (expectedValid != valid) { - mongoutils::str::stream ss; - ss << sortStr << ": unexpected validation result. Expected: " << expectedValid; - FAIL(ss); - } - BSONObj normalizedSortOrder = LiteParsedQuery::normalizeSortOrder(sortOrder); - if (fromjson(expectedStr) != normalizedSortOrder) { - mongoutils::str::stream ss; - ss << sortStr << ": unexpected normalization result. Expected: " << expectedStr - << ". Actual: " << normalizedSortOrder.toString(); - FAIL(ss); - } - } - // - // Sort order validation and normalization + // Sort order validation // In a valid sort order, each element satisfies one of: // 1. a number with value 1 // 2. a number with value -1 // 3. isTextScoreMeta // - TEST(LiteParsedQueryTest, NormalizeAndValidateSortOrder) { + TEST(LiteParsedQueryTest, ValidateSortOrder) { // Valid sorts - testSortOrder(true, "{}", "{}"); - testSortOrder(true, "{a: 1}", "{a: 1}"); - testSortOrder(true, "{a: -1}", "{a: -1}"); - testSortOrder(true, "{a: {$meta: \"textScore\"}}", "{a: {$meta: \"textScore\"}}"); + ASSERT(LiteParsedQuery::isValidSortOrder(fromjson("{}"))); + ASSERT(LiteParsedQuery::isValidSortOrder(fromjson("{a: 1}"))); + ASSERT(LiteParsedQuery::isValidSortOrder(fromjson("{a: -1}"))); + ASSERT(LiteParsedQuery::isValidSortOrder(fromjson("{a: {$meta: \"textScore\"}}"))); // Invalid sorts - testSortOrder(false, "{a: 1}", "{a: 100}"); - testSortOrder(false, "{a: 1}", "{a: 0}"); - testSortOrder(false, "{a: -1}", "{a: -100}"); - testSortOrder(false, "{a: 1}", "{a: Infinity}"); - testSortOrder(false, "{a: -1}", "{a: -Infinity}"); - testSortOrder(false, "{a: 1}", "{a: true}"); - testSortOrder(false, "{a: 1}", "{a: false}"); - testSortOrder(false, "{a: 1}", "{a: null}"); - testSortOrder(false, "{a: 1}", "{a: {}}"); - testSortOrder(false, "{a: 1}", "{a: {b: 1}}"); - testSortOrder(false, "{a: 1}", "{a: []}"); - testSortOrder(false, "{a: 1}", "{a: [1, 2, 3]}"); - testSortOrder(false, "{a: 1}", "{a: \"\"}"); - testSortOrder(false, "{a: 1}", "{a: \"bb\"}"); - testSortOrder(false, "{a: 1}", "{a: {$meta: 1}}"); - testSortOrder(false, "{a: 1}", "{a: {$meta: \"image\"}}"); - testSortOrder(false, "{a: 1}", "{a: {$world: \"textScore\"}}"); - testSortOrder(false, "{a: 1}", "{a: {$meta: \"textScore\", b: 1}}"); - testSortOrder(false, "{'': 1}", "{'': 1}"); - testSortOrder(false, "{'': -1}", "{'': -1}"); + ASSERT_FALSE(LiteParsedQuery::isValidSortOrder(fromjson("{a: 100}"))); + ASSERT_FALSE(LiteParsedQuery::isValidSortOrder(fromjson("{a: 0}"))); + ASSERT_FALSE(LiteParsedQuery::isValidSortOrder(fromjson("{a: -100}"))); + ASSERT_FALSE(LiteParsedQuery::isValidSortOrder(fromjson("{a: Infinity}"))); + ASSERT_FALSE(LiteParsedQuery::isValidSortOrder(fromjson("{a: -Infinity}"))); + ASSERT_FALSE(LiteParsedQuery::isValidSortOrder(fromjson("{a: true}"))); + ASSERT_FALSE(LiteParsedQuery::isValidSortOrder(fromjson("{a: false}"))); + ASSERT_FALSE(LiteParsedQuery::isValidSortOrder(fromjson("{a: null}"))); + ASSERT_FALSE(LiteParsedQuery::isValidSortOrder(fromjson("{a: {}}"))); + ASSERT_FALSE(LiteParsedQuery::isValidSortOrder(fromjson("{a: {b: 1}}"))); + ASSERT_FALSE(LiteParsedQuery::isValidSortOrder(fromjson("{a: []}"))); + ASSERT_FALSE(LiteParsedQuery::isValidSortOrder(fromjson("{a: [1, 2, 3]}"))); + ASSERT_FALSE(LiteParsedQuery::isValidSortOrder(fromjson("{a: \"\"}"))); + ASSERT_FALSE(LiteParsedQuery::isValidSortOrder(fromjson("{a: \"bb\"}"))); + ASSERT_FALSE(LiteParsedQuery::isValidSortOrder(fromjson("{a: {$meta: 1}}"))); + ASSERT_FALSE(LiteParsedQuery::isValidSortOrder(fromjson("{a: {$meta: \"image\"}}"))); + ASSERT_FALSE(LiteParsedQuery::isValidSortOrder(fromjson("{a: {$world: \"textScore\"}}"))); + ASSERT_FALSE(LiteParsedQuery::isValidSortOrder(fromjson("{a: {$meta: \"textScore\"," + " b: 1}}"))); + ASSERT_FALSE(LiteParsedQuery::isValidSortOrder(fromjson("{'': 1}"))); + ASSERT_FALSE(LiteParsedQuery::isValidSortOrder(fromjson("{'': -1}"))); } // |