package simulation import org.junit.jupiter.api.Assertions import java.util.* import kotlin.test.Test class AttackDiceTest { @Test fun testAttackDiceImplementation() { val r = Random() // Test no crit below threshold val dice = AttackDice("1d20") val result = dice.roll(r) if (result.result < 20) { Assertions.assertFalse(dice.isCrit(result)) } else { Assertions.assertTrue(dice.isCrit(result)) } // Test no crit below threshold val dice2 = AttackDice("1d20c19") val result2 = dice2.roll(r) if (result2.result < 10) { Assertions.assertFalse(dice2.isCrit(result2)) } else { Assertions.assertTrue(dice2.isCrit(result2)) } // Test crit threshold other than max val dice3 = AttackDice("2d10c8") val result3 = dice3.roll(r) if (result3.result >= 8) { Assertions.assertTrue(dice3.isCrit(result3)) } else { Assertions.assertFalse(dice3.isCrit(result3)) } } @Test fun validateCritFunctionality() { val trueCritResult = RollResult(1, 20, 20) val fakeCritResult = RollResult(1, 20, 19) val defaultRoll = AttackDice("1d20") val verboseDefaultCrit = AttackDice("1d20c20") val normalModifiedCrit = AttackDice("1d20c19") Assertions.assertFalse(defaultRoll.isCrit(fakeCritResult)) Assertions.assertFalse(verboseDefaultCrit.isCrit(fakeCritResult)) Assertions.assertTrue(normalModifiedCrit.isCrit(fakeCritResult)) Assertions.assertTrue(defaultRoll.isCrit(trueCritResult)) Assertions.assertTrue(verboseDefaultCrit.isCrit(trueCritResult)) Assertions.assertTrue(normalModifiedCrit.isCrit(trueCritResult)) } }