From 2ceea9b66eb8ea516702e1ef409e801fec068682 Mon Sep 17 00:00:00 2001 From: zxu Date: Thu, 12 Apr 2018 21:32:19 -0400 Subject: Port `Precondition` to C++ (#1040) * port FieldMask to C++ * address changes * address changes * fix test * address change * Port transform operations (FSTTransformOperation, FSTServerTimestampTransform) to C++ * address changes * address changes * address changes * implement `FieldTransform` in C++ * port `FieldTransform` * make `fieldTransforms` shared inside `context` * Implement Precondition in C++ w/o test yet * add unit test for `Precondition` * port `Precondition` * address changes * address changes * fix bugs for integration test * address changes * fix lint * address changes * address changes --- .../test/firebase/firestore/testutil/testutil.h | 29 ++++++++++++++++++++++ 1 file changed, 29 insertions(+) (limited to 'Firestore/core/test/firebase/firestore/testutil') diff --git a/Firestore/core/test/firebase/firestore/testutil/testutil.h b/Firestore/core/test/firebase/firestore/testutil/testutil.h index 9c69784..9a875f4 100644 --- a/Firestore/core/test/firebase/firestore/testutil/testutil.h +++ b/Firestore/core/test/firebase/firestore/testutil/testutil.h @@ -17,9 +17,16 @@ #ifndef FIRESTORE_CORE_TEST_FIREBASE_FIRESTORE_TESTUTIL_TESTUTIL_H_ #define FIRESTORE_CORE_TEST_FIREBASE_FIRESTORE_TESTUTIL_TESTUTIL_H_ +#include // NOLINT(build/c++11) +#include + +#include "Firestore/core/include/firebase/firestore/timestamp.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/no_document.h" #include "Firestore/core/src/firebase/firestore/model/resource_path.h" +#include "Firestore/core/src/firebase/firestore/model/snapshot_version.h" #include "absl/strings/string_view.h" namespace firebase { @@ -40,6 +47,28 @@ inline model::ResourcePath Resource(absl::string_view field) { return model::ResourcePath::FromString(field); } +/** + * Creates a snapshot version from the given version timestamp. + * + * @param version a timestamp in microseconds since the epoch. + */ +inline model::SnapshotVersion Version(int64_t version) { + namespace chr = std::chrono; + auto timepoint = + chr::time_point(chr::microseconds(version)); + return model::SnapshotVersion{Timestamp::FromTimePoint(timepoint)}; +} + +inline model::Document Doc(absl::string_view key, int64_t version) { + return model::Document{model::FieldValue::ObjectValueFromMap({}), Key(key), + Version(version), + /* has_local_mutations= */ false}; +} + +inline model::NoDocument DeletedDoc(absl::string_view key, int64_t version) { + return model::NoDocument{Key(key), Version(version)}; +} + // 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