using GeometryTD.Definition; using GeometryTD.UI; using NUnit.Framework; namespace GeometryTD.Tests.EditMode { public sealed class ContinueChallengeMultiplierTests { [Test] public void BuildRawData_Uses_OneX_Multiplier_For_First_Loop_And_Invalid_Input() { CombatInfoFormRawData firstLoop = CombatInfoFormUseCase.BuildRawData( LevelThemeType.Plain, levelId: 1, currentPhaseIndex: 1, totalPhaseCount: 4, coin: 10, baseHp: 20, baseHpMax: 20, canEnd: true); CombatInfoFormRawData invalidInput = CombatInfoFormUseCase.BuildRawData( LevelThemeType.Plain, levelId: 1, currentPhaseIndex: 0, totalPhaseCount: 0, coin: 10, baseHp: 20, baseHpMax: 20, canEnd: false); Assert.That(firstLoop.EnemyHpRateMultiplier, Is.EqualTo(1)); Assert.That(invalidInput.EnemyHpRateMultiplier, Is.EqualTo(1)); } [Test] public void BuildRawData_Doubles_EnemyHp_After_Each_Full_Loop() { CombatInfoFormRawData secondLoop = CombatInfoFormUseCase.BuildRawData( LevelThemeType.Volcano, levelId: 2, currentPhaseIndex: 5, totalPhaseCount: 4, coin: 15, baseHp: 18, baseHpMax: 20, canEnd: true); CombatInfoFormRawData thirdLoop = CombatInfoFormUseCase.BuildRawData( LevelThemeType.Mountain, levelId: 3, currentPhaseIndex: 9, totalPhaseCount: 4, coin: 20, baseHp: 16, baseHpMax: 20, canEnd: true); Assert.That(secondLoop.EnemyHpRateMultiplier, Is.EqualTo(2)); Assert.That(thirdLoop.EnemyHpRateMultiplier, Is.EqualTo(4)); } [Test] public void BuildRawData_Clamps_EnemyHp_Multiplier_At_IntMaxValue() { CombatInfoFormRawData rawData = CombatInfoFormUseCase.BuildRawData( LevelThemeType.Plain, levelId: 1, currentPhaseIndex: 121, totalPhaseCount: 4, coin: 30, baseHp: 10, baseHpMax: 20, canEnd: false); Assert.That(rawData.EnemyHpRateMultiplier, Is.EqualTo(int.MaxValue)); } } }