aboutsummaryrefslogtreecommitdiffhomepage
path: root/Firestore/core/test/firebase/firestore/testutil/testutil.h
diff options
context:
space:
mode:
authorGravatar rsgowman <rgowman@google.com>2018-07-13 16:22:07 -0400
committerGravatar GitHub <noreply@github.com>2018-07-13 16:22:07 -0400
commit920cfbfa998ca9d04cce5f7731aced7e950a3477 (patch)
tree76f62fa05240d533477707bb4cd26df6808cd523 /Firestore/core/test/firebase/firestore/testutil/testutil.h
parent81ec26d4ff2f9cc295bf057167a649a34a7a11aa (diff)
Initial (incomplete) implementation of f:f:core::Filter (#1495)
And RelationFilter subclass. Used to implement the next step in core::Query.
Diffstat (limited to 'Firestore/core/test/firebase/firestore/testutil/testutil.h')
-rw-r--r--Firestore/core/test/firebase/firestore/testutil/testutil.h40
1 files changed, 38 insertions, 2 deletions
diff --git a/Firestore/core/test/firebase/firestore/testutil/testutil.h b/Firestore/core/test/firebase/firestore/testutil/testutil.h
index c470250..f13c1b7 100644
--- a/Firestore/core/test/firebase/firestore/testutil/testutil.h
+++ b/Firestore/core/test/firebase/firestore/testutil/testutil.h
@@ -19,14 +19,21 @@
#include <chrono> // NOLINT(build/c++11)
#include <cstdint>
+#include <memory>
+#include <string>
+#include <utility>
#include "Firestore/core/include/firebase/firestore/timestamp.h"
+#include "Firestore/core/src/firebase/firestore/core/relation_filter.h"
#include "Firestore/core/src/firebase/firestore/model/document.h"
#include "Firestore/core/src/firebase/firestore/model/document_key.h"
#include "Firestore/core/src/firebase/firestore/model/field_path.h"
+#include "Firestore/core/src/firebase/firestore/model/field_value.h"
#include "Firestore/core/src/firebase/firestore/model/no_document.h"
#include "Firestore/core/src/firebase/firestore/model/resource_path.h"
#include "Firestore/core/src/firebase/firestore/model/snapshot_version.h"
+#include "Firestore/core/src/firebase/firestore/util/hard_assert.h"
+#include "absl/memory/memory.h"
#include "absl/strings/string_view.h"
namespace firebase {
@@ -59,8 +66,10 @@ inline model::SnapshotVersion Version(int64_t version) {
return model::SnapshotVersion{Timestamp::FromTimePoint(timepoint)};
}
-inline model::Document Doc(absl::string_view key, int64_t version = 0) {
- return model::Document{model::FieldValue::ObjectValueFromMap({}), Key(key),
+inline model::Document Doc(absl::string_view key,
+ int64_t version = 0,
+ const model::ObjectValue::Map& data = {}) {
+ return model::Document{model::FieldValue::ObjectValueFromMap(data), Key(key),
Version(version),
/* has_local_mutations= */ false};
}
@@ -69,6 +78,33 @@ inline model::NoDocument DeletedDoc(absl::string_view key, int64_t version) {
return model::NoDocument{Key(key), Version(version)};
}
+inline core::RelationFilter::Operator OperatorFromString(absl::string_view s) {
+ if (s == "<")
+ return core::RelationFilter::Operator::LessThan;
+ else if (s == "<=")
+ return core::RelationFilter::Operator::LessThanOrEqual;
+ else if (s == "==")
+ return core::RelationFilter::Operator::Equal;
+ else if (s == ">")
+ return core::RelationFilter::Operator::GreaterThan;
+ else if (s == ">=")
+ return core::RelationFilter::Operator::GreaterThanOrEqual;
+ HARD_FAIL("Unknown operator: %s", s);
+}
+
+inline std::shared_ptr<core::Filter> Filter(absl::string_view key,
+ absl::string_view op,
+ model::FieldValue value) {
+ return core::Filter::Create(Field(key), OperatorFromString(op),
+ std::move(value));
+}
+
+inline std::shared_ptr<core::Filter> Filter(absl::string_view key,
+ absl::string_view op,
+ const std::string& value) {
+ return Filter(key, op, model::FieldValue::StringValue(value));
+}
+
// Add a non-inline function to make this library buildable.
// TODO(zxu123): remove once there is non-inline function.
void dummy();