From adf9fb31eeef639ef23b2ff22a71adaa91a263b7 Mon Sep 17 00:00:00 2001 From: zxu Date: Mon, 12 Feb 2018 17:00:25 -0500 Subject: Update FieldValue of type Reference (#775) * update FieldValue of type Reference * address change * fix bad path string literal in test * use ReferenceValue and qualified name --- .../firebase/firestore/model/field_value_test.cc | 53 ++++++++++++++++++++-- 1 file changed, 49 insertions(+), 4 deletions(-) (limited to 'Firestore/core/test') 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 702c0f6..86eb804 100644 --- a/Firestore/core/test/firebase/firestore/model/field_value_test.cc +++ b/Firestore/core/test/firebase/firestore/model/field_value_test.cc @@ -144,6 +144,20 @@ TEST(FieldValue, BlobType) { EXPECT_FALSE(a < a); } +TEST(FieldValue, ReferenceType) { + const DatabaseId id("project", "database"); + const FieldValue a = + FieldValue::ReferenceValue(DocumentKey::FromPathString("root/abc"), &id); + DocumentKey key = DocumentKey::FromPathString("root/def"); + const FieldValue b = FieldValue::ReferenceValue(key, &id); + const FieldValue c = FieldValue::ReferenceValue(std::move(key), &id); + EXPECT_EQ(Type::Reference, a.type()); + EXPECT_EQ(Type::Reference, b.type()); + EXPECT_EQ(Type::Reference, c.type()); + EXPECT_TRUE(a < b); + EXPECT_FALSE(a < a); +} + TEST(FieldValue, GeoPointType) { const FieldValue a = FieldValue::GeoPointValue({1, 2}); const FieldValue b = FieldValue::GeoPointValue({3, 4}); @@ -280,6 +294,23 @@ TEST(FieldValue, Copy) { clone = null_value; EXPECT_EQ(FieldValue::NullValue(), clone); + const DatabaseId database_id("project", "database"); + const FieldValue reference_value = FieldValue::ReferenceValue( + DocumentKey::FromPathString("root/abc"), &database_id); + clone = reference_value; + EXPECT_EQ(FieldValue::ReferenceValue(DocumentKey::FromPathString("root/abc"), + &database_id), + clone); + EXPECT_EQ(FieldValue::ReferenceValue(DocumentKey::FromPathString("root/abc"), + &database_id), + reference_value); + clone = clone; + EXPECT_EQ(FieldValue::ReferenceValue(DocumentKey::FromPathString("root/abc"), + &database_id), + clone); + clone = null_value; + EXPECT_EQ(FieldValue::NullValue(), clone); + const FieldValue geo_point_value = FieldValue::GeoPointValue({1, 2}); clone = geo_point_value; EXPECT_EQ(FieldValue::GeoPointValue({1, 2}), clone); @@ -361,7 +392,7 @@ TEST(FieldValue, Move) { clone = FieldValue::NullValue(); EXPECT_EQ(FieldValue::NullValue(), clone); - const FieldValue timestamp_value = FieldValue::TimestampValue({100, 200}); + FieldValue timestamp_value = FieldValue::TimestampValue({100, 200}); clone = std::move(timestamp_value); EXPECT_EQ(FieldValue::TimestampValue({100, 200}), clone); clone = FieldValue::NullValue(); @@ -373,13 +404,23 @@ TEST(FieldValue, Move) { clone = FieldValue::NullValue(); EXPECT_EQ(FieldValue::NullValue(), clone); - const FieldValue blob_value = FieldValue::BlobValue(Bytes("abc"), 4); + FieldValue blob_value = FieldValue::BlobValue(Bytes("abc"), 4); clone = std::move(blob_value); EXPECT_EQ(FieldValue::BlobValue(Bytes("abc"), 4), clone); clone = FieldValue::NullValue(); EXPECT_EQ(FieldValue::NullValue(), clone); - const FieldValue geo_point_value = FieldValue::GeoPointValue({1, 2}); + const DatabaseId database_id("project", "database"); + FieldValue reference_value = FieldValue::ReferenceValue( + DocumentKey::FromPathString("root/abc"), &database_id); + clone = std::move(reference_value); + EXPECT_EQ(FieldValue::ReferenceValue(DocumentKey::FromPathString("root/abc"), + &database_id), + clone); + clone = null_value; + EXPECT_EQ(FieldValue::NullValue(), clone); + + FieldValue geo_point_value = FieldValue::GeoPointValue({1, 2}); clone = std::move(geo_point_value); EXPECT_EQ(FieldValue::GeoPointValue({1, 2}), clone); clone = null_value; @@ -415,6 +456,9 @@ TEST(FieldValue, CompareMixedType) { const FieldValue timestamp_value = FieldValue::TimestampValue({100, 200}); const FieldValue string_value = FieldValue::StringValue("abc"); const FieldValue blob_value = FieldValue::BlobValue(Bytes("abc"), 4); + const DatabaseId database_id("project", "database"); + const FieldValue reference_value = FieldValue::ReferenceValue( + DocumentKey::FromPathString("root/abc"), &database_id); const FieldValue geo_point_value = FieldValue::GeoPointValue({1, 2}); const FieldValue array_value = FieldValue::ArrayValue(std::vector()); @@ -425,7 +469,8 @@ TEST(FieldValue, CompareMixedType) { EXPECT_TRUE(number_value < timestamp_value); EXPECT_TRUE(timestamp_value < string_value); EXPECT_TRUE(string_value < blob_value); - EXPECT_TRUE(blob_value < geo_point_value); + EXPECT_TRUE(blob_value < reference_value); + EXPECT_TRUE(reference_value < geo_point_value); EXPECT_TRUE(geo_point_value < array_value); EXPECT_TRUE(array_value < object_value); } -- cgit v1.2.3