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)); }
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)); }
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)); }
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)); }
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)); }