@@ -144,6 +144,20 @@ TEST(FieldValue, BlobType) {
144
144
EXPECT_FALSE (a < a);
145
145
}
146
146
147
+ TEST (FieldValue, ReferenceType) {
148
+ const DatabaseId id (" project" , " database" );
149
+ const FieldValue a =
150
+ FieldValue::ReferenceValue (DocumentKey::FromPathString (" root/abc" ), &id);
151
+ DocumentKey key = DocumentKey::FromPathString (" root/def" );
152
+ const FieldValue b = FieldValue::ReferenceValue (key, &id);
153
+ const FieldValue c = FieldValue::ReferenceValue (std::move (key), &id);
154
+ EXPECT_EQ (Type::Reference, a.type ());
155
+ EXPECT_EQ (Type::Reference, b.type ());
156
+ EXPECT_EQ (Type::Reference, c.type ());
157
+ EXPECT_TRUE (a < b);
158
+ EXPECT_FALSE (a < a);
159
+ }
160
+
147
161
TEST (FieldValue, GeoPointType) {
148
162
const FieldValue a = FieldValue::GeoPointValue ({1 , 2 });
149
163
const FieldValue b = FieldValue::GeoPointValue ({3 , 4 });
@@ -280,6 +294,23 @@ TEST(FieldValue, Copy) {
280
294
clone = null_value;
281
295
EXPECT_EQ (FieldValue::NullValue (), clone);
282
296
297
+ const DatabaseId database_id (" project" , " database" );
298
+ const FieldValue reference_value = FieldValue::ReferenceValue (
299
+ DocumentKey::FromPathString (" root/abc" ), &database_id);
300
+ clone = reference_value;
301
+ EXPECT_EQ (FieldValue::ReferenceValue (DocumentKey::FromPathString (" root/abc" ),
302
+ &database_id),
303
+ clone);
304
+ EXPECT_EQ (FieldValue::ReferenceValue (DocumentKey::FromPathString (" root/abc" ),
305
+ &database_id),
306
+ reference_value);
307
+ clone = clone;
308
+ EXPECT_EQ (FieldValue::ReferenceValue (DocumentKey::FromPathString (" root/abc" ),
309
+ &database_id),
310
+ clone);
311
+ clone = null_value;
312
+ EXPECT_EQ (FieldValue::NullValue (), clone);
313
+
283
314
const FieldValue geo_point_value = FieldValue::GeoPointValue ({1 , 2 });
284
315
clone = geo_point_value;
285
316
EXPECT_EQ (FieldValue::GeoPointValue ({1 , 2 }), clone);
@@ -361,7 +392,7 @@ TEST(FieldValue, Move) {
361
392
clone = FieldValue::NullValue ();
362
393
EXPECT_EQ (FieldValue::NullValue (), clone);
363
394
364
- const FieldValue timestamp_value = FieldValue::TimestampValue ({100 , 200 });
395
+ FieldValue timestamp_value = FieldValue::TimestampValue ({100 , 200 });
365
396
clone = std::move (timestamp_value);
366
397
EXPECT_EQ (FieldValue::TimestampValue ({100 , 200 }), clone);
367
398
clone = FieldValue::NullValue ();
@@ -373,13 +404,23 @@ TEST(FieldValue, Move) {
373
404
clone = FieldValue::NullValue ();
374
405
EXPECT_EQ (FieldValue::NullValue (), clone);
375
406
376
- const FieldValue blob_value = FieldValue::BlobValue (Bytes (" abc" ), 4 );
407
+ FieldValue blob_value = FieldValue::BlobValue (Bytes (" abc" ), 4 );
377
408
clone = std::move (blob_value);
378
409
EXPECT_EQ (FieldValue::BlobValue (Bytes (" abc" ), 4 ), clone);
379
410
clone = FieldValue::NullValue ();
380
411
EXPECT_EQ (FieldValue::NullValue (), clone);
381
412
382
- const FieldValue geo_point_value = FieldValue::GeoPointValue ({1 , 2 });
413
+ const DatabaseId database_id (" project" , " database" );
414
+ FieldValue reference_value = FieldValue::ReferenceValue (
415
+ DocumentKey::FromPathString (" root/abc" ), &database_id);
416
+ clone = std::move (reference_value);
417
+ EXPECT_EQ (FieldValue::ReferenceValue (DocumentKey::FromPathString (" root/abc" ),
418
+ &database_id),
419
+ clone);
420
+ clone = null_value;
421
+ EXPECT_EQ (FieldValue::NullValue (), clone);
422
+
423
+ FieldValue geo_point_value = FieldValue::GeoPointValue ({1 , 2 });
383
424
clone = std::move (geo_point_value);
384
425
EXPECT_EQ (FieldValue::GeoPointValue ({1 , 2 }), clone);
385
426
clone = null_value;
@@ -415,6 +456,9 @@ TEST(FieldValue, CompareMixedType) {
415
456
const FieldValue timestamp_value = FieldValue::TimestampValue ({100 , 200 });
416
457
const FieldValue string_value = FieldValue::StringValue (" abc" );
417
458
const FieldValue blob_value = FieldValue::BlobValue (Bytes (" abc" ), 4 );
459
+ const DatabaseId database_id (" project" , " database" );
460
+ const FieldValue reference_value = FieldValue::ReferenceValue (
461
+ DocumentKey::FromPathString (" root/abc" ), &database_id);
418
462
const FieldValue geo_point_value = FieldValue::GeoPointValue ({1 , 2 });
419
463
const FieldValue array_value =
420
464
FieldValue::ArrayValue (std::vector<FieldValue>());
@@ -425,7 +469,8 @@ TEST(FieldValue, CompareMixedType) {
425
469
EXPECT_TRUE (number_value < timestamp_value);
426
470
EXPECT_TRUE (timestamp_value < string_value);
427
471
EXPECT_TRUE (string_value < blob_value);
428
- EXPECT_TRUE (blob_value < geo_point_value);
472
+ EXPECT_TRUE (blob_value < reference_value);
473
+ EXPECT_TRUE (reference_value < geo_point_value);
429
474
EXPECT_TRUE (geo_point_value < array_value);
430
475
EXPECT_TRUE (array_value < object_value);
431
476
}
0 commit comments