- S4-01 先确定 M1 需要的品质 / Tag

- S4-02 把品质计算整理成单一入口 规则边界
- S4-03 先固化 Tag 系统设计与首发范围
This commit is contained in:
SepComet
2026-03-09 20:34:22 +08:00
parent 2d09b01c55
commit 73b7adedb8
11 changed files with 651 additions and 35 deletions
@@ -0,0 +1,60 @@
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));
}
}
}
@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: d64c323af12f4036a8c0baed83f750aa
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant: