Exemple #1
0
        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));
        }
Exemple #2
0
        public void FromData_NullGroupMappingList_SubstitutesEmptyList()
        {
            var data = new AniDbSeriesMappingData
            {
                AnidbId           = "3",
                DefaultTvDbSeason = "35"
            };

            var seriesMapping = SeriesMapping.FromData(data);

            seriesMapping.ValueUnsafe().EpisodeGroupMappings.Should().BeEmpty();
        }
Exemple #3
0
        public void FromData_InvalidTvDbSeason_ReturnsNone(string tvDbSeason)
        {
            var data = new AniDbSeriesMappingData
            {
                AnidbId           = "3",
                DefaultTvDbSeason = tvDbSeason
            };

            var seriesMapping = SeriesMapping.FromData(data);

            seriesMapping.IsSome.Should().BeFalse();
        }
Exemple #4
0
        public void FromData_InvalidAniDbId_ReturnsNone(string aniDbId)
        {
            var data = new AniDbSeriesMappingData
            {
                AnidbId           = aniDbId,
                DefaultTvDbSeason = "a"
            };

            var seriesMapping = SeriesMapping.FromData(data);

            seriesMapping.IsSome.Should().BeFalse();
        }
Exemple #5
0
        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();
        }
Exemple #6
0
        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();
        }
Exemple #7
0
        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);
        }
Exemple #8
0
        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);
        }
Exemple #9
0
        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();
        }
Exemple #10
0
        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);
        }
Exemple #11
0
        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);
        }
Exemple #12
0
        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);
        }
Exemple #13
0
        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);
        }
Exemple #14
0
 private static bool IsValidData(AniDbSeriesMappingData data)
 {
     return(int.TryParse(data?.AnidbId, out int _) &&
            (int.TryParse(data?.DefaultTvDbSeason, out int _) ||
             data?.DefaultTvDbSeason == "a"));
 }