diff options
author | rsgowman <rgowman@google.com> | 2018-07-17 10:28:25 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-07-17 10:28:25 -0400 |
commit | 890321214cc8340c9eb02712f63799085f3ea112 (patch) | |
tree | 77df5efbf17c8f9c56f083a599f37a4fc453e8aa /Firestore/core/test | |
parent | 6ab0195f11e9a0daab46babf7f894bb08b2ae9c3 (diff) |
Port PrimitiveValueTest test for core::Query (#1530)
(From java.)
Also fix a bug uncovered by the test. (oops)
Diffstat (limited to 'Firestore/core/test')
-rw-r--r-- | Firestore/core/test/firebase/firestore/core/query_test.cc | 30 | ||||
-rw-r--r-- | Firestore/core/test/firebase/firestore/testutil/testutil.h | 6 |
2 files changed, 36 insertions, 0 deletions
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<core::Filter> Filter(absl::string_view key, return Filter(key, op, model::FieldValue::StringValue(value)); } +inline std::shared_ptr<core::Filter> 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(); |