Ejemplo n.º 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);
        }
Ejemplo n.º 2
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));
        }
Ejemplo n.º 3
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));
        }
Ejemplo n.º 4
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));
        }
Ejemplo n.º 5
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));
        }
Ejemplo n.º 6
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));
        }
        private void FinishInitialization()
        {
            var metadata = SourceInformation as IProgramMetadata;

            if (metadata != null)
            {
                _longNames             = new HashSet <string>(metadata.LongNames, StringComparer.OrdinalIgnoreCase);
                _shortNames            = new HashSet <string>(metadata.ShortNames, StringComparer.OrdinalIgnoreCase);
                _descriptions          = new HashSet <string>(metadata.Descriptions, StringComparer.OrdinalIgnoreCase);
                _publishers            = new HashSet <string>(metadata.Publishers, StringComparer.OrdinalIgnoreCase);
                _programmers           = new HashSet <string>(metadata.Programmers, StringComparer.OrdinalIgnoreCase);
                _designers             = new HashSet <string>(metadata.Designers, StringComparer.OrdinalIgnoreCase);
                _graphics              = new HashSet <string>(metadata.Graphics, StringComparer.OrdinalIgnoreCase);
                _music                 = new HashSet <string>(metadata.Music, StringComparer.OrdinalIgnoreCase);
                _soundEffects          = new HashSet <string>(metadata.SoundEffects, StringComparer.OrdinalIgnoreCase);
                _voices                = new HashSet <string>(metadata.Voices, StringComparer.OrdinalIgnoreCase);
                _documentation         = new HashSet <string>(metadata.Documentation, StringComparer.OrdinalIgnoreCase);
                _artwork               = new HashSet <string>(metadata.Artwork, StringComparer.OrdinalIgnoreCase);
                _releaseDates          = new SortedSet <MetadataDateTime>(metadata.ReleaseDates);
                _licenses              = new HashSet <string>(metadata.Licenses, StringComparer.OrdinalIgnoreCase);
                _contactInformation    = new HashSet <string>(metadata.ContactInformation, StringComparer.OrdinalIgnoreCase);
                _versions              = new HashSet <string>(metadata.Versions, StringComparer.OrdinalIgnoreCase);
                _buildDates            = new SortedSet <MetadataDateTime>(metadata.BuildDates);
                _additionalInformation = new Dictionary <string, string>(StringComparer.OrdinalIgnoreCase);
                if (metadata.AdditionalInformation == null)
                {
                    throw new ArgumentNullException("metadata.AdditionalInformation");
                }
                var additionalInformationIndex = 0;
                foreach (var additionalInformation in metadata.AdditionalInformation)
                {
                    _additionalInformation[additionalInformationIndex.ToString(CultureInfo.InvariantCulture)] = additionalInformation;
                    ++additionalInformationIndex;
                }
                if (string.IsNullOrEmpty(_shortName))
                {
                    if (!string.IsNullOrEmpty(_shortNames.FirstOrDefault()))
                    {
                        _shortName = _shortNames.First();
                    }
                }
            }
            else
            {
                _longNames             = new HashSet <string>(StringComparer.OrdinalIgnoreCase);
                _shortNames            = new HashSet <string>(StringComparer.OrdinalIgnoreCase);
                _descriptions          = new HashSet <string>(StringComparer.OrdinalIgnoreCase);
                _publishers            = new HashSet <string>(StringComparer.OrdinalIgnoreCase);
                _programmers           = new HashSet <string>(StringComparer.OrdinalIgnoreCase);
                _designers             = new HashSet <string>(StringComparer.OrdinalIgnoreCase);
                _graphics              = new HashSet <string>(StringComparer.OrdinalIgnoreCase);
                _music                 = new HashSet <string>(StringComparer.OrdinalIgnoreCase);
                _soundEffects          = new HashSet <string>(StringComparer.OrdinalIgnoreCase);
                _voices                = new HashSet <string>(StringComparer.OrdinalIgnoreCase);
                _documentation         = new HashSet <string>(StringComparer.OrdinalIgnoreCase);
                _artwork               = new HashSet <string>(StringComparer.OrdinalIgnoreCase);
                _releaseDates          = new SortedSet <MetadataDateTime>();
                _licenses              = new HashSet <string>(StringComparer.OrdinalIgnoreCase);
                _contactInformation    = new HashSet <string>(StringComparer.OrdinalIgnoreCase);
                _versions              = new HashSet <string>(StringComparer.OrdinalIgnoreCase);
                _buildDates            = new SortedSet <MetadataDateTime>();
                _additionalInformation = new Dictionary <string, string>(StringComparer.OrdinalIgnoreCase);

                if (!string.IsNullOrEmpty(_title))
                {
                    _longNames.Add(_title);
                }

                if (!string.IsNullOrEmpty(_shortName))
                {
                    _shortNames.Add(_shortName);
                }

                if (!string.IsNullOrEmpty(_vendor))
                {
                    AddPublisher(_vendor);
                }

                if (!string.IsNullOrEmpty(_year))
                {
                    int releaseYear;
                    if (int.TryParse(_year, out releaseYear))
                    {
                        try
                        {
                            var dateBuilder = new MetadataDateTimeBuilder(releaseYear);
                            var releaseDate = dateBuilder.Build();
                            AddReleaseDate(releaseDate);
                        }
                        catch (ArgumentOutOfRangeException)
                        {
                            // Scrambled LUIGI files may return a year string of "-1" via the intvname tool.
                            _year = string.Empty;
                        }
                    }
                }
            }

            _initialized = true;
        }
Ejemplo n.º 8
0
        public void MetadataDateTimeBuilder_WithYearOutOfRange_ThrowsArgumentOutOfRangeException(int year)
        {
            var builder = new MetadataDateTimeBuilder(year);

            Assert.Throws <ArgumentOutOfRangeException>(() => builder.Build());
        }