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);
                }
            }
        }
示例#5
0
        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);
        }