From 890321214cc8340c9eb02712f63799085f3ea112 Mon Sep 17 00:00:00 2001 From: rsgowman Date: Tue, 17 Jul 2018 10:28:25 -0400 Subject: Port PrimitiveValueTest test for core::Query (#1530) (From java.) Also fix a bug uncovered by the test. (oops) --- .../test/firebase/firestore/core/query_test.cc | 30 ++++++++++++++++++++++ .../test/firebase/firestore/testutil/testutil.h | 6 +++++ 2 files changed, 36 insertions(+) (limited to 'Firestore/core/test') diff --git a/Firestore/core/test/firebase/firestore/core/query_test.cc b/Firestore/core/test/firebase/firestore/core/query_test.cc index 6099bee..b821f7f 100644 --- a/Firestore/core/test/firebase/firestore/core/query_test.cc +++ b/Firestore/core/test/firebase/firestore/core/query_test.cc @@ -29,6 +29,7 @@ namespace core { using model::Document; using model::FieldValue; +using model::ResourcePath; using testutil::Doc; using testutil::Filter; @@ -67,6 +68,35 @@ TEST(QueryTest, EmptyFieldsAreAllowedForQueries) { EXPECT_FALSE(query.Matches(doc2)); } +TEST(QueryTest, PrimitiveValueFilter) { + Query query1 = Query::AtPath(ResourcePath::FromString("collection")) + .Filter(Filter("sort", ">=", 2)); + Query query2 = Query::AtPath(ResourcePath::FromString("collection")) + .Filter(Filter("sort", "<=", 2)); + + Document doc1 = + Doc("collection/1", 0, {{"sort", FieldValue::IntegerValue(1)}}); + Document doc2 = + Doc("collection/2", 0, {{"sort", FieldValue::IntegerValue(2)}}); + Document doc3 = + Doc("collection/3", 0, {{"sort", FieldValue::IntegerValue(3)}}); + Document doc4 = Doc("collection/4", 0, {{"sort", FieldValue::FalseValue()}}); + Document doc5 = + Doc("collection/5", 0, {{"sort", FieldValue::StringValue("string")}}); + + EXPECT_FALSE(query1.Matches(doc1)); + EXPECT_TRUE(query1.Matches(doc2)); + EXPECT_TRUE(query1.Matches(doc3)); + EXPECT_FALSE(query1.Matches(doc4)); + EXPECT_FALSE(query1.Matches(doc5)); + + EXPECT_TRUE(query2.Matches(doc1)); + EXPECT_TRUE(query2.Matches(doc2)); + EXPECT_FALSE(query2.Matches(doc3)); + EXPECT_FALSE(query2.Matches(doc4)); + EXPECT_FALSE(query2.Matches(doc5)); +} + } // namespace core } // namespace firestore } // namespace firebase diff --git a/Firestore/core/test/firebase/firestore/testutil/testutil.h b/Firestore/core/test/firebase/firestore/testutil/testutil.h index f13c1b7..10f8a7a 100644 --- a/Firestore/core/test/firebase/firestore/testutil/testutil.h +++ b/Firestore/core/test/firebase/firestore/testutil/testutil.h @@ -105,6 +105,12 @@ inline std::shared_ptr Filter(absl::string_view key, return Filter(key, op, model::FieldValue::StringValue(value)); } +inline std::shared_ptr Filter(absl::string_view key, + absl::string_view op, + int value) { + return Filter(key, op, model::FieldValue::IntegerValue(value)); +} + // Add a non-inline function to make this library buildable. // TODO(zxu123): remove once there is non-inline function. void dummy(); -- cgit v1.2.3