Exemple #1
0
        private string GetExpectedYearString(string year, out MetadataDateTime date)
        {
            date = MetadataDateTime.MinValue;
            var yearString = year;

            if (!string.IsNullOrEmpty(year))
            {
                int releaseYear;
                if (int.TryParse(year, out releaseYear))
                {
                    try
                    {
                        var dateBuilder = new MetadataDateTimeBuilder(releaseYear);
                        date = dateBuilder.Build();
                    }
                    catch (ArgumentOutOfRangeException)
                    {
                        yearString = string.Empty;
                    }
                }
                else
                {
                }
            }
            return(yearString);
        }
Exemple #2
0
 public void AddBuildDate(MetadataDateTime date)
 {
     if (_buildDates == null)
     {
         _buildDates = new HashSet <MetadataDateTime>();
     }
     _buildDates.Add(date);
 }
Exemple #3
0
        public void MetadataDateTime_CompareToOtherStrictWithDifferentFlags_IsNonzero()
        {
            var dateTime0 = new MetadataDateTime(DateTimeOffset.UtcNow, UtcDateTime);
            var dateTime1 = new MetadataDateTime(dateTime0.Date, DateTime);

            Assert.True(dateTime0.CompareTo(dateTime1, strict: true) > 0);
            Assert.True(dateTime1.CompareTo(dateTime0, strict: true) < 0);
        }
Exemple #4
0
 public void AddReleaseDate(MetadataDateTime date)
 {
     if (_releaseDates == null)
     {
         _releaseDates = new HashSet <MetadataDateTime>();
     }
     _releaseDates.Add(date);
 }
Exemple #5
0
        public void MetadataDateTime_CompareToOtherNonStrictWithDifferentFlagsAndDifferenceInNotCommonField_CommonFieldsCompareAsEqual()
        {
            // NOTE: It is possible for this test to fail if, by adding one second, it causes the date to roll over to a new year.
            // So don't run this test on New Year's Eve at 23:59:59+.
            var dateTime0 = new MetadataDateTime(DateTimeOffset.Now, MetadataDateTimeFlags.Year);
            var dateTime1 = new MetadataDateTime(dateTime0.Date.AddSeconds(1), DateTime);

            Assert.Equal(0, dateTime0.CompareTo(dateTime1, strict: false, compareOnlyCommonValidFields: true));
        }
Exemple #6
0
        public void MetadataDateTime_CompareToOtherNonStrictWithDifferentFlagsAndDifferenceInCommonField_CommonFieldsCompareAsNotEqual()
        {
            var dateTime0 = new MetadataDateTime(DateTimeOffset.Now, Date | MetadataDateTimeFlags.LeapSecond);
            var dateTime1 = new MetadataDateTime(dateTime0.Date.AddDays(1), DateTime | MetadataDateTimeFlags.LeapSecond);

            Assert.True(dateTime0.CompareTo(dateTime1, strict: false, compareOnlyCommonValidFields: true) != 0);
            Assert.False(dateTime1.Equals(dateTime0));
            Assert.True(dateTime1 != dateTime0);
        }
Exemple #7
0
        public void MetadataDateTime_CompareToOtherNonStrictWithDifferentFlags_CommonFieldsCompareAsEqual()
        {
            var dateTime0   = new MetadataDateTime(DateTimeOffset.Now, DateTime | MetadataDateTimeFlags.LeapSecond);
            var rawDateTime = dateTime0.Date.DateTime;
            var dateTime1   = new MetadataDateTime(new DateTimeOffset(new DateTime(rawDateTime.Year, rawDateTime.Month, rawDateTime.Day)), Date);

            Assert.Equal(0, dateTime0.CompareTo(dateTime1, strict: false, compareOnlyCommonValidFields: true));
            Assert.True(dateTime1.Equals(dateTime0));
            Assert.False(dateTime0.GetHashCode() == dateTime1.GetHashCode());
        }
Exemple #8
0
        public void MetadataDateTime_ToString_ProducesCorrectResult()
        {
            var dateTimeOffsetNow = DateTimeOffset.Now;
            var metadataDateTime  = new MetadataDateTime(dateTimeOffsetNow, Date);

            var expectedToStringResult = dateTimeOffsetNow.ToString() + " {" + metadataDateTime.Flags.ToString() + "}";
            var actualToStringResult   = metadataDateTime.ToString();

            Assert.Equal(expectedToStringResult, actualToStringResult);
        }
Exemple #9
0
        public void MetadataDateTime_ToStringWithFormatPovider_ProducesCorrectResult()
        {
            var formatProvider    = CultureInfo.GetCultureInfo("de-DE");
            var dateTimeOffsetNow = DateTimeOffset.Now;
            var metadataDateTime  = new MetadataDateTime(dateTimeOffsetNow, Date);

            var expectedToStringResult = dateTimeOffsetNow.ToString(formatProvider) + " {" + metadataDateTime.Flags.ToString() + "}";
            var actualToStringResult   = metadataDateTime.ToString(formatProvider);

            Assert.Equal(expectedToStringResult, actualToStringResult);
        }
Exemple #10
0
        public void MetadataDateTime_CompareToOtherNonStrictWithNoCommonFlags_ComparesUnderlyingDateTimeOnly()
        {
            var dateTime0 = new MetadataDateTime(DateTimeOffset.Now, Date);
            var dateTime1 = new MetadataDateTime(dateTime0.Date.AddSeconds(1.2), UtcTime);

            Assert.True((dateTime0.Flags & dateTime1.Flags) == MetadataDateTimeFlags.None);

            var dateTimeOffsetCompareToResult   = dateTime0.Date.CompareTo(dateTime1.Date);
            var metadataDateTimeCompareToResult = dateTime0.CompareTo(dateTime1, strict: false, compareOnlyCommonValidFields: true);

            Assert.Equal(dateTimeOffsetCompareToResult, metadataDateTimeCompareToResult);
        }
Exemple #11
0
        public void MetadataDateTimeBuilder_WithLeapSecond_CreatesExpectedMetadataDateTime()
        {
            var year   = 1999;
            var second = 60;
            var flags  = MetadataDateTimeFlags.Year | MetadataDateTimeFlags.Second | MetadataDateTimeFlags.LeapSecond;
            var date   = new System.DateTimeOffset(year, 1, 1, 0, 0, 59, TimeSpan.Zero);
            var expectedMetadataDateTime = new MetadataDateTime(date, flags);

            var builder = new MetadataDateTimeBuilder(year).WithSecond(second);
            var actualMetadataDateTime = builder.Build();

            Assert.Equal(0, expectedMetadataDateTime.CompareTo(actualMetadataDateTime, strict: true, compareOnlyCommonValidFields: false));
        }
Exemple #12
0
        public void MetadataDateTime_CompareToOtherWhenFullyEqual_ComparesEqual()
        {
            var dateTime0 = new MetadataDateTime(DateTimeOffset.UtcNow, UtcDateTime);
            var dateTime1 = new MetadataDateTime(dateTime0.Date, UtcDateTime);

            Assert.Equal(0, dateTime0.CompareTo(dateTime1));
            Assert.Equal(0, dateTime0.CompareTo((object)dateTime1));
            Assert.Equal(0, dateTime0.CompareTo(dateTime1, strict: false));
            Assert.Equal(0, dateTime0.CompareTo(dateTime1, strict: false, compareOnlyCommonValidFields: false));
            Assert.Equal(0, dateTime0.CompareTo(dateTime1, strict: false, compareOnlyCommonValidFields: true));
            Assert.Equal(0, dateTime0.CompareTo(dateTime1, strict: true, compareOnlyCommonValidFields: false));
            Assert.True(dateTime1.Equals(dateTime0));
            Assert.True(dateTime1.Equals((object)dateTime0));
        }
Exemple #13
0
        public void MetadataDateTimeBuilder_WithUtcOffsetHoursOutOfRange_CreatesExpectedMetadataDateTime()
        {
            var year                     = 1991;
            var offsetHours              = 123;
            var offsetMinutes            = 22;
            var flags                    = MetadataDateTimeFlags.Year;
            var dateTime                 = new DateTime(year, 1, 1);
            var date                     = new System.DateTimeOffset(dateTime, TimeSpan.Zero);
            var expectedMetadataDateTime = new MetadataDateTime(date, flags);

            var builder = new MetadataDateTimeBuilder(year).WithOffset(offsetHours, offsetMinutes);
            var actualMetadataDateTime = builder.Build();

            Assert.Equal(0, expectedMetadataDateTime.CompareTo(actualMetadataDateTime, strict: true, compareOnlyCommonValidFields: false));
        }
Exemple #14
0
        public void MetadataDateTimeBuilder_WithLocalUtcOffset_CreatesExpectedMetadataDateTime()
        {
            var year                     = 1984;
            var offsetHours              = -3;
            var offsetMinutes            = -3;
            var flags                    = MetadataDateTimeFlags.Year | MetadataDateTimeFlags.UtcOffset;
            var dateTime                 = new DateTime(year, 1, 1);
            var offset                   = TimeZoneInfo.Local.GetUtcOffset(dateTime);
            var date                     = new System.DateTimeOffset(dateTime, offset);
            var expectedMetadataDateTime = new MetadataDateTime(date, flags);

            var builder = new MetadataDateTimeBuilder(year).WithOffset(offsetHours, offsetMinutes).WithLocalUtcOffset();
            var actualMetadataDateTime = builder.Build();

            Assert.Equal(0, expectedMetadataDateTime.CompareTo(actualMetadataDateTime, strict: true, compareOnlyCommonValidFields: false));
        }
Exemple #15
0
        public void CfgVarMetadata_InflateCfgVarMetadataDate()
        {
            // YYYY-MM-DD HH:MM:SS +hhmm
            var dateTime      = new DateTimeOffset(2018, 9, 25, 22, 33, 44, new TimeSpan(6, 30, 0));
            var expectedValue = new MetadataDateTime(dateTime, UtcDateTime);
            var cfg           = "release_date = 2018-09-25 22:33:44 +0630";

            using (var stream = new System.IO.MemoryStream(Encoding.UTF8.GetBytes(cfg)))
            {
                var cfgVarMetadata = CfgVarMetadataBlock.Inflate(stream);

                Assert.IsType <CfgVarMetadataDate>(cfgVarMetadata);
                Assert.True(cfgVarMetadata.DeserializeByteCount > 0);
                Assert.Equal(expectedValue, ((CfgVarMetadataDate)cfgVarMetadata).Date);
            }
        }
Exemple #16
0
        public void MetadataDateTimeBuilder_WithInvalidValues_CreatesExpectedMetadataDateTime()
        {
            var year     = 1979;
            var month    = 69;
            var day      = 32;
            var hour     = 44;
            var minute   = 88;
            var second   = -2;
            var flags    = MetadataDateTimeFlags.Year;
            var dateTime = new DateTime(year, 1, 1);
            var date     = new System.DateTimeOffset(dateTime, TimeSpan.Zero);
            var expectedMetadataDateTime = new MetadataDateTime(date, flags);

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

            Assert.Equal(0, expectedMetadataDateTime.CompareTo(actualMetadataDateTime, strict: true, compareOnlyCommonValidFields: false));
        }
Exemple #17
0
        public void MetadataDateTimeBuilder_WithAllValidValues_CreatesExpectedMetadataDateTime()
        {
            var year                     = 2018;
            var month                    = 10;
            var day                      = 15;
            var hour                     = 17;
            var minute                   = 34;
            var second                   = 48;
            var offsetHours              = 1;
            var offsetMinutes            = 23;
            var flags                    = Enum.GetValues(typeof(MetadataDateTimeFlags)).Cast <MetadataDateTimeFlags>().Aggregate((all, flag) => all | flag) & ~MetadataDateTimeFlags.LeapSecond;
            var offset                   = new TimeSpan(offsetHours, offsetMinutes, 0);
            var date                     = new System.DateTimeOffset(year, month, day, hour, minute, second, offset);
            var expectedMetadataDateTime = new MetadataDateTime(date, flags);

            var builder = new MetadataDateTimeBuilder(year);

            builder.WithMonth(month).WithDay(day).WithHour(hour).WithMinute(minute).WithSecond(second).WithOffset(offsetHours, offsetMinutes);
            var actualMetadataDateTime = builder.Build();

            Assert.Equal(0, expectedMetadataDateTime.CompareTo(actualMetadataDateTime, strict: true, compareOnlyCommonValidFields: false));
        }
Exemple #18
0
        private static MetadataDateTime CreateMetadataDateTime(int year, int month, int day, int hour, int minute, int second, int?offsetHours, int?offsetMinutes)
        {
            var dateTime = MetadataDateTime.MinValue;

            var flags = MetadataDateTimeFlags.None;

            if (year > 0)
            {
                flags |= MetadataDateTimeFlags.Year;
            }

            if (month > 0)
            {
                flags |= MetadataDateTimeFlags.Month;
            }
            else
            {
                month = 1;
            }

            if (day > 0)
            {
                flags |= MetadataDateTimeFlags.Day;
            }
            else
            {
                day = 1;
            }

            if (hour >= 0)
            {
                flags |= MetadataDateTimeFlags.Hour;
            }
            else
            {
                hour = 0;
            }

            if (minute >= 0)
            {
                flags |= MetadataDateTimeFlags.Minute;
            }
            else
            {
                minute = 0;
            }

            if (second >= 0)
            {
                flags |= MetadataDateTimeFlags.Second;
            }
            else
            {
                second = 0;
            }
            if (second == 60)
            {
                second = 59;
                flags |= MetadataDateTimeFlags.LeapSecond;
            }

            if (offsetHours.HasValue)
            {
                flags |= MetadataDateTimeFlags.UtcOffset;
            }
            if (offsetMinutes.HasValue)
            {
                flags |= MetadataDateTimeFlags.UtcOffset;
            }

            if (flags != MetadataDateTimeFlags.None)
            {
                var offset = TimeSpan.Zero;
                if (flags.HasFlag(MetadataDateTimeFlags.UtcOffset))
                {
                    var hours   = offsetHours.HasValue ? offsetHours.Value : 0;
                    var minutes = offsetMinutes.HasValue ? offsetMinutes.Value : 0;
                    if ((hours < 0) && (minutes > 0))
                    {
                        minutes = -minutes;
                    }
                    offset = new TimeSpan(hours, minutes, 0);
                }
                var dateTimeOffset = new DateTimeOffset(year, month, day, hour, minute, second, offset);
                dateTime = new MetadataDateTime(dateTimeOffset, flags);
            }

            return(dateTime);
        }
Exemple #19
0
        public void CfgVarMetadata_InflateMetadataDateTime_GetsExpectedMetadataDateTimeValue(string cfgFileValue, MetadataDateTime expectedCfgVarMetadataDateValue)
        {
            var cfgBooleanEntry = "build_date =" + cfgFileValue;

            using (var stream = new System.IO.MemoryStream(Encoding.UTF8.GetBytes(cfgBooleanEntry)))
            {
                var cfgVarMetadataBoolean = CfgVarMetadataBlock.Inflate(stream) as CfgVarMetadataDate;

                var compareResult = expectedCfgVarMetadataDateValue.CompareTo(cfgVarMetadataBoolean.Date, strict: true, compareOnlyCommonValidFields: false);
                if (compareResult != 0)
                {
                    Output.WriteLine("Input:    [" + cfgFileValue + "]\nExpected: " + expectedCfgVarMetadataDateValue + "\nActual:   " + cfgVarMetadataBoolean.Date);
                }
                Assert.Equal(0, compareResult);
            }
        }
Exemple #20
0
        public void MetadataDateTime_EqualsNull_ThrowsArgumentException()
        {
            var dateTime = new MetadataDateTime(DateTimeOffset.UtcNow, UtcDateTime);

            Assert.Throws <ArgumentException>(() => dateTime.Equals(null));
        }
Exemple #21
0
        public void MetadataDateTime_CompareToIncompatibleType_ThrowsArgumentException()
        {
            var dateTime = new MetadataDateTime(DateTimeOffset.UtcNow, UtcDateTime);

            Assert.Throws <ArgumentException>(() => dateTime.CompareTo(DateTimeOffset.UtcNow));
        }
        /// <summary>
        /// Adds a release date to the metadata. Duplicate values are rejected.
        /// </summary>
        /// <param name="releaseDate">The release date to add.</param>
        /// <returns><c>true</c> if the release date was added, <c>false</c> if the value was already in the release dates list.</returns>
        public bool AddReleaseDate(MetadataDateTime releaseDate)
        {
            var added = _releaseDates.Add(releaseDate);

            return(added);
        }
        /// <summary>
        /// Adds a build date to the metadata. Duplicate values are rejected.
        /// </summary>
        /// <param name="buildDate">The build date to add.</param>
        /// <returns><c>true</c> if the build date was added, <c>false</c> if the value was already in the build dates list.</returns>
        public bool AddBuildDate(MetadataDateTime buildDate)
        {
            var added = _buildDates.Add(buildDate);

            return(added);
        }