Exemplo n.º 1
0
        public void DeserializeThrowsWhenBufferIsWrongSize(long badSize)
        {
            Int64Serializer serializer = new Int64Serializer();

            Assert.ThrowsException <ArgumentException>(() => {
                serializer.Deserialize(new byte[badSize]);
            });
        }
Exemplo n.º 2
0
        public void DeserializeThrowsWhenBufferIsNull()
        {
            Int64Serializer serializer = new Int64Serializer();

            Assert.ThrowsException <ArgumentNullException>(() => {
                serializer.Deserialize(null);
            });
        }
Exemplo n.º 3
0
        public void SerializeAndDeserializeToTheSameObject(long originalValue)
        {
            Serializer <long> serializer = new Int64Serializer();

            byte[] serializedValue   = serializer.Serialize(originalValue);
            long   deserializedValue = serializer.Deserialize(serializedValue);

            Assert.Equal(originalValue, deserializedValue);
        }
Exemplo n.º 4
0
        public void SerializeThenDeserializeWorks(bool littleEndian)
        {
            long[] numbers = new long[] {
                long.MinValue,
                long.MinValue + 1,
                long.MinValue + 2,
                long.MinValue + 3,
                long.MinValue / 2,
                -65537,
                -65536,
                -65535,
                -65534,
                -257,
                -256,
                -255,
                -254
                - 126,
                -127,
                -128
                - 5,
                -4,
                -3,
                -2,
                -1,
                0,
                long.MaxValue,
                long.MaxValue - 1,
                long.MaxValue - 2,
                long.MaxValue - 3,
                long.MaxValue / 2,
                65537,
                65536,
                65535,
                65534,
                257,
                256,
                255,
                254,
                126,
                127,
                128,
                5,
                4,
                3,
                2,
                1,
            };

            Int64Serializer serializer = new Int64Serializer(littleEndian);

            for (long i = 0; i < numbers.Length; i++)
            {
                byte[] buffer = new byte[serializer.DataSize];
                serializer.Serialize(numbers[i], buffer);
                Assert.AreEqual(numbers[i], serializer.Deserialize(buffer));
            }
        }
Exemplo n.º 5
0
        public override DateTime Deserialize(BsonDeserializationContext context, BsonDeserializationArgs args)
        {
            var      bsonReader      = context.Reader;
            var      currentBsonType = bsonReader.GetCurrentBsonType();
            DateTime value;

            switch (currentBsonType)
            {
            case BsonType.Document:
                value = new DateTime();
                _helper.DeserializeMembers(context,
                                           (elementName, flag) =>
                {
                    if (flag != DATE_TIME_FLAG)
                    {
                        if (flag != TICKS_FLAG)
                        {
                            return;
                        }

                        value = new DateTime(_int64Serializer.Deserialize(context), DateTimeKind.Utc);
                    }
                    else
                    {
                        bsonReader.SkipValue();
                    }
                });
                break;

            default:
                throw CreateCannotDeserializeFromBsonTypeException(currentBsonType);
            }

            switch (Kind)
            {
            case DateTimeKind.Local:
                value = DateTime.SpecifyKind(BsonUtils.ToLocalTime(value), DateTimeKind.Local);
                break;

            case DateTimeKind.Unspecified:
                value = DateTime.SpecifyKind(value, DateTimeKind.Unspecified);
                break;

            case DateTimeKind.Utc:
                value = BsonUtils.ToUniversalTime(value);
                break;

            default:
                throw CreateCannotDeserializeFromBsonTypeException(currentBsonType);
            }

            return(value);
        }
Exemplo n.º 6
0
        public void ShouldThrowIfDeserializingLessThanEightBytes(byte[] data)
        {
            Serializer <long> serializer = new Int64Serializer();

            Assert.Throws <ArgumentOutOfRangeException>(() => serializer.Deserialize(data));
        }
Exemplo n.º 7
0
        public void ShouldThrowIfDeserializingNull()
        {
            Serializer <long> serializer = new Int64Serializer();

            Assert.Throws <ArgumentNullException>(() => serializer.Deserialize(null));
        }