aboutsummaryrefslogtreecommitdiffhomepage
path: root/Firestore/core/test
diff options
context:
space:
mode:
authorGravatar zxu <zxu@google.com>2018-04-23 10:51:52 -0400
committerGravatar GitHub <noreply@github.com>2018-04-23 10:51:52 -0400
commit12d9358c96d8de816254992b20d263e8ad9aac63 (patch)
tree4dde38730c95d6ec2582ccdbc1eba12a6f432619 /Firestore/core/test
parentb2cf8c6d3df3ebe792c4b3932f05ddfc7f477959 (diff)
Update `FieldValue` For Porting `Mutation`s to C++ (#1144)
* update FieldValue for Mutation implementation * address changes * address changes * address change
Diffstat (limited to 'Firestore/core/test')
-rw-r--r--Firestore/core/test/firebase/firestore/model/field_value_test.cc88
1 files changed, 88 insertions, 0 deletions
diff --git a/Firestore/core/test/firebase/firestore/model/field_value_test.cc b/Firestore/core/test/firebase/firestore/model/field_value_test.cc
index c5645a4..f99a62a 100644
--- a/Firestore/core/test/firebase/firestore/model/field_value_test.cc
+++ b/Firestore/core/test/firebase/firestore/model/field_value_test.cc
@@ -19,6 +19,7 @@
#include <climits>
#include <vector>
+#include "Firestore/core/test/firebase/firestore/testutil/testutil.h"
#include "gtest/gtest.h"
namespace firebase {
@@ -492,6 +493,93 @@ TEST(FieldValue, CompareWithOperator) {
EXPECT_FALSE(small == large);
}
+TEST(FieldValue, Set) {
+ // Set a field in an object.
+ const FieldValue value = FieldValue::ObjectValueFromMap({
+ {"a", FieldValue::StringValue("A")},
+ {"b", FieldValue::ObjectValueFromMap({
+ {"ba", FieldValue::StringValue("BA")},
+ })},
+ });
+ const FieldValue expected = FieldValue::ObjectValueFromMap({
+ {"a", FieldValue::StringValue("A")},
+ {"b", FieldValue::ObjectValueFromMap({
+ {"ba", FieldValue::StringValue("BA")},
+ {"bb", FieldValue::StringValue("BB")},
+ })},
+ });
+ EXPECT_EQ(expected,
+ value.Set(testutil::Field("b.bb"), FieldValue::StringValue("BB")));
+}
+
+TEST(FieldValue, SetRecursive) {
+ // Set a field in a new object.
+ const FieldValue value = FieldValue::ObjectValueFromMap({
+ {"a", FieldValue::StringValue("A")},
+ });
+ const FieldValue expected = FieldValue::ObjectValueFromMap({
+ {"a", FieldValue::StringValue("A")},
+ {"b", FieldValue::ObjectValueFromMap({
+ {"bb", FieldValue::StringValue("BB")},
+ })},
+ });
+ EXPECT_EQ(expected,
+ value.Set(testutil::Field("b.bb"), FieldValue::StringValue("BB")));
+}
+
+TEST(FieldValue, Delete) {
+ const FieldValue value = FieldValue::ObjectValueFromMap({
+ {"a", FieldValue::StringValue("A")},
+ {"b", FieldValue::ObjectValueFromMap({
+ {"ba", FieldValue::StringValue("BA")},
+ {"bb", FieldValue::StringValue("BB")},
+ })},
+ });
+ const FieldValue expected = FieldValue::ObjectValueFromMap({
+ {"a", FieldValue::StringValue("A")},
+ {"b", FieldValue::ObjectValueFromMap({
+ {"ba", FieldValue::StringValue("BA")},
+ })},
+ });
+ EXPECT_EQ(expected, value.Delete(testutil::Field("b.bb")));
+}
+
+TEST(FieldValue, DeleteNothing) {
+ const FieldValue value = FieldValue::ObjectValueFromMap({
+ {"a", FieldValue::StringValue("A")},
+ {"b", FieldValue::ObjectValueFromMap({
+ {"ba", FieldValue::StringValue("BA")},
+ {"bb", FieldValue::StringValue("BB")},
+ })},
+ });
+ EXPECT_EQ(value, value.Delete(testutil::Field("aa")));
+}
+
+TEST(FieldValue, Get) {
+ const FieldValue value = FieldValue::ObjectValueFromMap({
+ {"a", FieldValue::StringValue("A")},
+ {"b", FieldValue::ObjectValueFromMap({
+ {"ba", FieldValue::StringValue("BA")},
+ {"bb", FieldValue::StringValue("BB")},
+ })},
+ });
+ EXPECT_EQ(FieldValue::StringValue("A"), value.Get(testutil::Field("a")));
+ EXPECT_EQ(FieldValue::StringValue("BA"), value.Get(testutil::Field("b.ba")));
+ EXPECT_EQ(FieldValue::StringValue("BB"), value.Get(testutil::Field("b.bb")));
+}
+
+TEST(FieldValue, GetNothing) {
+ const FieldValue value = FieldValue::ObjectValueFromMap({
+ {"a", FieldValue::StringValue("A")},
+ {"b", FieldValue::ObjectValueFromMap({
+ {"ba", FieldValue::StringValue("BA")},
+ {"bb", FieldValue::StringValue("BB")},
+ })},
+ });
+ EXPECT_EQ(absl::nullopt, value.Get(testutil::Field("aa")));
+ EXPECT_EQ(absl::nullopt, value.Get(testutil::Field("a.a")));
+}
+
} // namespace model
} // namespace firestore
} // namespace firebase