using GeometryTD.CustomUtility; using GeometryTD.Definition; using NUnit.Framework; namespace GeometryTD.Tests.EditMode { public sealed class InventoryRarityRuleServiceTests { [TestCase(RarityType.None, RarityType.White)] [TestCase(RarityType.White, RarityType.White)] [TestCase(RarityType.Green, RarityType.Green)] [TestCase(RarityType.Red, RarityType.Red)] [TestCase((RarityType)(-1), RarityType.White)] [TestCase((RarityType)99, RarityType.White)] public void NormalizeComponentRarity_Returns_Expected_Value( RarityType input, RarityType expected) { RarityType result = InventoryRarityRuleService.NormalizeComponentRarity(input); Assert.That(result, Is.EqualTo(expected)); } [TestCase(RarityType.White, RarityType.Green, RarityType.Green, RarityType.Green)] [TestCase(RarityType.Green, RarityType.Blue, RarityType.Purple, RarityType.Blue)] [TestCase(RarityType.Red, RarityType.White, RarityType.White, RarityType.Green)] [TestCase(RarityType.None, RarityType.None, RarityType.None, RarityType.White)] [TestCase((RarityType)99, RarityType.Red, RarityType.Red, RarityType.Purple)] public void ResolveTowerRarity_Returns_Average_Rounded_Result( RarityType muzzleRarity, RarityType bearingRarity, RarityType baseRarity, RarityType expected) { RarityType result = InventoryRarityRuleService.ResolveTowerRarity( muzzleRarity, bearingRarity, baseRarity); Assert.That(result, Is.EqualTo(expected)); } [Test] public void CreateSampleInventory_Uses_Same_Tower_Rarity_Rule_As_Service() { BackpackInventoryData inventory = InventorySeedUtility.CreateSampleInventory(); TowerItemData tower = inventory.Towers[0]; MuzzleCompItemData muzzle = inventory.MuzzleComponents[0]; BearingCompItemData bearing = inventory.BearingComponents[0]; BaseCompItemData baseComp = inventory.BaseComponents[0]; RarityType expected = InventoryRarityRuleService.ResolveTowerRarity( muzzle.Rarity, bearing.Rarity, baseComp.Rarity); Assert.That(tower.Rarity, Is.EqualTo(expected)); } } }