using System; using System.Collections.Generic; using System.Linq; using System.Text; using Xunit; using d20_SRD_Spell_Lists.Models; using System.Xml.Linq; using System.IO; using System.Xml.Serialization; using System.Xml; namespace d20_SRD_Spell_Lists_Tests { public class CharacterTests { private string charFile; public CharacterTests() { charFile = "AppData/TestCharacter.xml"; string defaultCharSpells = "ThomasinaClericDummy Character SpellA short description."; using (StreamWriter outfile = new StreamWriter(charFile)) { outfile.Write(defaultCharSpells); } } [Fact] public void loadingValidCharacterShouldResultInOneCharacterSpell() { Character c; XmlSerializer ser = new XmlSerializer(typeof(Character)); using (FileStream f = new FileStream(charFile, FileMode.Open)) { c = (Character)ser.Deserialize(f); } Assert.Equal(1, c.Spells.Count); } [Fact] public void loadingValidCharacterShouldLoadAName() { Character c; XmlSerializer ser = new XmlSerializer(typeof(Character)); using (FileStream f = new FileStream(charFile, FileMode.Open)) { c = (Character)ser.Deserialize(f); } Assert.Equal("Thomasina", c.Name); } [Fact] public void loadingValidCharacterShouldLoadAClass() { Character c; XmlSerializer ser = new XmlSerializer(typeof(Character)); using (FileStream f = new FileStream(charFile, FileMode.Open)) { c = (Character)ser.Deserialize(f); } Assert.Equal("Cleric", c.CharacterClass.ToString()); } [Fact] public void useCorrectAttributeModifiers() { Character c = new Character(); c.SpellCastingAttribute = 8; Assert.Equal(-1, c.SpellCastingAttributeMod); c.SpellCastingAttribute = 9; Assert.Equal(-1, c.SpellCastingAttributeMod); c.SpellCastingAttribute = 10; Assert.Equal(0, c.SpellCastingAttributeMod); c.SpellCastingAttribute = 11; Assert.Equal(0, c.SpellCastingAttributeMod); c.SpellCastingAttribute = 22; Assert.Equal(6, c.SpellCastingAttributeMod); c.SpellCastingAttribute = 17; Assert.Equal(3, c.SpellCastingAttributeMod); } [Fact] public void useCorrectBardSpellCastingAttribute() { Character c = new Character(); c.CharacterClass = Character.SpellCastingClasses.Bard; Assert.Equal("Charisma", c.SpellCastingAttributeName); } [Fact] public void useCorrectClericSpellCastingAttribute() { Character c = new Character(); c.CharacterClass = Character.SpellCastingClasses.Cleric; Assert.Equal("Wisdom", c.SpellCastingAttributeName); } [Fact] public void useCorrectDruidSpellCastingAttribute() { Character c = new Character(); c.CharacterClass = Character.SpellCastingClasses.Druid; Assert.Equal("Wisdom", c.SpellCastingAttributeName); } [Fact] public void useCorrectPaladinSpellCastingAttribute() { Character c = new Character(); c.CharacterClass = Character.SpellCastingClasses.Paladin; Assert.Equal("Wisdom", c.SpellCastingAttributeName); } [Fact] public void useCorrectRangerSpellCastingAttribute() { Character c = new Character(); c.CharacterClass = Character.SpellCastingClasses.Ranger; Assert.Equal("Wisdom", c.SpellCastingAttributeName); } [Fact] public void useCorrectSorcererSpellCastingAttribute() { Character c = new Character(); c.CharacterClass = Character.SpellCastingClasses.Sorcerer; Assert.Equal("Charisma", c.SpellCastingAttributeName); } [Fact] public void useCorrectWizardSpellCastingAttribute() { Character c = new Character(); c.CharacterClass = Character.SpellCastingClasses.Wizard; Assert.Equal("Intelligence", c.SpellCastingAttributeName); } [Fact] public void useCorrectBonusSpells() { Character c = new Character(); Assert.Equal(10, c.BonusSpells.Length); c.SpellCastingAttribute = 17; c.CharacterClass = Character.SpellCastingClasses.Wizard; Assert.Equal(0, c.BonusSpells[0]); Assert.Equal(1, c.BonusSpells[1]); Assert.Equal(1, c.BonusSpells[3]); Assert.Equal(0, c.BonusSpells[4]); c.SpellCastingAttribute = 13; c.CharacterClass = Character.SpellCastingClasses.Bard; Assert.Equal(0, c.BonusSpells[0]); Assert.Equal(1, c.BonusSpells[1]); Assert.Equal(0, c.BonusSpells[2]); Assert.Equal(0, c.BonusSpells[4]); c.SpellCastingAttribute = 22; c.CharacterClass = Character.SpellCastingClasses.Cleric; Assert.Equal(0, c.BonusSpells[0]); Assert.Equal(2, c.BonusSpells[1]); Assert.Equal(2, c.BonusSpells[2]); Assert.Equal(1, c.BonusSpells[4]); Assert.Equal(1, c.BonusSpells[6]); Assert.Equal(0, c.BonusSpells[7]); } [Fact] public void addingClassSpellsShouldAddClassSpells() { Character c = new Character(); c.CharacterClass = Character.SpellCastingClasses.Cleric; c.addAllClassSpells(); Assert.Equal(237, c.Spells.Count); } } }