package fr.univamu.progav.td5; import org.junit.jupiter.api.Test; import static org.junit.jupiter.api.Assertions.*; class WizardTest { @Test void newWizard() { Wizard wizard = new Wizard(); assertEquals(20,wizard.getHealth()); assertEquals(0,wizard.getShield()); assertTrue(wizard.isAlive()); } @Test void attack() { Wizard wizard = new Wizard(); Blow b = wizard.attack(); assertEquals(4, b.magicalDamage()); assertEquals(0, b.physicalDamage()); wizard.specialAction(); b = wizard.attack(); assertEquals(4, b.magicalDamage()); assertEquals(0,b.physicalDamage()); } @Test void defend() { Wizard wizard = new Wizard(); assertEquals(20,wizard.getHealth()); wizard.defend(new Blow(6,2)); assertEquals(15,wizard.getHealth(), "Wizard loses life on physical attack, but physical damage is reduced by half of magical damage"); wizard.defend(new Blow(0,10)); assertEquals(15,wizard.getHealth(), "Wizard does not gain life on magical attack."); } @Test void specialAction() { Wizard wizard = new Wizard(); wizard.specialAction(); assertEquals(20, wizard.getHealth()); wizard.defend(new Blow(6, 2)); assertEquals(20, wizard.getHealth(), "Wizard's shield absorbs physical damage"); assertEquals(2, wizard.getShield()); wizard.defend(new Blow(6, 2)); assertEquals( 17, wizard.getHealth(), "Wizard's shield absorbs physical damage until depleted, then normal rules apply" ); assertEquals(0, wizard.getShield()); } @Test void maxShieldValue() { Wizard wizard = new Wizard(); wizard.specialAction(); wizard.defend(new Blow(5,0)); wizard.specialAction(); wizard.defend(new Blow(5,0)); assertEquals(3, wizard.getShield(),"Wizard's special action sets shield to 8 (not an addition)"); } }