Beispiel #1
0
        public async Task MergedAnimeListShouldContainCorrectlyAssignedUsers()
        {
            // given
            var criteria = new GetCharadesCriteria()
            {
                Usernames = new[] { "Ervelan", "SonMati" },
                Sources   = new[] { EntrySource.Anime },
                IncludeKnownAdaptations = false
            };

            // when
            charadesCompositionService.Object.StartComposing(criteria);
            while (!charadesCompositionService.Object.IsFinished())
            {
                await charadesCompositionService.Object.MakeNextCharadesEntry();
            }
            // then
            var charades = charadesCompositionService.Object.GetFinishedCharades();
            var setoHana = charades.First(c => c.Series.Title == "Seto no Hanayome");

            Assert.Contains("SonMati", setoHana.KnownBy);
            Assert.Contains("Ervelan", setoHana.KnownBy);
            var gankutsuou = charades.First(c => c.Series.Title == "Gankutsuou");

            Assert.Contains("Ervelan", gankutsuou.KnownBy);
            Assert.DoesNotContain("SonMati", gankutsuou.KnownBy);
            var blendS = charades.First(c => c.Series.Title == "Blend S");

            Assert.Contains("SonMati", blendS.KnownBy);
            Assert.DoesNotContain("Ervelan", blendS.KnownBy);
        }
Beispiel #2
0
        public async Task MergedMangaListShouldContainCorrectlyAssignedUsers()
        {
            // given
            var criteria = new GetCharadesCriteria()
            {
                Usernames = new[] { "Ervelan", "Progeusz" },
                Sources   = new[] { EntrySource.Manga },
                IncludeKnownAdaptations = false
            };

            // when
            charadesCompositionService.Object.StartComposing(criteria);
            while (!charadesCompositionService.Object.IsFinished())
            {
                await charadesCompositionService.Object.MakeNextCharadesEntry();
            }
            // then
            var charades = charadesCompositionService.Object.GetFinishedCharades();
            var berserk  = charades.First(c => c.Series.Title == "Berserk");

            Assert.Contains("Progeusz", berserk.KnownBy);
            Assert.Contains("Ervelan", berserk.KnownBy);
            var jojo = charades.First(c => c.Series.Title == "JoJo no Kimyou na Bouken");

            Assert.Contains("Ervelan", jojo.KnownBy);
            Assert.DoesNotContain("Progeusz", jojo.KnownBy);
            var deathPanda = charades.First(c => c.Series.Title == "The Death Panda");

            Assert.Contains("Progeusz", deathPanda.KnownBy);
            Assert.DoesNotContain("Ervelan", deathPanda.KnownBy);
        }
Beispiel #3
0
 public async Task <ICollection <CharadesEntry> > GetCharades(GetCharadesCriteria criteria)
 {
     StartComposing(criteria);
     while (IsFinished())
     {
         await MakeNextCharadesEntry();
     }
     return(charades);
 }
Beispiel #4
0
        public void StartComposing(GetCharadesCriteria criteria)
        {
            Reset();
            usernames = criteria.Usernames;
            sources.EnqueueRange(criteria.Sources);
            var allSources = Enum.GetValues(typeof(EntrySource)).Cast <EntrySource>();
            var isAllDone  = criteria.Sources.Count == allSources.Count();

            if (isAllDone)
            {
                adaptationStrategy = AdaptationIncluding.All;
            }
            else if (criteria.IncludeKnownAdaptations && sources.Count != 0)
            {
                adaptationStrategy = AdaptationIncluding.OnlyFromEntries;
                var otherSources = allSources.Except(criteria.Sources);
                this.otherSources.EnqueueRange(otherSources);
            }
        }
Beispiel #5
0
        public async Task AnimeAndMangaShouldntCreateSeparateEntries()
        {
            // given
            var criteria = new GetCharadesCriteria()
            {
                Usernames = new[] { "Ervelan", "SonMati" },
                Sources   = new[] { EntrySource.Anime, EntrySource.Manga },
                IncludeKnownAdaptations = false
            };

            // when
            charadesCompositionService.Object.StartComposing(criteria);
            while (!charadesCompositionService.Object.IsFinished())
            {
                await charadesCompositionService.Object.MakeNextCharadesEntry();
            }
            // then
            var charades = charadesCompositionService.Object.GetFinishedCharades();

            Assert.True(charades.Where(c => c.Series.Title == "Yakusoku no Neverland").Count() == 1);
        }
Beispiel #6
0
        public async Task KnownAdaptationsShouldBeIncludedIfNeeded()
        {
            // given
            var criteria = new GetCharadesCriteria()
            {
                Usernames = new[] { "Ervelan", "SonMati" },
                Sources   = new[] { EntrySource.Anime },
                IncludeKnownAdaptations = true
            };

            // when
            charadesCompositionService.Object.StartComposing(criteria);
            while (!charadesCompositionService.Object.IsFinished())
            {
                await charadesCompositionService.Object.MakeNextCharadesEntry();
            }
            // then
            var charades    = charadesCompositionService.Object.GetFinishedCharades();
            var hokutoNoKen = charades.First(c => c.Series.Title == "Hokuto no Ken");

            Assert.Contains("SonMati", hokutoNoKen.KnownBy);
            Assert.Contains("Ervelan", hokutoNoKen.KnownBy);
        }