This commit is contained in:
2024-09-22 17:35:29 +02:00
parent 07556b4018
commit 4a6378dab0
23 changed files with 5554 additions and 1739 deletions

View File

@@ -8,37 +8,26 @@ namespace Assets.Data
public class TestTraitsUtils
{
[Test]
[TestCaseSource(typeof(BinaryCases), "EmblemsSynergies")]
[TestCaseSource(typeof(TraitTestCases), "EmblemsSynergies")]
public void TestMergeEmblems(
Dictionary<TraitsEnum, int> emblem,
Dictionary<TraitsEnum, int> synergies,
Dictionary<TraitsEnum, int> expected
Dictionary<int, int> emblem,
Dictionary<int, int> synergies,
Dictionary<int, int> expected
)
{
var output = TraitsMapping.MergeEmblems(emblem, synergies);
foreach (KeyValuePair<TraitsEnum, int> pair in expected)
foreach (KeyValuePair<int, int> pair in expected)
{
Assert.IsTrue(output[pair.Key] == pair.Value);
}
}
[Test]
[TestCaseSource(typeof(BinaryCases), "ActiveTraits")]
public void TestActiveSynergyFilter(
Dictionary<TraitsEnum, int> synergies,
HashSet<TraitsEnum> expected
)
[TestCaseSource(typeof(TraitTestCases), "ActiveTraits")]
public void TestActiveSynergyFilter(Dictionary<int, int> synergies, int 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));
}
int output = TraitsMapping.FilterActiveTraits(synergies);
Assert.IsTrue(Equals(output, expected));
}
[Test]
@@ -46,68 +35,94 @@ namespace Assets.Data
{
foreach (var champTraits in TraitsMapping.ChampsTraits)
{
foreach (var trait in champTraits.Value)
var champion = champTraits.Key;
var traits = TraitUtils.FromInt(champTraits.Value);
foreach (var trait in traits)
{
Assert.IsTrue(TraitsMapping.TraitsChamp[trait].Contains(champTraits.Key));
var allChampofTrait = TraitsMapping.TraitsChamp[(int)trait];
HashSet<ChampionsEnum> champions = ChampionUtils.FromLong(allChampofTrait);
Assert.IsTrue(
ChampionUtils.ContainsChampion(
allChampofTrait,
champion
)
);
}
}
foreach (var traitChamps in TraitsMapping.TraitsChamp)
foreach (var traitChamp in TraitsMapping.TraitsChamp)
{
foreach (var champ in traitChamps.Value)
var trait = traitChamp.Key;
var champions = ChampionUtils.FromLong(traitChamp.Value);
foreach (var champion in champions)
{
Assert.IsTrue(TraitsMapping.ChampsTraits[champ].Contains(traitChamps.Key));
var allTraitsOfChamp = TraitsMapping.ChampsTraits[(long)champion];
Assert.IsTrue(
TraitUtils.ContainsTrait(
allTraitsOfChamp,
trait
)
);
}
}
}
[Test]
[TestCaseSource(typeof(BinaryCases), "con")]
public void TestChampionCombination(HashSet<ChampionsEnum> champList, int compositionSize, int expectedCombinationCount)
[TestCaseSource(typeof(TraitTestCases), "traitsEnum")]
public void TestIntTrait(int traitInt)
{
var combination = TraitsMapping.GetChampionSubsets(champList, compositionSize);
Assert.IsTrue(combination.Count == expectedCombinationCount);
var traits = TraitUtils.FromInt(traitInt);
long output = TraitUtils.ToInt(traits);
Assert.IsTrue(traitInt == output);
}
[Test]
[TestCaseSource(typeof(TraitTestCases), "traitsToInt")]
public void TestTraitToInt(HashSet<TraitsEnum> traits, int expectedInt)
{
int output = TraitUtils.ToInt(traits);
Assert.IsTrue(output == expectedInt);
}
}
public class BinaryCases
public class TraitTestCases
{
public static IEnumerable EmblemsSynergies
{
get
{
yield return new TestCaseData(
new Dictionary<TraitsEnum, int> { { TraitsEnum.ARCANA, 1 } },
new Dictionary<TraitsEnum, int> { { TraitsEnum.ARCANA, 1 } },
new Dictionary<TraitsEnum, int> { { TraitsEnum.ARCANA, 2 } }
new Dictionary<int, int> { { (int)TraitsEnum.ARCANA, 1 } },
new Dictionary<int, int> { { (int)TraitsEnum.ARCANA, 1 } },
new Dictionary<int, int> { { (int)TraitsEnum.ARCANA, 2 } }
);
yield return new TestCaseData(
new Dictionary<TraitsEnum, int>
new Dictionary<int, int>
{
{ TraitsEnum.ARCANA, 1 },
{ TraitsEnum.DRAGON, 2 },
{ TraitsEnum.FROST, 3 },
{ TraitsEnum.HONEYMANCY, 4 },
{ TraitsEnum.PYRO, 5 },
{ TraitsEnum.WARRIOR, 6 },
{ (int)TraitsEnum.ARCANA, 1 },
{ (int)TraitsEnum.DRAGON, 2 },
{ (int)TraitsEnum.FROST, 3 },
{ (int)TraitsEnum.HONEYMANCY, 4 },
{ (int)TraitsEnum.PYRO, 5 },
{ (int)TraitsEnum.WARRIOR, 6 },
},
new Dictionary<TraitsEnum, int>
new Dictionary<int, int>
{
{ TraitsEnum.ARCANA, 1 },
{ TraitsEnum.DRAGON, 2 },
{ TraitsEnum.FROST, 3 },
{ TraitsEnum.HONEYMANCY, 4 },
{ TraitsEnum.PYRO, 5 },
{ TraitsEnum.WARRIOR, 6 },
{ (int)TraitsEnum.ARCANA, 1 },
{ (int)TraitsEnum.DRAGON, 2 },
{ (int)TraitsEnum.FROST, 3 },
{ (int)TraitsEnum.HONEYMANCY, 4 },
{ (int)TraitsEnum.PYRO, 5 },
{ (int)TraitsEnum.WARRIOR, 6 },
},
new Dictionary<TraitsEnum, int>
new Dictionary<int, int>
{
{ TraitsEnum.ARCANA, 2 },
{ TraitsEnum.DRAGON, 4 },
{ TraitsEnum.FROST, 6 },
{ TraitsEnum.HONEYMANCY, 8 },
{ TraitsEnum.PYRO, 10 },
{ TraitsEnum.WARRIOR, 12 },
{ (int)TraitsEnum.ARCANA, 2 },
{ (int)TraitsEnum.DRAGON, 4 },
{ (int)TraitsEnum.FROST, 6 },
{ (int)TraitsEnum.HONEYMANCY, 8 },
{ (int)TraitsEnum.PYRO, 10 },
{ (int)TraitsEnum.WARRIOR, 12 },
}
);
/*
@@ -145,41 +160,107 @@ namespace Assets.Data
get
{
yield return new TestCaseData(
new Dictionary<TraitsEnum, int>
new Dictionary<int, int>
{
{ TraitsEnum.ARCANA, 1 },
{ TraitsEnum.DRAGON, 2 },
{ TraitsEnum.FROST, 3 },
{ TraitsEnum.HONEYMANCY, 4 },
{ TraitsEnum.PYRO, 1 },
{ TraitsEnum.WARRIOR, 1 },
{ (int)TraitsEnum.ARCANA, 1 },
{ (int)TraitsEnum.DRAGON, 2 },
{ (int)TraitsEnum.FROST, 3 },
{ (int)TraitsEnum.HONEYMANCY, 4 },
{ (int)TraitsEnum.PYRO, 1 },
{ (int)TraitsEnum.WARRIOR, 1 },
},
TraitUtils.ToInt(
new HashSet<TraitsEnum>
{
TraitsEnum.DRAGON,
TraitsEnum.FROST,
TraitsEnum.HONEYMANCY
}
)
);
yield return new TestCaseData(
new Dictionary<int, int>
{
{ (int)TraitsEnum.ARCANA, 5 },
{ (int)TraitsEnum.FROST, 2 },
{ (int)TraitsEnum.HONEYMANCY, 7 },
{ (int)TraitsEnum.PYRO, 4 },
{ (int)TraitsEnum.WARRIOR, 3 },
},
TraitUtils.ToInt(
new HashSet<TraitsEnum>
{
TraitsEnum.ARCANA,
TraitsEnum.HONEYMANCY,
TraitsEnum.PYRO,
TraitsEnum.WARRIOR,
}
)
);
}
}
public static IEnumerable traitsEnum
{
get
{
yield return 156;
yield return 621;
yield return 123456;
yield return 5;
yield return 4194303; // max value
yield return 4194302;
}
}
public static IEnumerable traitsToInt
{
get
{
yield return new TestCaseData(
new HashSet<TraitsEnum>
{
TraitsEnum.ARCANA,
TraitsEnum.DRAGON
},
1<<0 | 1<<2
);
yield return new TestCaseData(
new HashSet<TraitsEnum>
{
TraitsEnum.ARCANA,
TraitsEnum.DRAGON,
TraitsEnum.FROST,
TraitsEnum.HONEYMANCY,
TraitsEnum.PYRO,
}
);
yield return new TestCaseData(
new Dictionary<TraitsEnum, int>
{
{ TraitsEnum.ARCANA, 5 },
{ TraitsEnum.FROST, 2 },
{ TraitsEnum.HONEYMANCY, 7 },
{ TraitsEnum.PYRO, 4 },
{ TraitsEnum.WARRIOR, 3 },
TraitsEnum.WARRIOR
},
new HashSet<TraitsEnum>
{
TraitsEnum.ARCANA,
TraitsEnum.HONEYMANCY,
TraitsEnum.PYRO,
TraitsEnum.WARRIOR,
}
);
1<<0 | 1<<2 | 1<<6 | 1<<7 | 1<<9 | 1<<22
);
yield return new TestCaseData(new HashSet<TraitsEnum>{TraitsEnum.ARCANA},1 << 0);
yield return new TestCaseData(new HashSet<TraitsEnum>{TraitsEnum.CHRONO},1 << 1);
yield return new TestCaseData(new HashSet<TraitsEnum>{TraitsEnum.DRAGON},1 << 2);
yield return new TestCaseData(new HashSet<TraitsEnum>{TraitsEnum.DRUID},1 << 3);
yield return new TestCaseData(new HashSet<TraitsEnum>{TraitsEnum.ELDRICHT},1 << 4);
yield return new TestCaseData(new HashSet<TraitsEnum>{TraitsEnum.FAERIE},1 << 5);
yield return new TestCaseData(new HashSet<TraitsEnum>{TraitsEnum.FROST},1 << 6);
yield return new TestCaseData(new HashSet<TraitsEnum>{TraitsEnum.HONEYMANCY},1 << 7);
yield return new TestCaseData(new HashSet<TraitsEnum>{TraitsEnum.PORTAL},1 << 8);
yield return new TestCaseData(new HashSet<TraitsEnum>{TraitsEnum.PYRO},1 << 9);
yield return new TestCaseData(new HashSet<TraitsEnum>{TraitsEnum.SUGARCRAFT},1 << 10);
yield return new TestCaseData(new HashSet<TraitsEnum>{TraitsEnum.WITCHCRAFT},1 << 11);
yield return new TestCaseData(new HashSet<TraitsEnum>{TraitsEnum.BASTION},1 << 12);
yield return new TestCaseData(new HashSet<TraitsEnum>{TraitsEnum.BLASTER},1 << 13);
yield return new TestCaseData(new HashSet<TraitsEnum>{TraitsEnum.HUNTER},1 << 14);
yield return new TestCaseData(new HashSet<TraitsEnum>{TraitsEnum.INCANTATOR},1 << 15);
yield return new TestCaseData(new HashSet<TraitsEnum>{TraitsEnum.MAGE},1 << 16);
yield return new TestCaseData(new HashSet<TraitsEnum>{TraitsEnum.MULTISTRIKER},1 << 17);
yield return new TestCaseData(new HashSet<TraitsEnum>{TraitsEnum.PRESERVER},1 << 18);
yield return new TestCaseData(new HashSet<TraitsEnum>{TraitsEnum.SCHOLAR},1 << 19);
yield return new TestCaseData(new HashSet<TraitsEnum>{TraitsEnum.SHAPESHIFTER},1 << 20);
yield return new TestCaseData(new HashSet<TraitsEnum>{TraitsEnum.VANGUARD},1 << 21);
yield return new TestCaseData(new HashSet<TraitsEnum>{TraitsEnum.WARRIOR},1 << 22);
}
}
}