229 lines
7.3 KiB
Java
229 lines
7.3 KiB
Java
import Entity.Player;
|
|
import Item.*;
|
|
import Job.Wizard;
|
|
import Job.Knight;
|
|
import org.junit.jupiter.api.Test;
|
|
|
|
import static org.hamcrest.MatcherAssert.assertThat;
|
|
import static org.hamcrest.Matchers.equalTo;
|
|
import static org.hamcrest.Matchers.nullValue;
|
|
import static org.junit.jupiter.api.Assertions.*;
|
|
|
|
public class EquipmentTest {
|
|
private final Knight knight = new Knight();
|
|
private final Wizard wizard = new Wizard();
|
|
private Player defaultWizard(){
|
|
return new Player("name", wizard);
|
|
}
|
|
private AttributeModifier defaultAttributeModifier(){
|
|
return new AttributeModifier(4,8,7,1,2,8);
|
|
}
|
|
private BodyArmour defaultArmorType(){
|
|
return new BodyArmour("Body Armour", defaultAttributeModifier());
|
|
}
|
|
private Equipment defaultBodyArmour() {
|
|
AttributeModifier a = defaultAttributeModifier();
|
|
BodyArmour b = new BodyArmour("Body Armour", a);
|
|
return new Equipment("5", "Thornmail", b, knight, 2);
|
|
}
|
|
|
|
private Equipment defaultMageHat() {
|
|
AttributeModifier a = new AttributeModifier(4,8,2,10,2,8);
|
|
MageHat b = new MageHat("Mage Hat", a);
|
|
return new Equipment("6", "Deathmage Cap", b, wizard, 1);
|
|
}
|
|
|
|
@Test
|
|
void setIdOnCreation(){
|
|
var e = defaultBodyArmour();
|
|
assertEquals(defaultBodyArmour().getId(), e.getId(), "Equipment id should have been set");
|
|
}
|
|
|
|
@Test
|
|
void setNameOnCreation() {
|
|
var e = defaultBodyArmour();
|
|
assertEquals("Thornmail", e.getName(), "Equipment name should have been set");
|
|
}
|
|
|
|
@Test
|
|
void returnsUnmodifiedMagicStrengthIfNoEquipment(){
|
|
var w = new Player("name");
|
|
assertEquals(0, w.getMagicStrength());
|
|
}
|
|
|
|
@Test
|
|
void returnsUnmodifiedDefenceIfNoEquipment(){
|
|
var w = new Player("name");
|
|
assertEquals(0, w.getDefence());
|
|
}
|
|
@Test
|
|
void returnsUnmodifiedStrengthIfNoEquipment(){
|
|
var w = new Player("name");
|
|
assertEquals(0, w.getStrength());
|
|
}
|
|
@Test
|
|
void returnsUnmodifiedMagicDefenceIfNoEquipment(){
|
|
var w = new Player("name");
|
|
assertEquals(0, w.getMagicDefence());
|
|
}
|
|
|
|
@Test
|
|
void setEquipmentWeightOnCreation() {
|
|
var e = defaultBodyArmour();
|
|
assertEquals(defaultBodyArmour().getWeight(), e.getWeight(), "Equipment weight should have been set");
|
|
}
|
|
|
|
@Test
|
|
void setBodyArmourTypeOnCreation() {
|
|
var e = defaultBodyArmour();
|
|
assertEquals("Body Armour", e.getEquipmentType().getName(), "Equipment type should have been set");
|
|
}
|
|
|
|
@Test
|
|
void setMageHatTypeOnCreation() {
|
|
var e = defaultMageHat();
|
|
assertEquals("Mage Hat", e.getEquipmentType().getName(), "Equipment type should have been set");
|
|
}
|
|
|
|
@Test
|
|
void setSlotOnCreation() {
|
|
var e = defaultBodyArmour();
|
|
assertEquals(2, e.getSlot(), "Equipment slot should have been set");
|
|
}
|
|
|
|
@Test
|
|
void setMaxHpModOnCreation() {
|
|
var e = defaultBodyArmour();
|
|
assertEquals(4, e.getEquipmentType().getModifiers().getMaxHpMod(), "Equipment max hp modifier should have been set");
|
|
}
|
|
|
|
@Test
|
|
void setMaxMpModOnCreation() {
|
|
var e = defaultBodyArmour();
|
|
assertEquals(8, e.getEquipmentType().getModifiers().getMaxMpMod(), "Equipment max mp modifier should have been set");
|
|
}
|
|
|
|
@Test
|
|
void setStrModOnCreation() {
|
|
var e = defaultBodyArmour();
|
|
assertEquals(7, e.getEquipmentType().getModifiers().getStrMod(), "Equipment strength modifier should have been set");
|
|
}
|
|
|
|
@Test
|
|
void setMagicStrModOnCreation() {
|
|
var e = defaultBodyArmour();
|
|
assertEquals(1, e.getEquipmentType().getModifiers().getMagicStrMod(), "Equipment magic strength modifier should have been set");
|
|
}
|
|
|
|
@Test
|
|
void setDefModOnCreation() {
|
|
var e = defaultBodyArmour();
|
|
assertEquals(4, e.getEquipmentType().getModifiers().getDefMod(), "Equipment defence modifier should have been set");
|
|
}
|
|
|
|
@Test
|
|
void setMagicDefModOnCreation() {
|
|
var e = defaultBodyArmour();
|
|
assertEquals(16, e.getEquipmentType().getModifiers().getMagicDefMod(), "Equipment magic defence modifier should have been set");
|
|
}
|
|
|
|
@Test
|
|
void canEquipWithRightJob() {
|
|
var p = defaultWizard();
|
|
p.equip(defaultMageHat());
|
|
assertTrue(p.getEquipments().get(defaultMageHat().getSlot()).equals(defaultMageHat()), "Wizard can equip wizard hat");
|
|
}
|
|
|
|
@Test
|
|
void isNotEqualIfNameIsDifferent() {
|
|
var e1 = new Equipment("e1", "equipment 1", defaultArmorType(), knight, 1);
|
|
var e2 = new Equipment("e2", "equipment 2", defaultArmorType(), knight, 1);
|
|
assertFalse(e1.equals(e2));
|
|
}
|
|
|
|
|
|
@Test
|
|
void canNotEquipWithWrongJob() {
|
|
var p = defaultWizard();
|
|
IllegalStateException exception = assertThrows(
|
|
IllegalStateException.class,
|
|
() -> p.equip(defaultBodyArmour())
|
|
);
|
|
assertTrue(exception.getMessage().contains("A player with this job can not equip this equipment"));
|
|
}
|
|
|
|
@Test
|
|
void canNotEquipAlreadyEquippedSlot() {
|
|
AttributeModifier a = new AttributeModifier(2,2,2,2,2,8);
|
|
MageHat b = new MageHat("Mage Hat", a);
|
|
Equipment e = new Equipment("7", "Mage hat2", b, wizard, 1);
|
|
var p = defaultWizard();
|
|
p.equip(defaultMageHat());
|
|
IllegalStateException exception = assertThrows(
|
|
IllegalStateException.class,
|
|
() -> p.equip(e)
|
|
);
|
|
assertTrue(exception.getMessage().contains("Equipment slot already filled"));
|
|
}
|
|
|
|
@Test
|
|
void bodyArmourToString() {
|
|
AttributeModifier a = new AttributeModifier(1,1,1,1,1,1);
|
|
BodyArmour b = new BodyArmour("Body Armour", a);
|
|
assertEquals("Body Armour111122", b.toString(), "Equipment name should have been set");
|
|
}
|
|
|
|
@Test
|
|
void mageHatToString() {
|
|
AttributeModifier a = new AttributeModifier(1,1,1,1,1,1);
|
|
MageHat b = new MageHat("Mage Hat", a);
|
|
assertEquals("Mage Hat111212", b.toString(), "Equipment name should have been set");
|
|
}
|
|
|
|
@Test
|
|
void equipmentModifiesPlayerHealth() {
|
|
var p = defaultWizard();
|
|
p.setHealth(100);
|
|
p.equip(defaultMageHat());
|
|
assertEquals(104, p.getHealth(), "Equipment modifies health");
|
|
}
|
|
|
|
@Test
|
|
void equipmentModifiesPlayerMana() {
|
|
var p = defaultWizard();
|
|
p.setMana(30);
|
|
p.equip(defaultMageHat());
|
|
assertEquals(38, p.getMana(), "Equipment modifies mana");
|
|
}
|
|
|
|
@Test
|
|
void equipmentModifiesPlayerStrength() {
|
|
var p = defaultWizard();
|
|
p.equip(defaultMageHat());
|
|
assertEquals(2, p.getStrength(), "Equipment modifies strength");
|
|
}
|
|
|
|
@Test
|
|
void equipmentModifiesPlayerMagicStrength() {
|
|
var p = defaultWizard();
|
|
p.equip(defaultMageHat());
|
|
assertEquals(20, p.getMagicStrength(), "Equipment modifies magic strength");
|
|
}
|
|
|
|
@Test
|
|
void equipmentModifiesPlayerDefence() {
|
|
var p = defaultWizard();
|
|
p.equip(defaultMageHat());
|
|
assertEquals(2, p.getDefence(), "Equipment modifies defence");
|
|
}
|
|
|
|
@Test
|
|
void equipmentModifiesPlayerMagicDefence() {
|
|
var p = defaultWizard();
|
|
p.equip(defaultMageHat());assertEquals(16, p.getMagicDefence() , "Equipment modifies magic defence");
|
|
}
|
|
|
|
|
|
|
|
}
|