Пример #1
0
        public DecklistStatistics GetValidStatisticsForValidDeck()
        {
            DecklistStatistics statistics = new DecklistStatistics();

            statistics.IncrementNumberOfTimesWhenDeckWasUsed();

            statistics.GetType()
            .GetProperty(nameof(DecklistStatistics.DateWhenDeckWasUsed))
            .SetValue(statistics, new DateTime(1997, 4, 29));

            statistics.GetType()
            .GetProperty(nameof(DecklistStatistics.Id))
            .SetValue(statistics, 1);

            return(statistics);
        }
Пример #2
0
        private DecklistStatistics _getValidStatisticsForValidDeck()
        {
            DecklistStatistics statistics = new DecklistStatistics();

            statistics.IncrementNumberOfTimesWhenDeckWasUsed();
            statistics.IncrementNumberOfTimesWhenDeckWasUsed();
            statistics.IncrementNumberOfTimesWhenDeckWasUsed();
            statistics.IncrementNumberOfTimesWhenDeckWon();

            statistics.GetType()
            .GetProperty(nameof(DecklistStatistics.DateWhenDeckWasUsed))
            .SetValue(statistics, _date.AddDays(2));

            statistics.GetType()
            .GetProperty(nameof(DecklistStatistics.Id))
            .SetValue(statistics, 44);

            return(statistics);
        }
        private void _analyzeNewDeck(List <Decklist> allDecksFromThePack,
                                     bool decksWon,
                                     List <Decklist> decklistsWithoutDuplicates,
                                     Decklist decklist)
        {
            var numberOfDuplicatesWithListOfDecklists = _archetypeAndDecklistAnalyzer.
                                                        RemoveDuplicateDecklistsFromListOfDecklists(
                decklist,
                allDecksFromThePack.OrderBy(x => x.WhenDecklistWasFirstPlayed));

            decklistsWithoutDuplicates.Add(numberOfDuplicatesWithListOfDecklists.DecklistThatWasChecked);
            var statistics = decklist.DecklistStatistics
                             .FirstOrDefault(x => x.DateWhenDeckWasUsed == decklist.WhenDecklistWasFirstPlayed);

            if (statistics == null)
            {
                statistics = DecklistStatistics.Create(decklist, decklist.WhenDecklistWasFirstPlayed);
                decklist.DecklistStatistics.Add(statistics);
            }

            statistics.
            IncrementNumberOfTimesWhenDeckWasUsedByAmount(numberOfDuplicatesWithListOfDecklists.DuplicateCount);
            if (decksWon)
            {
                statistics.
                IncrementNumberOfTimesWhenDeckWonByAmount(numberOfDuplicatesWithListOfDecklists.DuplicateCount);
            }

            var archetype = _archetypeAndDecklistAnalyzer.GetArchetypeOfTheDecklistWithStatistics(
                decklist,
                decklist.WhenDecklistWasFirstPlayed);
            var archetypeStatisticsFromDay = archetype.Statistics
                                             .First(x => x.DateWhenArchetypeWasUsed == decklist.WhenDecklistWasFirstPlayed);

            archetypeStatisticsFromDay.IncrementNumberOfDecksWhereWasUsedByAmount(
                numberOfDuplicatesWithListOfDecklists.DuplicateCount);
            if (decksWon)
            {
                archetypeStatisticsFromDay.IncrementNumberOfTimesWhenArchetypeWonByAmount(
                    numberOfDuplicatesWithListOfDecklists.DuplicateCount);
            }
            _addPlayableBanlistsToDecklist(decklist, _banlists);
        }
Пример #4
0
        public void Convert_WeHaveDecklistStatistics_WeGetNumberOfDecklistStatistics()
        {
            var randomNumber = new Random().Next(1, 10);
            var converter    = new DecklistStatisticsToTotalNumberOfWinsConverter();
            var statistics   = new List <DecklistStatistics>();
            int expectedSum  = 0;

            for (int i = 0; i < randomNumber; i++)
            {
                var stats = new DecklistStatistics();
                stats.IncrementNumberOfTimesWhenDeckWonByAmount(randomNumber);
                expectedSum += randomNumber;

                statistics.Add(stats);
            }

            int result = converter.Convert(statistics, null);

            Assert.AreEqual(expectedSum, result);
        }
Пример #5
0
        private DecklistStatistics _generateDecklistStatistics(
            int id,
            DateTime whenWasUsed,
            int numberOfGames,
            int numberOfWins)
        {
            var statistics = new DecklistStatistics();

            statistics
            .GetType()
            .GetProperty(nameof(DecklistStatistics.Id))
            .SetValue(statistics, id);
            statistics
            .GetType()
            .GetProperty(nameof(DecklistStatistics.DateWhenDeckWasUsed))
            .SetValue(statistics, whenWasUsed);
            statistics.IncrementNumberOfTimesWhenDeckWasUsedByAmount(numberOfGames);
            statistics.IncrementNumberOfTimesWhenDeckWonByAmount(numberOfWins);

            return(statistics);
        }
        private void _updateDecklistStatistics(Decklist decklist, Decklist decklistFromDb)
        {
            foreach (var statistics in decklist.DecklistStatistics)
            {
                var statisticsFromDb = decklistFromDb
                                       .DecklistStatistics
                                       .Where(x => x.DateWhenDeckWasUsed.Date == statistics.DateWhenDeckWasUsed.Date)
                                       .FirstOrDefault();
                if (statisticsFromDb == null)
                {
                    statisticsFromDb = DecklistStatistics.Create(
                        decklistFromDb,
                        statistics.DateWhenDeckWasUsed.Date
                        );
                    _db.DecklistStatistics.Add(statisticsFromDb);
                }

                statisticsFromDb.IncrementNumberOfTimesWhenDeckWasUsedByAmount(statistics.NumberOfTimesWhenDeckWasUsed);
                statisticsFromDb.IncrementNumberOfTimesWhenDeckWonByAmount(statistics.NumberOfTimesWhenDeckWon);
            }
        }