public void Compare_LossOfPrecision() { // Just to demonstrate that we lose precision when comparing a double with a long Value value1 = ProtoHelpers.CreateValue(long.MaxValue); // Represented precisely Value value2 = ProtoHelpers.CreateValue(long.MaxValue - 1.0); // Precision lost Assert.Equal(0, ValueComparer.Instance.Compare(value1, value2)); }
public void Compare_WithSelf(dynamic clrValue) { var instance = ValueComparer.Instance; Value value1 = ProtoHelpers.CreateValue(clrValue); Value value2 = ProtoHelpers.CreateValue(clrValue); Assert.Equal(0, instance.Compare(value1, value2)); }
public void Compare_EqualValues(dynamic[] clrValues) { var instance = ValueComparer.Instance; Value[] values = clrValues.Select(d => (Value)ProtoHelpers.CreateValue(d)).ToArray(); for (int i = 0; i < values.Length - 1; i++) { for (int j = i + 1; j < values.Length; j++) { Assert.Equal(0, instance.Compare(values[i], values[j])); } } }
public void Compare_Unequal() { var instance = ValueComparer.Instance; for (int i = 0; i < s_valuesInOrder.Length - 1; i++) { dynamic smaller = s_valuesInOrder[i]; Value smallerValue = ProtoHelpers.CreateValue(smaller); for (int j = i + 1; j < s_valuesInOrder.Length; j++) { dynamic larger = s_valuesInOrder[j]; Value largerValue = ProtoHelpers.CreateValue(larger); Assert.InRange(instance.Compare(smallerValue, largerValue), int.MinValue, -1); Assert.InRange(instance.Compare(largerValue, smallerValue), 1, int.MaxValue); } } }
public void ConvertTo_ValueType() { var db = FirestoreDb.Create("proj", "db", new FakeFirestoreClient()); var readTime = new Timestamp(10, 2); var proto = new Document { CreateTime = CreateProtoTimestamp(1, 10), UpdateTime = CreateProtoTimestamp(2, 20), Name = "projects/proj/databases/db/documents/col1/doc1/col2/doc2", Fields = { ["Name"] = ProtoHelpers.CreateValue("text"), ["Value"] = ProtoHelpers.CreateValue(100) } }; var document = DocumentSnapshot.ForDocument(db, proto, readTime); var value = document.ConvertTo <SerializationTestData.CustomValueType>(); Assert.Equal("text", value.Name); Assert.Equal(100, value.Value); }
public void ConvertTo_WithId() { var db = FirestoreDb.Create("proj", "db", new FakeFirestoreClient()); var readTime = new Timestamp(10, 2); var proto = new Document { CreateTime = CreateProtoTimestamp(1, 10), UpdateTime = CreateProtoTimestamp(2, 20), Name = "projects/proj/databases/db/documents/col1/doc1/col2/doc2", Fields = { ["Name"] = ProtoHelpers.CreateValue("text"), ["Value"] = ProtoHelpers.CreateValue(100) } }; var document = DocumentSnapshot.ForDocument(db, proto, readTime); var converted = document.ConvertTo <SampleDataWithDocumentId>(); Assert.Equal("text", converted.Name); Assert.Equal(100, converted.Value); Assert.Equal("doc2", converted.DocumentId); }