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); }
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)); }
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)); }
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)); }
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)); }
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; }
public void MetadataDateTimeBuilder_WithYearOutOfRange_ThrowsArgumentOutOfRangeException(int year) { var builder = new MetadataDateTimeBuilder(year); Assert.Throws <ArgumentOutOfRangeException>(() => builder.Build()); }