Beispiel #1
0
        public void MetadataHelpers_DeserializeBufferContainingDateTimeWithOutOfRangeOffsetMinutes_ProducesExpectedMetadataDateTime()
        {
            var year          = 2018;
            var month         = 5;
            var day           = 4;
            var hour          = 3;
            var minute        = 2;
            var second        = 1;
            var offsetHours   = 0;
            var offsetMinutes = 88;

            uint payloadLength;
            var  parsedMetadataDateTime = MetadataDateTime.MinValue;

            using (var reader = new BinaryReader(InitializeMetadataDateTimeBuffer(out payloadLength, year, month, day, hour, minute, second, offsetHours, offsetMinutes)))
            {
                parsedMetadataDateTime = reader.ParseDateTimeFromMetadata(payloadLength);
            }

            // NOTE: The builder allows specifying offset entirely in minutes, whereas the above parser operates on bytes.
            // As a result, the above produces a timestamp with UtcOffset flag specified, and it just ignores the minutes setting.
            // This is correct behavior, but subtly different than the results from using the Builder. Therefore, alter the minutes offset
            // passed to the builder to create the expected result.
            offsetMinutes = 0;
            var expectedMetadataDateTime = new MetadataDateTimeBuilder(year).WithMonth(month).WithDay(day).WithHour(hour).WithMinute(minute).WithSecond(second).WithOffset(offsetHours, offsetMinutes).Build();

            Assert.Equal(0, expectedMetadataDateTime.CompareTo(parsedMetadataDateTime, strict: true, compareOnlyCommonValidFields: false));
        }
Beispiel #2
0
        public void MetadataHelpers_DeserializeBufferContainingDateTimeWithOutOfRangeOffsetHours_ProducesExpectedMetadataDateTime()
        {
            var year        = 2018;
            var month       = 6;
            var day         = 5;
            var hour        = 4;
            var minute      = 3;
            var second      = 2;
            var offsetHours = 16;

            uint payloadLength;
            var  parsedMetadataDateTime = MetadataDateTime.MinValue;

            using (var reader = new BinaryReader(InitializeMetadataDateTimeBuffer(out payloadLength, year, month, day, hour, minute, second, offsetHours)))
            {
                parsedMetadataDateTime = reader.ParseDateTimeFromMetadata(payloadLength);
            }

            // Note that we don't bother with sending the offset data to the builder here. This is because of subtle differences with how the builder
            // processes offset vs. how the parser does. In this test, the parser stops after the offset hours check. The Builder takes offset as hours
            // and minutes, and would ignore the hours, but honor the minutes. So just skip defining offset at all with the builder.
            var expectedMetadataDateTime = new MetadataDateTimeBuilder(year).WithMonth(month).WithDay(day).WithHour(hour).WithMinute(minute).WithSecond(second).Build();

            Assert.Equal(0, expectedMetadataDateTime.CompareTo(parsedMetadataDateTime, strict: true, compareOnlyCommonValidFields: false));
        }
Beispiel #3
0
        public void MetadataHelpers_DeserializeBufferContainingDateTimeWithOutOfRangeMonth_ProducesExpectedMetadataDateTime()
        {
            var year  = 2018;
            var month = 16;

            uint payloadLength;
            var  parsedMetadataDateTime = MetadataDateTime.MinValue;

            using (var reader = new BinaryReader(InitializeMetadataDateTimeBuffer(out payloadLength, year, month)))
            {
                parsedMetadataDateTime = reader.ParseDateTimeFromMetadata(payloadLength);
            }

            var expectedMetadataDateTime = new MetadataDateTimeBuilder(year).WithMonth(month).Build();

            Assert.Equal(0, expectedMetadataDateTime.CompareTo(parsedMetadataDateTime, strict: true, compareOnlyCommonValidFields: false));
        }
Beispiel #4
0
        public void MetadataHelpers_DeserializeBufferContainingDateTimeWithOutOfRangeMinuteAndSecond_ProducesExpectedMetadataDateTime()
        {
            var year   = 2018;
            var month  = 8;
            var day    = 7;
            var hour   = 6;
            var minute = 99;
            var second = 120;

            uint payloadLength;
            var  parsedMetadataDateTime = MetadataDateTime.MinValue;

            using (var reader = new BinaryReader(InitializeMetadataDateTimeBuffer(out payloadLength, year, month, day, hour, minute, second)))
            {
                parsedMetadataDateTime = reader.ParseDateTimeFromMetadata(payloadLength);
            }

            var expectedMetadataDateTime = new MetadataDateTimeBuilder(year).WithMonth(month).WithDay(day).WithHour(hour).WithMinute(minute).WithSecond(second).Build();

            Assert.Equal(0, expectedMetadataDateTime.CompareTo(parsedMetadataDateTime, strict: true, compareOnlyCommonValidFields: false));
        }
Beispiel #5
0
        public void MetadataHelpers_DeserializeBufferContainingCompleteDateTimeWithOffsetAndAdditionalPayload_ProducesExpectedMetadataDateTime()
        {
            var year          = 2018;
            var month         = 10;
            var day           = 9;
            var hour          = 8;
            var minute        = 7;
            var second        = 6;
            var offsetHours   = 5;
            var offsetMinutes = 4;

            uint payloadLength;
            var  parsedMetadataDateTime = MetadataDateTime.MinValue;

            using (var reader = new BinaryReader(InitializeMetadataDateTimeBuffer(out payloadLength, year, month, day, hour, minute, second, offsetHours, offsetMinutes, 12)))
            {
                parsedMetadataDateTime = reader.ParseDateTimeFromMetadata(payloadLength);
            }

            var expectedMetadataDateTime = new MetadataDateTimeBuilder(year).WithMonth(month).WithDay(day).WithHour(hour).WithMinute(minute).WithSecond(second).WithOffset(offsetHours, offsetMinutes).Build();

            Assert.Equal(0, expectedMetadataDateTime.CompareTo(parsedMetadataDateTime, strict: true, compareOnlyCommonValidFields: false));
        }