aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--Firestore/Example/Firestore.xcodeproj/project.pbxproj50
-rw-r--r--Firestore/Example/Tests/Model/field_transform_test.mm (renamed from Firestore/core/test/firebase/firestore/model/field_transform_test.cc)5
-rw-r--r--Firestore/Example/Tests/Model/transform_operations_test.mm (renamed from Firestore/core/test/firebase/firestore/model/transform_operations_test.cc)16
-rw-r--r--Firestore/Source/Model/FSTMutation.mm4
-rw-r--r--Firestore/core/src/firebase/firestore/model/transform_operations.h101
-rw-r--r--Firestore/core/test/firebase/firestore/model/CMakeLists.txt2
6 files changed, 103 insertions, 75 deletions
diff --git a/Firestore/Example/Firestore.xcodeproj/project.pbxproj b/Firestore/Example/Firestore.xcodeproj/project.pbxproj
index 26b5562..131771b 100644
--- a/Firestore/Example/Firestore.xcodeproj/project.pbxproj
+++ b/Firestore/Example/Firestore.xcodeproj/project.pbxproj
@@ -111,6 +111,13 @@
5492E0CA2021557E00B64F25 /* FSTWatchChangeTests.mm in Sources */ = {isa = PBXBuildFile; fileRef = 5492E0C52021557E00B64F25 /* FSTWatchChangeTests.mm */; };
5495EB032040E90200EBA509 /* CodableGeoPointTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5495EB022040E90200EBA509 /* CodableGeoPointTests.swift */; };
54995F6F205B6E12004EFFA0 /* leveldb_key_test.cc in Sources */ = {isa = PBXBuildFile; fileRef = 54995F6E205B6E12004EFFA0 /* leveldb_key_test.cc */; };
+ 549CCA5020A36DBC00BCEB75 /* sorted_set_test.cc in Sources */ = {isa = PBXBuildFile; fileRef = 549CCA4C20A36DBB00BCEB75 /* sorted_set_test.cc */; };
+ 549CCA5120A36DBC00BCEB75 /* tree_sorted_map_test.cc in Sources */ = {isa = PBXBuildFile; fileRef = 549CCA4D20A36DBB00BCEB75 /* tree_sorted_map_test.cc */; };
+ 549CCA5220A36DBC00BCEB75 /* sorted_map_test.cc in Sources */ = {isa = PBXBuildFile; fileRef = 549CCA4E20A36DBB00BCEB75 /* sorted_map_test.cc */; };
+ 549CCA5720A36E1F00BCEB75 /* field_mask_test.cc in Sources */ = {isa = PBXBuildFile; fileRef = 549CCA5320A36E1F00BCEB75 /* field_mask_test.cc */; };
+ 549CCA5920A36E1F00BCEB75 /* precondition_test.cc in Sources */ = {isa = PBXBuildFile; fileRef = 549CCA5520A36E1F00BCEB75 /* precondition_test.cc */; };
+ 54A0352620A3AED0003E0143 /* field_transform_test.mm in Sources */ = {isa = PBXBuildFile; fileRef = 54A0352320A3AEC3003E0143 /* field_transform_test.mm */; };
+ 54A0352720A3AED0003E0143 /* transform_operations_test.mm in Sources */ = {isa = PBXBuildFile; fileRef = 54A0352220A3AEC3003E0143 /* transform_operations_test.mm */; };
54C2294F1FECABAE007D065B /* log_test.cc in Sources */ = {isa = PBXBuildFile; fileRef = 54C2294E1FECABAE007D065B /* log_test.cc */; };
54DA12A61F315EE100DD57A1 /* collection_spec_test.json in Resources */ = {isa = PBXBuildFile; fileRef = 54DA129C1F315EE100DD57A1 /* collection_spec_test.json */; };
54DA12A71F315EE100DD57A1 /* existence_filter_spec_test.json in Resources */ = {isa = PBXBuildFile; fileRef = 54DA129D1F315EE100DD57A1 /* existence_filter_spec_test.json */; };
@@ -338,6 +345,14 @@
5492E0C52021557E00B64F25 /* FSTWatchChangeTests.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = FSTWatchChangeTests.mm; sourceTree = "<group>"; };
5495EB022040E90200EBA509 /* CodableGeoPointTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CodableGeoPointTests.swift; sourceTree = "<group>"; };
54995F6E205B6E12004EFFA0 /* leveldb_key_test.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = leveldb_key_test.cc; sourceTree = "<group>"; };
+ 549CCA4C20A36DBB00BCEB75 /* sorted_set_test.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = sorted_set_test.cc; sourceTree = "<group>"; };
+ 549CCA4D20A36DBB00BCEB75 /* tree_sorted_map_test.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = tree_sorted_map_test.cc; sourceTree = "<group>"; };
+ 549CCA4E20A36DBB00BCEB75 /* sorted_map_test.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = sorted_map_test.cc; sourceTree = "<group>"; };
+ 549CCA4F20A36DBC00BCEB75 /* testing.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = testing.h; sourceTree = "<group>"; };
+ 549CCA5320A36E1F00BCEB75 /* field_mask_test.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = field_mask_test.cc; sourceTree = "<group>"; };
+ 549CCA5520A36E1F00BCEB75 /* precondition_test.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = precondition_test.cc; sourceTree = "<group>"; };
+ 54A0352220A3AEC3003E0143 /* transform_operations_test.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = transform_operations_test.mm; sourceTree = "<group>"; };
+ 54A0352320A3AEC3003E0143 /* field_transform_test.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = field_transform_test.mm; sourceTree = "<group>"; };
54C2294E1FECABAE007D065B /* log_test.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = log_test.cc; sourceTree = "<group>"; };
54C9EDF12040E16300A969CD /* Firestore_SwiftTests_iOS.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = Firestore_SwiftTests_iOS.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
54C9EDF52040E16300A969CD /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
@@ -519,19 +534,19 @@
54740A561FC913EB00713A1A /* util */ = {
isa = PBXGroup;
children = (
- B6FB4686208F9B9100554BA2 /* async_tests_util.h */,
- B6FB4689208F9B9100554BA2 /* executor_libdispatch_test.mm */,
- B6FB4687208F9B9100554BA2 /* executor_std_test.cc */,
- B6FB4688208F9B9100554BA2 /* executor_test.cc */,
- B6FB468A208F9B9100554BA2 /* executor_test.h */,
+ 548DB926200D590300E00ABC /* assert_test.cc */,
B6FB4680208EA0BE00554BA2 /* async_queue_libdispatch_test.mm */,
B6FB4681208EA0BE00554BA2 /* async_queue_std_test.cc */,
B6FB467B208E9A8200554BA2 /* async_queue_test.cc */,
B6FB467A208E9A8200554BA2 /* async_queue_test.h */,
- 548DB926200D590300E00ABC /* assert_test.cc */,
+ B6FB4686208F9B9100554BA2 /* async_tests_util.h */,
54740A521FC913E500713A1A /* autoid_test.cc */,
AB380D01201BC69F00D97691 /* bits_test.cc */,
548DB928200D59F600E00ABC /* comparison_test.cc */,
+ B6FB4689208F9B9100554BA2 /* executor_libdispatch_test.mm */,
+ B6FB4687208F9B9100554BA2 /* executor_std_test.cc */,
+ B6FB4688208F9B9100554BA2 /* executor_test.cc */,
+ B6FB468A208F9B9100554BA2 /* executor_test.h */,
54511E8D209805F8005BD28F /* hashing_test.cc */,
54C2294E1FECABAE007D065B /* log_test.cc */,
AB380D03201BC6E400D97691 /* ordered_code_test.cc */,
@@ -545,12 +560,12 @@
54764FAC1FAA0C390085E60A /* GoogleTests */ = {
isa = PBXGroup;
children = (
- 546854A720A3681B004BDBD5 /* remote */,
AB38D9312023962A000A432D /* auth */,
AB380CF7201937B800D97691 /* core */,
54EB764B202277970088B8F3 /* immutable */,
54995F70205B6E1A004EFFA0 /* local */,
AB356EF5200E9D1A0089B766 /* model */,
+ 546854A720A3681B004BDBD5 /* remote */,
5467FB05203E652F009C9584 /* testutil */,
54740A561FC913EB00713A1A /* util */,
54764FAE1FAA21B90085E60A /* FSTGoogleTestTests.mm */,
@@ -591,6 +606,10 @@
isa = PBXGroup;
children = (
54EB764C202277B30088B8F3 /* array_sorted_map_test.cc */,
+ 549CCA4E20A36DBB00BCEB75 /* sorted_map_test.cc */,
+ 549CCA4C20A36DBB00BCEB75 /* sorted_set_test.cc */,
+ 549CCA4F20A36DBC00BCEB75 /* testing.h */,
+ 549CCA4D20A36DBB00BCEB75 /* tree_sorted_map_test.cc */,
);
path = immutable;
sourceTree = "<group>";
@@ -735,14 +754,16 @@
AB356EF5200E9D1A0089B766 /* model */ = {
isa = PBXGroup;
children = (
+ AB71064B201FA60300344F18 /* database_id_test.cc */,
B6152AD5202A5385000E5744 /* document_key_test.cc */,
AB6B908320322E4D00CC290A /* document_test.cc */,
- B686F2B02024FFD70028D6BE /* resource_path_test.cc */,
+ 549CCA5320A36E1F00BCEB75 /* field_mask_test.cc */,
B686F2AD2023DDB20028D6BE /* field_path_test.cc */,
- AB71064B201FA60300344F18 /* database_id_test.cc */,
AB356EF6200EA5EB0089B766 /* field_value_test.cc */,
AB6B908520322E6D00CC290A /* maybe_document_test.cc */,
AB6B908720322E8800CC290A /* no_document_test.cc */,
+ 549CCA5520A36E1F00BCEB75 /* precondition_test.cc */,
+ B686F2B02024FFD70028D6BE /* resource_path_test.cc */,
ABA495B9202B7E79008A7851 /* snapshot_version_test.cc */,
);
path = model;
@@ -751,8 +772,8 @@
AB380CF7201937B800D97691 /* core */ = {
isa = PBXGroup;
children = (
- AB380CF82019382300D97691 /* target_id_generator_test.cc */,
AB38D92E20235D22000A432D /* database_info_test.cc */,
+ AB380CF82019382300D97691 /* target_id_generator_test.cc */,
);
path = core;
sourceTree = "<group>";
@@ -826,11 +847,13 @@
DE51B17B1F0D48AC0013853F /* Model */ = {
isa = PBXGroup;
children = (
+ 54A0352320A3AEC3003E0143 /* field_transform_test.mm */,
5492E0B22021555000B64F25 /* FSTDocumentKeyTests.mm */,
5492E0B32021555100B64F25 /* FSTDocumentSetTests.mm */,
5492E0B62021555100B64F25 /* FSTDocumentTests.mm */,
5492E0B82021555100B64F25 /* FSTFieldValueTests.mm */,
5492E0B72021555100B64F25 /* FSTMutationTests.mm */,
+ 54A0352220A3AEC3003E0143 /* transform_operations_test.mm */,
);
path = Model;
sourceTree = "<group>";
@@ -1445,6 +1468,7 @@
DE2EF0881F3D0B6E003D0CDC /* FSTTreeSortedDictionaryTests.m in Sources */,
ABE6637A201FA81900ED349A /* database_id_test.cc in Sources */,
5492E0AF2021552D00B64F25 /* FSTReferenceSetTests.mm in Sources */,
+ 549CCA5120A36DBC00BCEB75 /* tree_sorted_map_test.cc in Sources */,
5492E09E2021552D00B64F25 /* FSTEagerGarbageCollectorTests.mm in Sources */,
5492E0C62021557E00B64F25 /* FSTWatchChange+Testing.mm in Sources */,
5492E064202154B900B64F25 /* FSTQueryListenerTests.mm in Sources */,
@@ -1459,6 +1483,7 @@
5492E058202154AB00B64F25 /* FSTAPIHelpers.mm in Sources */,
AB380CFB2019388600D97691 /* target_id_generator_test.cc in Sources */,
5492E0A82021552D00B64F25 /* FSTLevelDBLocalStoreTests.mm in Sources */,
+ 549CCA5920A36E1F00BCEB75 /* precondition_test.cc in Sources */,
ABC1D7DE2023A05300BA84F0 /* user_test.cc in Sources */,
5491BC721FB44593008B3588 /* FSTIntegrationTestCase.mm in Sources */,
ABC1D7DD2023A04F00BA84F0 /* empty_credentials_provider_test.cc in Sources */,
@@ -1478,8 +1503,10 @@
5436F32420008FAD006E51E3 /* string_printf_test.cc in Sources */,
5492E067202154B900B64F25 /* FSTEventManagerTests.mm in Sources */,
5492E0BF2021555100B64F25 /* FSTFieldValueTests.mm in Sources */,
+ 54A0352620A3AED0003E0143 /* field_transform_test.mm in Sources */,
5492E055202154AB00B64F25 /* FIRDocumentSnapshotTests.mm in Sources */,
5492E03E2021401F00B64F25 /* FSTEventAccumulator.mm in Sources */,
+ 54A0352720A3AED0003E0143 /* transform_operations_test.mm in Sources */,
DE2EF0851F3D0B6E003D0CDC /* FSTArraySortedDictionaryTests.m in Sources */,
5492E0AA2021552D00B64F25 /* FSTLevelDBRemoteDocumentCacheTests.mm in Sources */,
5492E0AC2021552D00B64F25 /* FSTMutationQueueTests.mm in Sources */,
@@ -1515,6 +1542,7 @@
54764FAF1FAA21B90085E60A /* FSTGoogleTestTests.mm in Sources */,
AB380D04201BC6E400D97691 /* ordered_code_test.cc in Sources */,
5492E03F2021401F00B64F25 /* FSTHelpers.mm in Sources */,
+ 549CCA5220A36DBC00BCEB75 /* sorted_map_test.cc in Sources */,
5492E068202154B900B64F25 /* FSTQueryTests.mm in Sources */,
5492E0AB2021552D00B64F25 /* StringViewTests.mm in Sources */,
5492E0C92021557E00B64F25 /* FSTRemoteEventTests.mm in Sources */,
@@ -1532,6 +1560,7 @@
5492E03420213FFC00B64F25 /* FSTMemorySpecTests.mm in Sources */,
AB380D02201BC69F00D97691 /* bits_test.cc in Sources */,
548DB929200D59F600E00ABC /* comparison_test.cc in Sources */,
+ 549CCA5720A36E1F00BCEB75 /* field_mask_test.cc in Sources */,
5492E03D2021401F00B64F25 /* FSTAssertTests.mm in Sources */,
AB38D93020236E21000A432D /* database_info_test.cc in Sources */,
5492E052202154AB00B64F25 /* FIRGeoPointTests.mm in Sources */,
@@ -1540,6 +1569,7 @@
5492E03520213FFC00B64F25 /* FSTSpecTests.mm in Sources */,
5492E057202154AB00B64F25 /* FIRSnapshotMetadataTests.mm in Sources */,
54740A571FC914BA00713A1A /* secure_random_test.cc in Sources */,
+ 549CCA5020A36DBC00BCEB75 /* sorted_set_test.cc in Sources */,
5492E0BE2021555100B64F25 /* FSTMutationTests.mm in Sources */,
132E3E53179DE287D875F3F2 /* FSTLevelDBTransactionTests.mm in Sources */,
);
diff --git a/Firestore/core/test/firebase/firestore/model/field_transform_test.cc b/Firestore/Example/Tests/Model/field_transform_test.mm
index b66aeef..a22a0f3 100644
--- a/Firestore/core/test/firebase/firestore/model/field_transform_test.cc
+++ b/Firestore/Example/Tests/Model/field_transform_test.mm
@@ -26,9 +26,8 @@ namespace firestore {
namespace model {
TEST(FieldTransform, Getter) {
- FieldTransform transform(testutil::Field("foo"),
- absl::make_unique<ServerTimestampTransform>(
- ServerTimestampTransform::Get()));
+ FieldTransform transform{testutil::Field("foo"), absl::make_unique<ServerTimestampTransform>(
+ ServerTimestampTransform::Get())};
EXPECT_EQ(testutil::Field("foo"), transform.path());
EXPECT_EQ(ServerTimestampTransform::Get(), transform.transformation());
diff --git a/Firestore/core/test/firebase/firestore/model/transform_operations_test.cc b/Firestore/Example/Tests/Model/transform_operations_test.mm
index ec0882a..247ea13 100644
--- a/Firestore/core/test/firebase/firestore/model/transform_operations_test.cc
+++ b/Firestore/Example/Tests/Model/transform_operations_test.mm
@@ -31,9 +31,25 @@ class DummyOperation : public TransformOperation {
return Type::Test;
}
+ FSTFieldValue* ApplyToLocalView(FSTFieldValue* /* previousValue */,
+ FIRTimestamp* /* localWriteTime */) const override {
+ return nil;
+ }
+
+ FSTFieldValue* ApplyToRemoteDocument(FSTFieldValue* /* previousValue */,
+ FSTFieldValue* /* transformResult */) const override {
+ return nil;
+ }
+
bool operator==(const TransformOperation& other) const override {
return this == &other;
}
+
+ NSUInteger Hash() const override {
+ // arbitrary number, the same as used in ObjC implementation, since all
+ // instances are equal.
+ return 37;
+ }
};
TEST(TransformOperations, ServerTimestamp) {
diff --git a/Firestore/Source/Model/FSTMutation.mm b/Firestore/Source/Model/FSTMutation.mm
index ee6ef9c..82a535e 100644
--- a/Firestore/Source/Model/FSTMutation.mm
+++ b/Firestore/Source/Model/FSTMutation.mm
@@ -400,7 +400,7 @@ serverTransformResultsWithBaseDocument:(nullable FSTMaybeDocument *)baseDocument
}
[transformResults
- addObject:transform.applyToRemoteDocument(previousValue, serverTransformResults[i])];
+ addObject:transform.ApplyToRemoteDocument(previousValue, serverTransformResults[i])];
}
return transformResults;
}
@@ -426,7 +426,7 @@ serverTransformResultsWithBaseDocument:(nullable FSTMaybeDocument *)baseDocument
previousValue = [((FSTDocument *)baseDocument) fieldForPath:fieldTransform.path()];
}
- [transformResults addObject:transform.applyToLocalView(previousValue, localWriteTime)];
+ [transformResults addObject:transform.ApplyToLocalView(previousValue, localWriteTime)];
}
return transformResults;
}
diff --git a/Firestore/core/src/firebase/firestore/model/transform_operations.h b/Firestore/core/src/firebase/firestore/model/transform_operations.h
index abc8d1b..8eed7ae 100644
--- a/Firestore/core/src/firebase/firestore/model/transform_operations.h
+++ b/Firestore/core/src/firebase/firestore/model/transform_operations.h
@@ -17,14 +17,16 @@
#ifndef FIRESTORE_CORE_SRC_FIREBASE_FIRESTORE_MODEL_TRANSFORM_OPERATIONS_H_
#define FIRESTORE_CORE_SRC_FIREBASE_FIRESTORE_MODEL_TRANSFORM_OPERATIONS_H_
+#if !defined(__OBJC__)
+#error "This header only supports Objective-C++."
+#endif // !defined(__OBJC__)
+
#include <utility>
#include <vector>
-#include "Firestore/core/include/firebase/firestore/timestamp.h"
-
-#if defined(__OBJC__)
#import "Firestore/Source/Model/FSTFieldValue.h"
-#endif
+
+#include "Firestore/core/include/firebase/firestore/timestamp.h"
namespace firebase {
namespace firestore {
@@ -51,36 +53,31 @@ class TransformOperation {
/** Returns the actual type. */
virtual Type type() const = 0;
-// TODO(mikelehen): apply methods require FSTFieldValue which is Obj-C only.
-#if defined(__OBJC__)
/**
* Computes the local transform result against the provided `previousValue`,
* optionally using the provided localWriteTime.
*/
- virtual FSTFieldValue *applyToLocalView(
- FSTFieldValue *previousValue, FIRTimestamp *localWriteTime) const = 0;
+ virtual FSTFieldValue* ApplyToLocalView(
+ FSTFieldValue* previousValue, FIRTimestamp* localWriteTime) const = 0;
/**
* Computes a final transform result after the transform has been acknowledged
* by the server, potentially using the server-provided transformResult.
*/
- virtual FSTFieldValue *applyToRemoteDocument(
- FSTFieldValue *previousValue, FSTFieldValue *transformResult) const = 0;
-#endif
+ virtual FSTFieldValue* ApplyToRemoteDocument(
+ FSTFieldValue* previousValue, FSTFieldValue* transformResult) const = 0;
/** Returns whether the two are equal. */
- virtual bool operator==(const TransformOperation &other) const = 0;
+ virtual bool operator==(const TransformOperation& other) const = 0;
/** Returns whether the two are not equal. */
- bool operator!=(const TransformOperation &other) const {
+ bool operator!=(const TransformOperation& other) const {
return !operator==(other);
}
-#if defined(__OBJC__)
// For Objective-C++ hash; to be removed after migration.
// Do NOT use in C++ code.
virtual NSUInteger Hash() const = 0;
-#endif // defined(__OBJC__)
};
/** Transforms a value into a server-generated timestamp. */
@@ -93,33 +90,29 @@ class ServerTimestampTransform : public TransformOperation {
return Type::ServerTimestamp;
}
-// TODO(mikelehen): apply methods require FSTFieldValue which is Obj-C only.
-#if defined(__OBJC__)
- FSTFieldValue *applyToLocalView(FSTFieldValue *previousValue,
- FIRTimestamp *localWriteTime) const override {
+ FSTFieldValue* ApplyToLocalView(FSTFieldValue* previousValue,
+ FIRTimestamp* localWriteTime) const override {
return [FSTServerTimestampValue
serverTimestampValueWithLocalWriteTime:localWriteTime
previousValue:previousValue];
}
- FSTFieldValue *applyToRemoteDocument(
- FSTFieldValue *previousValue,
- FSTFieldValue *transformResult) const override {
+ FSTFieldValue* ApplyToRemoteDocument(
+ FSTFieldValue* /* previousValue */,
+ FSTFieldValue* transformResult) const override {
return transformResult;
}
-#endif
- bool operator==(const TransformOperation &other) const override {
+ bool operator==(const TransformOperation& other) const override {
// All ServerTimestampTransform objects are equal.
return other.type() == Type::ServerTimestamp;
}
- static const ServerTimestampTransform &Get() {
+ static const ServerTimestampTransform& Get() {
static ServerTimestampTransform shared_instance;
return shared_instance;
}
-#if defined(__OBJC__)
// For Objective-C++ hash; to be removed after migration.
// Do NOT use in C++ code.
NSUInteger Hash() const override {
@@ -127,24 +120,19 @@ class ServerTimestampTransform : public TransformOperation {
// instances are equal.
return 37;
}
-#endif // defined(__OBJC__)
private:
ServerTimestampTransform() {
}
};
-// TODO(mikelehen): ArrayTransform can only be used from Obj-C until we switch
-// to using FieldValue instead of FSTFieldValue.
-#if defined(__OBJC__)
-
/**
* Transforms an array via a union or remove operation (for convenience, we use
* this class for both Type::ArrayUnion and Type::ArrayRemove).
*/
class ArrayTransform : public TransformOperation {
public:
- ArrayTransform(Type type, std::vector<FSTFieldValue *> elements)
+ ArrayTransform(Type type, std::vector<FSTFieldValue*> elements)
: type_(type), elements_(std::move(elements)) {
}
@@ -155,33 +143,34 @@ class ArrayTransform : public TransformOperation {
return type_;
}
- FSTFieldValue *applyToLocalView(FSTFieldValue *previousValue,
- FIRTimestamp *localWriteTime) const override {
- return apply(previousValue);
+ FSTFieldValue* ApplyToLocalView(
+ FSTFieldValue* previousValue,
+ FIRTimestamp* /* localWriteTime */) const override {
+ return Apply(previousValue);
}
- FSTFieldValue *applyToRemoteDocument(
- FSTFieldValue *previousValue,
- FSTFieldValue *transformResult) const override {
+ FSTFieldValue* ApplyToRemoteDocument(
+ FSTFieldValue* previousValue,
+ FSTFieldValue* /* transformResult */) const override {
// The server just sends null as the transform result for array operations,
// so we have to calculate a result the same as we do for local
// applications.
- return apply(previousValue);
+ return Apply(previousValue);
}
- const std::vector<FSTFieldValue *> &elements() const {
+ const std::vector<FSTFieldValue*>& elements() const {
return elements_;
}
- bool operator==(const TransformOperation &other) const override {
+ bool operator==(const TransformOperation& other) const override {
if (other.type() != type()) {
return false;
}
- auto array_transform = static_cast<const ArrayTransform &>(other);
+ auto array_transform = static_cast<const ArrayTransform&>(other);
if (array_transform.elements_.size() != elements_.size()) {
return false;
}
- for (int i = 0; i < elements_.size(); i++) {
+ for (size_t i = 0; i < elements_.size(); i++) {
if (![array_transform.elements_[i] isEqual:elements_[i]]) {
return false;
}
@@ -189,51 +178,48 @@ class ArrayTransform : public TransformOperation {
return true;
}
-#if defined(__OBJC__)
// For Objective-C++ hash; to be removed after migration.
// Do NOT use in C++ code.
NSUInteger Hash() const override {
NSUInteger result = 37;
result = 31 * result + (type() == Type::ArrayUnion ? 1231 : 1237);
- for (FSTFieldValue *element : elements_) {
+ for (FSTFieldValue* element : elements_) {
result = 31 * result + [element hash];
}
return result;
}
-#endif // defined(__OBJC__)
- static const std::vector<FSTFieldValue *> &Elements(
- const TransformOperation &op) {
+ static const std::vector<FSTFieldValue*>& Elements(
+ const TransformOperation& op) {
FIREBASE_ASSERT(op.type() == Type::ArrayUnion ||
op.type() == Type::ArrayRemove);
- return static_cast<const ArrayTransform &>(op).elements();
+ return static_cast<const ArrayTransform&>(op).elements();
}
private:
Type type_;
- std::vector<FSTFieldValue *> elements_;
+ std::vector<FSTFieldValue*> elements_;
/**
* Inspects the provided value, returning a mutable copy of the internal array
* if it's an FSTArrayValue and an empty mutable array if it's nil or any
* other type of FSTFieldValue.
*/
- static NSMutableArray<FSTFieldValue *> *CoercedFieldValuesArray(
- FSTFieldValue *value) {
+ static NSMutableArray<FSTFieldValue*>* CoercedFieldValuesArray(
+ FSTFieldValue* value) {
if ([value isMemberOfClass:[FSTArrayValue class]]) {
return [NSMutableArray
- arrayWithArray:reinterpret_cast<FSTArrayValue *>(value)
- .internalValue];
+ arrayWithArray:reinterpret_cast<FSTArrayValue*>(value).internalValue];
} else {
// coerce to empty array.
return [NSMutableArray array];
}
}
- FSTFieldValue *apply(FSTFieldValue *previousValue) const {
- NSMutableArray<FSTFieldValue *> *result =
+ FSTFieldValue* Apply(FSTFieldValue* previousValue) const {
+ NSMutableArray<FSTFieldValue*>* result =
ArrayTransform::CoercedFieldValuesArray(previousValue);
- for (FSTFieldValue *element : elements_) {
+ for (FSTFieldValue* element : elements_) {
if (type_ == Type::ArrayUnion) {
if (![result containsObject:element]) {
[result addObject:element];
@@ -246,7 +232,6 @@ class ArrayTransform : public TransformOperation {
return [[FSTArrayValue alloc] initWithValueNoCopy:result];
}
};
-#endif
} // namespace model
} // namespace firestore
diff --git a/Firestore/core/test/firebase/firestore/model/CMakeLists.txt b/Firestore/core/test/firebase/firestore/model/CMakeLists.txt
index 9c94677..b38d658 100644
--- a/Firestore/core/test/firebase/firestore/model/CMakeLists.txt
+++ b/Firestore/core/test/firebase/firestore/model/CMakeLists.txt
@@ -20,14 +20,12 @@ cc_test(
document_test.cc
field_mask_test.cc
field_path_test.cc
- field_transform_test.cc
field_value_test.cc
maybe_document_test.cc
no_document_test.cc
precondition_test.cc
resource_path_test.cc
snapshot_version_test.cc
- transform_operations_test.cc
DEPENDS
firebase_firestore_model
)