using System; using System.Collections.Generic; using System.Linq; using System.Reflection; using FluentAssertions; using PKHeX.Core; using Xunit; namespace PKHeX.Tests.Legality { public class LegalityData { [Fact] public void EvolutionsOrdered() // feebas, see issue #2394 { var trees = typeof(EvolutionTree).GetFields(BindingFlags.Static | BindingFlags.NonPublic); var fEntries = typeof(EvolutionTree).GetFields(BindingFlags.NonPublic | BindingFlags.Instance).First(z => z.Name == "Entries"); foreach (var t in trees) { var gen = Convert.ToInt32(t.Name[7].ToString()); if (gen <= 4) continue; if (t.GetValue(typeof(EvolutionTree)) is not EvolutionTree fTree) throw new ArgumentException(nameof(fTree)); if (fEntries.GetValue(fTree) is not IReadOnlyList entries) throw new ArgumentException(nameof(entries)); var feebas = entries[(int)Species.Feebas]; if (feebas.Length == 0) continue; var t1 = (EvolutionType)feebas[0].Method; var t2 = (EvolutionType)feebas[1].Method; t1.IsLevelUpRequired().Should().BeFalse(); t2.IsLevelUpRequired().Should().BeTrue(); } } } }