Beispiel #1
0
        public void FilterDeckListTest003_FilterByTwoAttributes()
        {
            List <DeckAttribute> filterAttrib = new List <DeckAttribute>()
            {
                DeckAttribute.Strength, DeckAttribute.Endurance
            };

            DeckClass?selectedClass   = null;
            var       filteredClasses = new ObservableCollection <DeckClass>(
                Utils.ClassAttributesHelper.FindClassByAttribute(filterAttrib)
                );

            Mock <IDeckTypeSelectorViewModel> typeSelector = GetFullTypeFilter();

            int expectedCount = 0 + //none inrandom data
                                1;  //one for every class

            DeckListViewModel model = new DeckListViewModel();

            IEnumerable <Deck> result = model.FilterDeckList(
                DeckBase,
                null,
                false,
                false,
                selectedClass,
                filteredClasses,
                null);

            Assert.AreEqual(expectedCount, result.Count());
            Assert.IsTrue(result.All(r => { return(Utils.ClassAttributesHelper.Classes[r.Class.Value].Contains(filterAttrib[0])); }));
        }
Beispiel #2
0
        public void FilterDeckListTest002_FilterByOneAttribute()
        {
            DeckAttribute filterAttrib    = DeckAttribute.Strength;
            DeckClass?    selectedClass   = null;
            var           filteredClasses = new ObservableCollection <DeckClass>(
                ClassAttributesHelper.FindClassByAttribute(filterAttrib)
                );

            Mock <IDeckTypeSelectorViewModel> typeSelector = GetFullTypeFilter();

            int expectedCount = 3 + //random data - archer i battlemage y strength
                                5;  //one for every class

            DeckListViewModel model = new DeckListViewModel();

            IEnumerable <Deck> result = model.FilterDeckList(
                DeckBase,
                null,
                false,
                false,
                selectedClass,
                filteredClasses,
                null);

            Assert.AreEqual(expectedCount, result.Count());
            Assert.IsTrue(result.All(r => { return(Utils.ClassAttributesHelper.Classes[r.Class.Value].Contains(filterAttrib)); }));
        }
Beispiel #3
0
        public void FilterCombo001_WhenFilteredSelectFirstClass_NoFilter()
        {
            DeckClassSelectorViewModel model = new DeckClassSelectorViewModel();

            DeckClass?expected = null;

            model.FilterCombo();

            //none selcted
            Assert.AreEqual(expected, model.SelectedClass);
        }
Beispiel #4
0
        public void FilterDeckListTest008_HideCompletedVersusArenaRunsNoClassFilter()
        {
            DeckClass?selectedClass   = null;
            var       filteredClasses = new ObservableCollection <DeckClass>(ClassAttributesHelper.Classes.Keys);

            List <DeckType> typeFilter = new List <DeckType>()
            {
                DeckType.VersusArena
            };
            var filteredTypes          = new ObservableCollection <DeckType>(typeFilter);
            var showCompletedArenaRuns = false;

            Mock <ITracker>        tracker        = new Mock <ITracker>();
            Mock <ITrackerFactory> trackerFactory = new Mock <ITrackerFactory>();

            trackerFactory.Setup(tf => tf.GetNewGuid()).Returns(() => Guid.NewGuid());
            trackerFactory.Setup(tf => tf.GetTracker()).Returns(tracker.Object);
            trackerFactory.Setup(tf => tf.GetService <IDeckService>()).Returns(new DeckService(trackerFactory.Object));

            Deck deckToShow = new Deck(trackerFactory.Object)
            {
                Type = DeckType.VersusArena, Class = DeckClass.Assassin
            };
            Deck deckToHide = new Deck(trackerFactory.Object)
            {
                Type = DeckType.VersusArena, Class = DeckClass.Inteligence
            };

            tracker.Setup(t => t.Games).Returns(
                new ObservableCollection <DataModel.Game>(
                    GenerateGamesList(deckToShow, 2, 2).Union(GenerateGamesList(deckToHide, 7, 2))
                    ));

            int expectedCount = 1;

            DeckListViewModel model = new DeckListViewModel();

            IEnumerable <Deck> result = model.FilterDeckList(
                new Deck[] { deckToShow, deckToHide },
                filteredTypes,
                showCompletedArenaRuns,
                false,
                selectedClass,
                filteredClasses,
                null);

            Assert.AreEqual(expectedCount, result.Count());
            Assert.AreEqual(deckToShow.DeckId, result.First().DeckId);
        }
 public DeckListFilterChanged(
     Source source,
     IEnumerable <DeckType> filteredTypes,
     bool?showFinishedArenaRuns,
     bool?showHiddenDecks,
     DeckClass?selectedClass,
     IEnumerable <DeckClass> filteredClasses)
 {
     this.ChangeSource          = source;
     this.FilteredTypes         = filteredTypes;
     this.ShowFInishedArenaRuns = showFinishedArenaRuns.HasValue ? showFinishedArenaRuns.Value : false;
     this.ShowHiddenDecks       = showHiddenDecks.HasValue ? showHiddenDecks.Value : false;
     this.SelectedClass         = selectedClass;
     this.FilteredClasses       = filteredClasses;
 }
Beispiel #6
0
 public dynamic GetDeckVsClass(DeckClass?opponentClass)
 {
     return(this.DeckGames
            .Where(g => (g.OpponentClass.HasValue) &&  //filter out all game where calss is not set (if we include in show all, crash below as here is no nul key in classes.attibutes)
                   ((g.OpponentClass == opponentClass) || (opponentClass == null)))        //class = param, or oaram is null - show all"
            .GroupBy(d => d.OpponentClass.Value)
            .Select(d => new
     {
         Class = d.Key,
         Attributes = ClassAttributesHelper.Classes[d.Key],
         Total = d.Count(),
         Victory = d.Where(d2 => d2.Outcome == GameOutcome.Victory).Count(),
         Defeat = d.Where(d2 => d2.Outcome == GameOutcome.Defeat).Count(),
         WinPercent = d.Count() > 0 ? Math.Round((decimal)d.Where(d2 => d2.Outcome == GameOutcome.Victory).Count() / (decimal)d.Count() * 100, 0).ToString() : "-"
     }));
 }
Beispiel #7
0
        public void FilterCombo002_WhenFilteredSelectFirstClass_OneSelected()
        {
            DeckClassSelectorViewModel model = new DeckClassSelectorViewModel();

            DeckClass?expected = DeckClass.Inteligence;

            model.FilterClicked(DeckAttribute.Intelligence);

            //has been filter applied?
            Assert.AreNotEqual(Utils.ClassAttributesHelper.Classes.Count, model.FilteredClasses.Count);


            model.FilterCombo();

            //none selcted
            Assert.AreEqual(expected, model.SelectedClass);
        }
 internal void SyncToggleButtons(DeckClass?value)
 {
     //if (value != null)
     {
         ResetToggleButtons();
         //toggle attributes buttons
         if (value != null)
         {
             foreach (DeckAttribute da in ClassAttributesHelper.Classes[value.Value])
             {
                 FilterButtonState[da] = true;
             }
         }
         FilterCombo();
         RaisePropertyChangedEvent("FilterButtonStateCollection");
     }
 }
Beispiel #9
0
        public void FilterDeckListTest004_ClearFilters()
        {
            DeckClass?selectedClass   = null;
            var       filteredClasses = new ObservableCollection <DeckClass>(
                Utils.ClassAttributesHelper.FindClassByAttribute(DeckAttribute.Neutral)
                );

            Mock <IDeckTypeSelectorViewModel> typeSelector = GetFullTypeFilter();

            int expectedCount = DeckBase.Count;

            DeckListViewModel model = new DeckListViewModel();


            //do first filter - not intrested
            IEnumerable <Deck> result = model.FilterDeckList(
                DeckBase,
                null,
                false,
                false,
                selectedClass,
                filteredClasses,
                null);

            //model is norw filyred
            Assert.AreNotEqual(expectedCount, result.Count());

            //reset filters - class selector returns all clases
            filteredClasses = new ObservableCollection <DeckClass>(
                Utils.ClassAttributesHelper.Classes.Keys
                );

            result = model.FilterDeckList(
                DeckBase,
                null,
                false,
                true,
                selectedClass,
                filteredClasses,
                null);

            Assert.AreEqual(expectedCount, result.Count());
        }
 public void ShowWinsVsClass(DeckClass?deckClass)
 {
     if ((deckClass != null) && (tracker.ActiveDeck != null))
     {
         var     res  = tracker.ActiveDeck.GetDeckVsClass(deckClass);
         dynamic data = (res as System.Collections.IEnumerable).Cast <object>().FirstOrDefault();
         if (data == null)
         {
             data = new { Class = deckClass, Victory = 0, Defeat = 0, WinPercent = "-" };
         }
         this.OpponentClassWins = string.Format("vs {0}: {1}-{2} ({3}%)",
                                                data.Class,
                                                data.Victory,
                                                data.Defeat,
                                                data.WinPercent);
     }
     else
     {
         this.OpponentClassWins = "Select opponent class";
     }
 }
        public void FilterCombo()
        {
            var filteredClasses = Utils.ClassAttributesHelper.FindClassByAttribute(FilterButtonState.Where(f => f.Value).Select(f => f.Key)).ToList();

            if ((filteredClasses.Count >= 1) &&
                (FilterButtonState.Any(f => f.Value)))
            {
                selectedClass = filteredClasses.OrderBy(fc => ClassAttributesHelper.Classes[fc].Count).First();
            }
            else
            {
                selectedClass = null;
            }
            RaisePropertyChangedEvent("SelectedClass");
            //remove classes not in use.Clear() will trigger binding, as SelectedClass will be set to null by framework
            foreach (DeckClass dc in FilteredClasses.ToList())
            {
                if (!filteredClasses.Contains(dc))
                {
                    FilteredClasses.Remove(dc);
                }
            }
            // FilteredClasses.Clear();
            foreach (DeckClass dc in filteredClasses)
            {
                if (!FilteredClasses.Contains(dc))
                {
                    int i = 0;
                    IComparer <DeckClass> comparer = Comparer <DeckClass> .Default;
                    while (i < FilteredClasses.Count && comparer.Compare(FilteredClasses[i], dc) < 0)
                    {
                        i++;
                    }

                    FilteredClasses.Insert(i, dc);
                }
            }
            messenger.Send(new DeckListFilterChanged(DeckListFilterChanged.Source.ClassFilter, null, null, null, SelectedClass, FilteredClasses), MessangerContext);
        }
        public IEnumerable <Deck> FilterDeckList(
            IEnumerable <Deck> deckBase,
            IEnumerable <DeckType> filteredTypes,
            bool showCompletedArenaRuns,
            bool showHiddenDecks,
            DeckClass?selectedClass,
            IEnumerable <DeckClass> filteredClasses,
            string searchString)
        {
            IEnumerable <Deck> filteredList;

            if (selectedClass.HasValue)
            {
                //specific class slected (there might nbe more in filteredclasses propery!!!
                filteredList = deckBase.Where(d =>
                                              (d.Class == selectedClass) &&
                                              ((filteredTypes == null) || (filteredTypes.Contains(d.Type))) &&
                                              ((showCompletedArenaRuns) || (!d.IsArenaRunFinished())) &&
                                              ((showHiddenDecks) || (!d.IsHidden)) &&
                                              ((String.IsNullOrEmpty(searchString)) || (deckService.SearchString(d, searchString)))
                                              );
                return(filteredList);
            }
            else
            {
                //filter by attributes
                filteredList = deckBase.Where(d =>
                                              d.Class.HasValue &&
                                              (filteredClasses == null || filteredClasses.Contains(d.Class.Value)) &&
                                              ((filteredTypes == null) || (filteredTypes.Contains(d.Type))) &&
                                              ((showCompletedArenaRuns) || (!d.IsArenaRunFinished())) &&
                                              ((showHiddenDecks) || (!d.IsHidden)) &&
                                              ((String.IsNullOrEmpty(searchString)) || (deckService.SearchString(d, searchString)))
                                              );
                return(filteredList);
            }
        }