From c601b006a8229e03be5a4da12b0f814d03811c16 Mon Sep 17 00:00:00 2001 From: krunal Date: Wed, 20 Dec 2023 14:39:42 +0530 Subject: [PATCH 1/2] test for float value truncation --- test/collection_faceting_test.cpp | 67 +++++++++++++++++++++++++++++++ 1 file changed, 67 insertions(+) diff --git a/test/collection_faceting_test.cpp b/test/collection_faceting_test.cpp index 3126b047..f0f92ac1 100644 --- a/test/collection_faceting_test.cpp +++ b/test/collection_faceting_test.cpp @@ -2047,4 +2047,71 @@ TEST_F(CollectionFacetingTest, RangeFacetTestWithGroupBy) { ASSERT_EQ(4.5, results["grouped_hits"][1]["group_key"][0]); collectionManager.drop_collection("coll1"); +} + +TEST_F(CollectionFacetingTest, FloatValueTruncation) { + std::vector fields = {field("movie", field_types::STRING, true), + field("rating", field_types::FLOAT, true),}; + Collection *coll1 = collectionManager.create_collection( + "coll1", 1, fields, "", 0, "", {}, {}).get(); + + nlohmann::json doc; + doc["movie"] = "The Shawshank Redemption"; + doc["rating"] = 9.37; + ASSERT_TRUE(coll1->add(doc.dump()).ok()); + + doc["movie"] = "The Godfather"; + doc["rating"] = 9.20; + ASSERT_TRUE(coll1->add(doc.dump()).ok()); + + doc["movie"] = "The Dark Knight"; + doc["rating"] = 9.0; + ASSERT_TRUE(coll1->add(doc.dump()).ok()); + + doc["movie"] = "Inception"; + doc["rating"] = 8.87; + ASSERT_TRUE(coll1->add(doc.dump()).ok()); + + doc["movie"] = "Pulp Fiction"; + doc["rating"] = 8.92; + ASSERT_TRUE(coll1->add(doc.dump()).ok()); + + doc["movie"] = "Good Will Hunting"; + doc["rating"] = 8.33; + ASSERT_TRUE(coll1->add(doc.dump()).ok()); + + auto results = coll1->search("The", {"movie"}, "", {"rating"}, sort_fields, {0}, 10, 1, + FREQUENCY, {false}, 10, spp::sparse_hash_set(), + spp::sparse_hash_set()).get(); + + ASSERT_EQ(3, results["hits"].size()); + ASSERT_EQ(3, results["facet_counts"][0]["counts"].size()); + ASSERT_EQ("9", results["facet_counts"][0]["counts"][0]["value"].get()); + ASSERT_EQ("9.2", results["facet_counts"][0]["counts"][1]["value"].get()); + ASSERT_EQ("9.37", results["facet_counts"][0]["counts"][2]["value"].get()); + + //with filter + results = coll1->search("*", {}, "rating: >8.5", {"rating"}, sort_fields, {0}, 10, 1, + FREQUENCY, {false}, 10, spp::sparse_hash_set(), + spp::sparse_hash_set()).get(); + + ASSERT_EQ(5, results["hits"].size()); + ASSERT_EQ(5, results["facet_counts"][0]["counts"].size()); + ASSERT_EQ("9", results["facet_counts"][0]["counts"][0]["value"].get()); + ASSERT_EQ("9.2", results["facet_counts"][0]["counts"][1]["value"].get()); + ASSERT_EQ("8.92", results["facet_counts"][0]["counts"][2]["value"].get()); + ASSERT_EQ("8.87", results["facet_counts"][0]["counts"][3]["value"].get()); + ASSERT_EQ("9.37", results["facet_counts"][0]["counts"][4]["value"].get()); + + //with filter and group + results = coll1->search("*", {}, "rating: >9", {"rating"}, sort_fields, {0}, 10, 1, + FREQUENCY, {false}, 10, spp::sparse_hash_set(), + spp::sparse_hash_set(), 10, "", + 30, 4, "", 10, {}, + {}, {"rating"}).get(); + + ASSERT_EQ(2, results["grouped_hits"].size()); + ASSERT_EQ(2, results["facet_counts"][0]["counts"].size()); + ASSERT_EQ("9.2", results["facet_counts"][0]["counts"][0]["value"].get()); + ASSERT_EQ("9.37", results["facet_counts"][0]["counts"][1]["value"].get()); } \ No newline at end of file From dd139df28b62be32e4b9b48260d4504ef970dd34 Mon Sep 17 00:00:00 2001 From: krunal Date: Wed, 20 Dec 2023 14:49:46 +0530 Subject: [PATCH 2/2] updating test --- test/collection_faceting_test.cpp | 36 +++++++++++++++---------------- 1 file changed, 18 insertions(+), 18 deletions(-) diff --git a/test/collection_faceting_test.cpp b/test/collection_faceting_test.cpp index f0f92ac1..a5acaade 100644 --- a/test/collection_faceting_test.cpp +++ b/test/collection_faceting_test.cpp @@ -2057,27 +2057,27 @@ TEST_F(CollectionFacetingTest, FloatValueTruncation) { nlohmann::json doc; doc["movie"] = "The Shawshank Redemption"; - doc["rating"] = 9.37; + doc["rating"] = 93.7; ASSERT_TRUE(coll1->add(doc.dump()).ok()); doc["movie"] = "The Godfather"; - doc["rating"] = 9.20; + doc["rating"] = 92.0; ASSERT_TRUE(coll1->add(doc.dump()).ok()); doc["movie"] = "The Dark Knight"; - doc["rating"] = 9.0; + doc["rating"] = 90; ASSERT_TRUE(coll1->add(doc.dump()).ok()); doc["movie"] = "Inception"; - doc["rating"] = 8.87; + doc["rating"] = 88.7; ASSERT_TRUE(coll1->add(doc.dump()).ok()); doc["movie"] = "Pulp Fiction"; - doc["rating"] = 8.92; + doc["rating"] = 89.2; ASSERT_TRUE(coll1->add(doc.dump()).ok()); doc["movie"] = "Good Will Hunting"; - doc["rating"] = 8.33; + doc["rating"] = 83.3; ASSERT_TRUE(coll1->add(doc.dump()).ok()); auto results = coll1->search("The", {"movie"}, "", {"rating"}, sort_fields, {0}, 10, 1, @@ -2086,25 +2086,25 @@ TEST_F(CollectionFacetingTest, FloatValueTruncation) { ASSERT_EQ(3, results["hits"].size()); ASSERT_EQ(3, results["facet_counts"][0]["counts"].size()); - ASSERT_EQ("9", results["facet_counts"][0]["counts"][0]["value"].get()); - ASSERT_EQ("9.2", results["facet_counts"][0]["counts"][1]["value"].get()); - ASSERT_EQ("9.37", results["facet_counts"][0]["counts"][2]["value"].get()); + ASSERT_EQ("90", results["facet_counts"][0]["counts"][0]["value"].get()); + ASSERT_EQ("92", results["facet_counts"][0]["counts"][1]["value"].get()); + ASSERT_EQ("93.7", results["facet_counts"][0]["counts"][2]["value"].get()); //with filter - results = coll1->search("*", {}, "rating: >8.5", {"rating"}, sort_fields, {0}, 10, 1, + results = coll1->search("*", {}, "rating: >85", {"rating"}, sort_fields, {0}, 10, 1, FREQUENCY, {false}, 10, spp::sparse_hash_set(), spp::sparse_hash_set()).get(); ASSERT_EQ(5, results["hits"].size()); ASSERT_EQ(5, results["facet_counts"][0]["counts"].size()); - ASSERT_EQ("9", results["facet_counts"][0]["counts"][0]["value"].get()); - ASSERT_EQ("9.2", results["facet_counts"][0]["counts"][1]["value"].get()); - ASSERT_EQ("8.92", results["facet_counts"][0]["counts"][2]["value"].get()); - ASSERT_EQ("8.87", results["facet_counts"][0]["counts"][3]["value"].get()); - ASSERT_EQ("9.37", results["facet_counts"][0]["counts"][4]["value"].get()); + ASSERT_EQ("90", results["facet_counts"][0]["counts"][0]["value"].get()); + ASSERT_EQ("92", results["facet_counts"][0]["counts"][1]["value"].get()); + ASSERT_EQ("88.7", results["facet_counts"][0]["counts"][2]["value"].get()); + ASSERT_EQ("89.2", results["facet_counts"][0]["counts"][3]["value"].get()); + ASSERT_EQ("93.7", results["facet_counts"][0]["counts"][4]["value"].get()); //with filter and group - results = coll1->search("*", {}, "rating: >9", {"rating"}, sort_fields, {0}, 10, 1, + results = coll1->search("*", {}, "rating: >90", {"rating"}, sort_fields, {0}, 10, 1, FREQUENCY, {false}, 10, spp::sparse_hash_set(), spp::sparse_hash_set(), 10, "", 30, 4, "", 10, {}, @@ -2112,6 +2112,6 @@ TEST_F(CollectionFacetingTest, FloatValueTruncation) { ASSERT_EQ(2, results["grouped_hits"].size()); ASSERT_EQ(2, results["facet_counts"][0]["counts"].size()); - ASSERT_EQ("9.2", results["facet_counts"][0]["counts"][0]["value"].get()); - ASSERT_EQ("9.37", results["facet_counts"][0]["counts"][1]["value"].get()); + ASSERT_EQ("92", results["facet_counts"][0]["counts"][0]["value"].get()); + ASSERT_EQ("93.7", results["facet_counts"][0]["counts"][1]["value"].get()); } \ No newline at end of file