aboutsummaryrefslogtreecommitdiffhomepage
path: root/Firestore/core/test
diff options
context:
space:
mode:
authorGravatar rsgowman <rgowman@google.com>2018-07-17 10:28:25 -0400
committerGravatar GitHub <noreply@github.com>2018-07-17 10:28:25 -0400
commit890321214cc8340c9eb02712f63799085f3ea112 (patch)
tree77df5efbf17c8f9c56f083a599f37a4fc453e8aa /Firestore/core/test
parent6ab0195f11e9a0daab46babf7f894bb08b2ae9c3 (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.cc30
-rw-r--r--Firestore/core/test/firebase/firestore/testutil/testutil.h6
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();