public static Option <SeriesMapping> FromData(AniDbSeriesMappingData data) { if (!IsValidData(data)) { return(Option <SeriesMapping> .None); } var ids = new SeriesIds( int.Parse(data.AnidbId), data.TvDbId.MaybeInt(), data.ImdbId.MaybeInt(), data.TmdbId.MaybeInt()); var defaultTvDbSeason = GetTvDbSeasonResult(data.DefaultTvDbSeason); var defaultTvDbEpisodeIndexOffset = data.EpisodeOffset; var episodeGroupMappings = data.GroupMappingList?.Select(EpisodeGroupMapping.FromData) .Somes() .ToList() ?? new List <EpisodeGroupMapping>(); var specialEpisodePositions = ParseSpecialEpisodePositionsString(data.SpecialEpisodePositionsString); return(new SeriesMapping(ids, defaultTvDbSeason, defaultTvDbEpisodeIndexOffset, episodeGroupMappings, specialEpisodePositions)); }
public void FromData_NullGroupMappingList_SubstitutesEmptyList() { var data = new AniDbSeriesMappingData { AnidbId = "3", DefaultTvDbSeason = "35" }; var seriesMapping = SeriesMapping.FromData(data); seriesMapping.ValueUnsafe().EpisodeGroupMappings.Should().BeEmpty(); }
public void FromData_InvalidTvDbSeason_ReturnsNone(string tvDbSeason) { var data = new AniDbSeriesMappingData { AnidbId = "3", DefaultTvDbSeason = tvDbSeason }; var seriesMapping = SeriesMapping.FromData(data); seriesMapping.IsSome.Should().BeFalse(); }
public void FromData_InvalidAniDbId_ReturnsNone(string aniDbId) { var data = new AniDbSeriesMappingData { AnidbId = aniDbId, DefaultTvDbSeason = "a" }; var seriesMapping = SeriesMapping.FromData(data); seriesMapping.IsSome.Should().BeFalse(); }
public void FromData_AbsoluteTvDbSeason_ReturnsAbsoluteTvDbSeason() { var data = new AniDbSeriesMappingData { AnidbId = "3", DefaultTvDbSeason = "a" }; var seriesMapping = SeriesMapping.FromData(data); seriesMapping.IsSome.Should().BeTrue(); seriesMapping.ValueUnsafe().DefaultTvDbSeason.IsLeft.Should().BeTrue(); }
public void FromData_NullItemsGroupMappingList_DoesNotCreateEpisodeGroupMapping() { var data = new AniDbSeriesMappingData { AnidbId = "3", DefaultTvDbSeason = "35", GroupMappingList = new AnimeEpisodeGroupMappingData[5] }; var seriesMapping = SeriesMapping.FromData(data); seriesMapping.ValueUnsafe().EpisodeGroupMappings.Should().BeEmpty(); }
public void FromData_IntegerAniDbId_ReturnsAniDbSeriesId() { var data = new AniDbSeriesMappingData { AnidbId = "3", DefaultTvDbSeason = "a" }; var seriesMapping = SeriesMapping.FromData(data); seriesMapping.IsSome.Should().BeTrue(); seriesMapping.ValueUnsafe().Ids.AniDbSeriesId.Should().Be(3); }
public void FromData_DefaultTvDbEpisodeIndexOffset_ReturnsValue() { var data = new AniDbSeriesMappingData { AnidbId = "3", DefaultTvDbSeason = "35", EpisodeOffset = 55 }; var seriesMapping = SeriesMapping.FromData(data); seriesMapping.IsSome.Should().BeTrue(); seriesMapping.ValueUnsafe().DefaultTvDbEpisodeIndexOffset.Should().Be(55); }
public void Create_InvalidSpecialEpisodePositionsString_EmptySpecialEpisodePositions( string specialEpisodePositionsString) { var data = new AniDbSeriesMappingData { AnidbId = "3", DefaultTvDbSeason = "35", SpecialEpisodePositionsString = specialEpisodePositionsString }; var seriesMapping = SeriesMapping.FromData(data); seriesMapping.ValueUnsafe().SpecialEpisodePositions.Should().BeEmpty(); }
public void FromData_OneEpisodeGroupMapping_CreatesEpisodeGroupMapping() { var data = new AniDbSeriesMappingData { AnidbId = "3", DefaultTvDbSeason = "35", GroupMappingList = new[] { new AnimeEpisodeGroupMappingData() } }; var seriesMapping = SeriesMapping.FromData(data); seriesMapping.ValueUnsafe().EpisodeGroupMappings.Should().HaveCount(1); }
public void Create_OneSpecialEpisodePositionsString_CreatesOneSpecialEpisodePosition() { var data = new AniDbSeriesMappingData { AnidbId = "3", DefaultTvDbSeason = "35", SpecialEpisodePositionsString = ";5-3;" }; var seriesMapping = SeriesMapping.FromData(data); seriesMapping.ValueUnsafe().SpecialEpisodePositions.Should().HaveCount(1); var episodeMapping = seriesMapping.ValueUnsafe().SpecialEpisodePositions.Single(); episodeMapping.SpecialEpisodeIndex.Should().Be(5); episodeMapping.FollowingStandardEpisodeIndex.Should().Be(3); }
public void FromData_IntegerTvDbSeason_ReturnsTvDbSeasonIndex() { var data = new AniDbSeriesMappingData { AnidbId = "3", DefaultTvDbSeason = "35" }; var seriesMapping = SeriesMapping.FromData(data); seriesMapping.IsSome.Should().BeTrue(); seriesMapping.ValueUnsafe().DefaultTvDbSeason.IsRight.Should().BeTrue(); var tvDbSeasonIndex = -1; seriesMapping.ValueUnsafe().DefaultTvDbSeason.IfRight(s => tvDbSeasonIndex = s.Index); tvDbSeasonIndex.Should().Be(35); }
public void Create_TwoSpecialEpisodePositionsStrings_CreatesTwoSpecialEpisodePositions() { var data = new AniDbSeriesMappingData { AnidbId = "3", DefaultTvDbSeason = "35", SpecialEpisodePositionsString = ";5-3;22-55;" }; var seriesMapping = SeriesMapping.FromData(data); seriesMapping.ValueUnsafe().SpecialEpisodePositions.Should().HaveCount(2); var episodeMapping = seriesMapping.ValueUnsafe().SpecialEpisodePositions.First(); episodeMapping.SpecialEpisodeIndex.Should().Be(5); episodeMapping.FollowingStandardEpisodeIndex.Should().Be(3); episodeMapping = seriesMapping.ValueUnsafe().SpecialEpisodePositions.Last(); episodeMapping.SpecialEpisodeIndex.Should().Be(22); episodeMapping.FollowingStandardEpisodeIndex.Should().Be(55); }
private static bool IsValidData(AniDbSeriesMappingData data) { return(int.TryParse(data?.AnidbId, out int _) && (int.TryParse(data?.DefaultTvDbSeason, out int _) || data?.DefaultTvDbSeason == "a")); }