package br.com.while42.rpgcs.model.character; import java.util.ArrayList; import java.util.List; import java.util.Set; import android.test.AndroidTestCase; import br.com.while42.rpgcs.model.character.attributes.TypeEyeColor; import br.com.while42.rpgcs.model.character.attributes.TypeGender; import br.com.while42.rpgcs.model.character.attributes.TypeHairColor; import br.com.while42.rpgcs.model.character.attributes.TypeRpgAlignment; import br.com.while42.rpgcs.model.character.attributes.TypeRpgLanguage; import br.com.while42.rpgcs.model.character.attributes.TypeRpgRace; import br.com.while42.rpgcs.model.character.attributes.TypeRpgReligion; import br.com.while42.rpgcs.model.character.attributes.TypeRpgSize; import br.com.while42.rpgcs.model.character.attributes.TypeRpgSkill; import br.com.while42.rpgcs.model.character.attributes.TypeSkinColor; import br.com.while42.rpgcs.model.character.attributes.TypeVision; import br.com.while42.rpgcs.model.classes.AbstractRpgClass; import br.com.while42.rpgcs.model.classes.Barbarian; import br.com.while42.rpgcs.model.classes.Monk; import br.com.while42.rpgcs.model.classes.Sorcerer; import br.com.while42.rpgcs.model.classes.bonuses.ExperienceAndLevel; import br.com.while42.rpgcs.model.equip.Equipments; import br.com.while42.rpgcs.model.equip.weapons.SizeWeapon; import br.com.while42.rpgcs.model.equip.weapons.simple.ranged.CrossbowLight; import br.com.while42.rpgcs.model.equip.weapons.simple.ranged.Dart; public class RpgCharacterTest extends AndroidTestCase { public static List<RpgCharacter> getList() { List<RpgCharacter> rpgCharacterSheets = new ArrayList<RpgCharacter>(); { BuilderCharacteristics builder = new BuilderCharacteristics(); Characteristics characteristics = builder.setName("Test Blob") .setRace(TypeRpgRace.HUMAN) .setAlignment(TypeRpgAlignment.TRUE_NEUTRAL) .setReligion(TypeRpgReligion.NONE) .setSize(TypeRpgSize.MEDIUM) .setAge(30) .setGender(TypeGender.MEN) .setHeight(169) .setWeight(83) .setEye(TypeEyeColor.BROWN) .setHair(TypeHairColor.BROWN) .setSkin(TypeSkinColor.BROWN) .setVision(TypeVision.NORMAL) .toCharacteristics(); RpgCharacter rc = new RpgCharacter(characteristics); AbstractRpgClass barbarian = new Barbarian(); barbarian.setClassLevel(1); rc.getRpgClasses().add(barbarian); Abilities ab = rc.getAbilities(); ab.setStrength(18); ab.setDexterity(17); ab.setIntelligence(16); ab.setWisdom(15); ab.setCharisma(14); ab.setConstitution(13); Defences df = rc.getDefences(); df.setArmorClass(10); df.setCurrentHitPoints(11); df.setFlatFooted(12); df.setHitPoints(13); df.setInitiative(14); df.setSpellResistance(15); df.setTouch(16); SavingThrows st = rc.getSavingThrows(); st.setFortitude(10); st.setReflex(11); st.setThrowsWill(12); Money money = rc.getMoney(); money.setCopperPiece(10L); money.setGoldPiece(100L); money.setPlatinumPiece(1000L); money.setSilverPiece(10000L); Equipments equip = rc.getEquipments(); equip.addWeapon(new Dart(), SizeWeapon.MEDIUM); equip.addWeapon(new CrossbowLight(), SizeWeapon.MEDIUM); Languages languages = rc.getLanguages(); languages.add(TypeRpgLanguage.ABYSSAL); languages.add(TypeRpgLanguage.AQUAN); languages.add(TypeRpgLanguage.AURAN); languages.add(TypeRpgLanguage.CELESTIAL); rpgCharacterSheets.add(rc); } { BuilderCharacteristics builder = new BuilderCharacteristics(); Characteristics characteristics = builder.setName("Test Snarf") .setRace(TypeRpgRace.HUMAN) .setAlignment(TypeRpgAlignment.TRUE_NEUTRAL) .setReligion(TypeRpgReligion.NONE) .setSize(TypeRpgSize.MEDIUM) .setAge(30) .setGender(TypeGender.MEN) .setHeight(169) .setWeight(83) .setEye(TypeEyeColor.BROWN) .setHair(TypeHairColor.BROWN) .setSkin(TypeSkinColor.BROWN) .setVision(TypeVision.NORMAL) .toCharacteristics(); RpgCharacter rc = new RpgCharacter(characteristics); Equipments equip = rc.getEquipments(); equip.addWeapon(new Dart(), SizeWeapon.MEDIUM);; rpgCharacterSheets.add(rc); } { BuilderCharacteristics builder = new BuilderCharacteristics(); Characteristics characteristics = builder.setName("Test Deltorei") .setRace(TypeRpgRace.HUMAN) .setAlignment(TypeRpgAlignment.TRUE_NEUTRAL) .setReligion(TypeRpgReligion.NONE) .setSize(TypeRpgSize.MEDIUM) .setAge(30) .setGender(TypeGender.MEN) .setHeight(169) .setWeight(83) .setEye(TypeEyeColor.BROWN) .setHair(TypeHairColor.BROWN) .setSkin(TypeSkinColor.BROWN) .setVision(TypeVision.NORMAL) .toCharacteristics(); RpgCharacter rc = new RpgCharacter(characteristics); AbstractRpgClass monk = new Monk(); monk.setClassLevel(20); rc.getRpgClasses().add(monk); Abilities ab = rc.getAbilities(); ab.setStrength(18); ab.setDexterity(17); ab.setIntelligence(16); ab.setWisdom(15); ab.setCharisma(14); ab.setConstitution(13); Defences df = rc.getDefences(); df.setArmorClass(10); df.setCurrentHitPoints(11); df.setFlatFooted(12); df.setHitPoints(13); df.setInitiative(14); df.setSpellResistance(15); df.setTouch(16); SavingThrows st = rc.getSavingThrows(); st.setFortitude(10); st.setReflex(11); st.setThrowsWill(12); Money money = rc.getMoney(); money.setCopperPiece(11L); money.setGoldPiece(101L); money.setPlatinumPiece(1001L); money.setSilverPiece(10001L); Equipments equip = rc.getEquipments(); equip.addWeapon(new Dart(), SizeWeapon.MEDIUM); equip.addWeapon(new CrossbowLight(), SizeWeapon.MEDIUM); Languages languages = rc.getLanguages(); languages.add(TypeRpgLanguage.CELESTIAL); languages.add(TypeRpgLanguage.COMMON); languages.add(TypeRpgLanguage.DRACONIC); languages.add(TypeRpgLanguage.DRUIDIC); Skills skills = rc.getSkills(); skills.add(new Skill(TypeRpgSkill.APPRAISE, 1)); skills.add(new Skill(TypeRpgSkill.BALANCE, 2)); skills.add(new Skill(TypeRpgSkill.BLUFF, 3)); skills.add(new Skill(TypeRpgSkill.CLIMB, 1)); skills.add(new Skill(TypeRpgSkill.CONCENTRATION, 5)); skills.add(new Skill(TypeRpgSkill.CRAFT, 4)); skills.add(new Skill(TypeRpgSkill.DECIPHER_SCRIPT, 3)); skills.add(new Skill(TypeRpgSkill.DIPLOMACY, 2)); skills.add(new Skill(TypeRpgSkill.DISABLE_DEVICE, 2)); skills.add(new Skill(TypeRpgSkill.DISGUISE, 1)); skills.add(new Skill(TypeRpgSkill.ESCAPE_ARTIST, 1)); skills.add(new Skill(TypeRpgSkill.FORGERY, 5)); skills.add(new Skill(TypeRpgSkill.GATHER_INFORMATION, 5)); skills.add(new Skill(TypeRpgSkill.HANDLE_ANIMAL, 10)); skills.add(new Skill(TypeRpgSkill.HEAL, -1)); rpgCharacterSheets.add(rc); } { BuilderCharacteristics builder = new BuilderCharacteristics(); Characteristics characteristics = builder.setName("Test Galadriel") .setRace(TypeRpgRace.ELF) .setAlignment(TypeRpgAlignment.TRUE_NEUTRAL) .setReligion(TypeRpgReligion.OTHER) .setSize(TypeRpgSize.MEDIUM) .setAge(30) .setGender(TypeGender.WOMAN) .setHeight(169) .setWeight(83) .setEye(TypeEyeColor.DEEP_BLUE) .setHair(TypeHairColor.WHITE) .setSkin(TypeSkinColor.WHITE) .setVision(TypeVision.NORMAL) .toCharacteristics(); RpgCharacter rc = new RpgCharacter(characteristics); AbstractRpgClass sorcerer = new Sorcerer(); sorcerer.setClassLevel(ExperienceAndLevel.MAX_LEVEL); rc.getRpgClasses().add(sorcerer); Abilities ab = rc.getAbilities(); ab.setStrength(18); ab.setDexterity(17); ab.setIntelligence(16); ab.setWisdom(15); ab.setCharisma(14); ab.setConstitution(13); Defences df = rc.getDefences(); df.setArmorClass(10); df.setCurrentHitPoints(11); df.setFlatFooted(12); df.setHitPoints(13); df.setInitiative(14); df.setSpellResistance(15); df.setTouch(16); SavingThrows st = rc.getSavingThrows(); st.setFortitude(10); st.setReflex(11); st.setThrowsWill(12); Money money = rc.getMoney(); money.setCopperPiece(20L); money.setGoldPiece(200L); money.setPlatinumPiece(2000L); money.setSilverPiece(20000L); Equipments equip = rc.getEquipments(); equip.addWeapon(new Dart(), SizeWeapon.MEDIUM); equip.addWeapon(new CrossbowLight(), SizeWeapon.MEDIUM); Languages languages = rc.getLanguages(); languages.add(TypeRpgLanguage.ELVEN); languages.add(TypeRpgLanguage.ORC); languages.add(TypeRpgLanguage.GOBLIN); languages.add(TypeRpgLanguage.COMMON); languages.add(TypeRpgLanguage.DRACONIC); languages.add(TypeRpgLanguage.GIANT); languages.add(TypeRpgLanguage.HALFLING); Skills skills = rc.getSkills(); skills.add(new Skill(TypeRpgSkill.APPRAISE, 1)); skills.add(new Skill(TypeRpgSkill.BALANCE, 2)); skills.add(new Skill(TypeRpgSkill.BLUFF, 3)); skills.add(new Skill(TypeRpgSkill.CLIMB, 1)); skills.add(new Skill(TypeRpgSkill.CONCENTRATION, 5)); skills.add(new Skill(TypeRpgSkill.CRAFT, 4)); skills.add(new Skill(TypeRpgSkill.DECIPHER_SCRIPT, 3)); skills.add(new Skill(TypeRpgSkill.DIPLOMACY, 2)); skills.add(new Skill(TypeRpgSkill.DISABLE_DEVICE, 2)); skills.add(new Skill(TypeRpgSkill.DISGUISE, 1)); skills.add(new Skill(TypeRpgSkill.ESCAPE_ARTIST, 1)); skills.add(new Skill(TypeRpgSkill.FORGERY, 5)); skills.add(new Skill(TypeRpgSkill.GATHER_INFORMATION, 5)); skills.add(new Skill(TypeRpgSkill.HANDLE_ANIMAL, 10)); skills.add(new Skill(TypeRpgSkill.HEAL, -1)); rpgCharacterSheets.add(rc); } return rpgCharacterSheets; } public void testIsPersistent() { BuilderCharacteristics builder = new BuilderCharacteristics(); Characteristics characteristics = builder.setName("Test Stark") .setRace(TypeRpgRace.HUMAN) .setAlignment(TypeRpgAlignment.TRUE_NEUTRAL) .setReligion(TypeRpgReligion.NONE) .setSize(TypeRpgSize.MEDIUM) .setAge(30) .setGender(TypeGender.MEN) .setHeight(169) .setWeight(83) .setEye(TypeEyeColor.BROWN) .setHair(TypeHairColor.BROWN) .setSkin(TypeSkinColor.BROWN) .setVision(TypeVision.NORMAL) .toCharacteristics(); RpgCharacter rc = new RpgCharacter(characteristics); assertFalse(rc.isPersistent()); } public void testBasicSerialize() { RpgCharacter rpgcs1 = getList().get(0); byte[] serializeObject = RpgCharacter.serialize(rpgcs1); RpgCharacter rpgcs2 = RpgCharacter.deserialize(serializeObject); assertEquals(rpgcs1, rpgcs2); } public void testSerialize() { for (RpgCharacter rc: getList()) { byte[] serializeObject = RpgCharacter.serialize(rc); RpgCharacter rc2 = RpgCharacter.deserialize(serializeObject); assertEquals(rc, rc2); } } public void testAbilitiesDefault() { RpgCharacter rc = getList().get(1); Abilities ab = rc.getAbilities(); assertEquals(0, ab.getStrength().intValue()); assertEquals(0, ab.getConstitution().intValue()); assertEquals(0, ab.getWisdom().intValue()); assertEquals(0, ab.getCharisma().intValue()); assertEquals(0, ab.getDexterity().intValue()); assertEquals(0, ab.getIntelligence().intValue()); } public void testAbilities() { RpgCharacter rc = getList().get(0); Abilities ab = rc.getAbilities(); assertEquals(18, ab.getStrength().intValue()); assertEquals(13, ab.getConstitution().intValue()); assertEquals(15, ab.getWisdom().intValue()); assertEquals(14, ab.getCharisma().intValue()); assertEquals(17, ab.getDexterity().intValue()); assertEquals(16, ab.getIntelligence().intValue()); } public void testLanguages() { for (RpgCharacter rc: getList()) { Languages languages = rc.getLanguages(); languages.clear(); languages.add(TypeRpgLanguage.CELESTIAL); languages.add(TypeRpgLanguage.COMMON); languages.add(TypeRpgLanguage.ORC); languages.add(TypeRpgLanguage.INFERNAL); Set<TypeRpgLanguage> langs = rc.getLanguages().getAll(); assertTrue(langs.contains(TypeRpgLanguage.CELESTIAL)); assertTrue(langs.contains(TypeRpgLanguage.COMMON)); assertTrue(langs.contains(TypeRpgLanguage.ORC)); assertTrue(langs.contains(TypeRpgLanguage.INFERNAL)); assertEquals(4, langs.size()); } } }