using System.Collections; using System.Collections.Generic; using NUnit.Framework; namespace Assets.Data { [TestFixture] public class TestTraitsUtils { [Test] [TestCaseSource(typeof(BinaryCases), "EmblemsSynergies")] public void TestMergeEmblems( Dictionary emblem, Dictionary synergies, Dictionary expected ) { var output = TraitsMapping.MergeEmblems(emblem, synergies); foreach (KeyValuePair pair in expected) { Assert.IsTrue(output[pair.Key] == pair.Value); } } [Test] [TestCaseSource(typeof(BinaryCases), "ActiveTraits")] public void TestActiveSynergyFilter( Dictionary synergies, HashSet expected ) { var output = TraitsMapping.FilterActiveTraits(synergies); foreach (TraitsEnum trait in expected) { Assert.IsTrue(expected.Contains(trait)); } foreach (TraitsEnum trait in output) { Assert.IsTrue(output.Contains(trait)); } } [Test] public void TestMapping() { foreach (var champTraits in TraitsMapping.ChampsTraits) { foreach (var trait in champTraits.Value) { Assert.IsTrue(TraitsMapping.TraitsChamp[trait].Contains(champTraits.Key)); } } foreach (var traitChamps in TraitsMapping.TraitsChamp) { foreach (var champ in traitChamps.Value) { Assert.IsTrue(TraitsMapping.ChampsTraits[champ].Contains(traitChamps.Key)); } } } [Test] [TestCaseSource(typeof(BinaryCases), "con")] public void TestChampionCombination(HashSet champList, int compositionSize, int expectedCombinationCount) { var combination = TraitsMapping.GetChampionSubsets(champList, compositionSize); Assert.IsTrue(combination.Count == expectedCombinationCount); } } public class BinaryCases { public static IEnumerable EmblemsSynergies { get { yield return new TestCaseData( new Dictionary { { TraitsEnum.ARCANA, 1 } }, new Dictionary { { TraitsEnum.ARCANA, 1 } }, new Dictionary { { TraitsEnum.ARCANA, 2 } } ); yield return new TestCaseData( new Dictionary { { TraitsEnum.ARCANA, 1 }, { TraitsEnum.DRAGON, 2 }, { TraitsEnum.FROST, 3 }, { TraitsEnum.HONEYMANCY, 4 }, { TraitsEnum.PYRO, 5 }, { TraitsEnum.WARRIOR, 6 }, }, new Dictionary { { TraitsEnum.ARCANA, 1 }, { TraitsEnum.DRAGON, 2 }, { TraitsEnum.FROST, 3 }, { TraitsEnum.HONEYMANCY, 4 }, { TraitsEnum.PYRO, 5 }, { TraitsEnum.WARRIOR, 6 }, }, new Dictionary { { TraitsEnum.ARCANA, 2 }, { TraitsEnum.DRAGON, 4 }, { TraitsEnum.FROST, 6 }, { TraitsEnum.HONEYMANCY, 8 }, { TraitsEnum.PYRO, 10 }, { TraitsEnum.WARRIOR, 12 }, } ); /* here is the list of traits : ARCANA, CHRONO, DRAGON, DRUID, ELDRICHT, FAERIE, FROST, HONEYMANCY, PORTAL, PYRO, SUGARCRAFT, WITCHCRAFT, BASTION, BLASTER, HUNTER, INCANTATOR, MAGE, MULTISTRIKER, PRESERVER, SCHOLAR, SHAPESHIFTER, VANGUARD, WARRIOR */ } } public static IEnumerable ActiveTraits { get { yield return new TestCaseData( new Dictionary { { TraitsEnum.ARCANA, 1 }, { TraitsEnum.DRAGON, 2 }, { TraitsEnum.FROST, 3 }, { TraitsEnum.HONEYMANCY, 4 }, { TraitsEnum.PYRO, 1 }, { TraitsEnum.WARRIOR, 1 }, }, new HashSet { TraitsEnum.DRAGON, TraitsEnum.FROST, TraitsEnum.HONEYMANCY, TraitsEnum.PYRO, } ); yield return new TestCaseData( new Dictionary { { TraitsEnum.ARCANA, 5 }, { TraitsEnum.FROST, 2 }, { TraitsEnum.HONEYMANCY, 7 }, { TraitsEnum.PYRO, 4 }, { TraitsEnum.WARRIOR, 3 }, }, new HashSet { TraitsEnum.ARCANA, TraitsEnum.HONEYMANCY, TraitsEnum.PYRO, TraitsEnum.WARRIOR, } ); } } } }