public void LoadsWealthFromTable() { var data = new MemoryStore(); data.SetValue("name", "foo"); var levels = new MemoryStore(); var level1 = new MemoryStore(); level1.SetValue("level", 1); level1.SetValue("amount", "0gp"); var level2 = new MemoryStore(); level2.SetValue("level", 2); level2.SetValue("amount", "220gp"); levels.AddListItem(level1); levels.AddListItem(level2); data.SetValue("levels", levels); var wealth = new CharacterWealth(data); Assert.Equal(wealth.Name, "foo"); Assert.Equal(wealth.Levels[0].Level, 1); Assert.Equal(wealth.Levels[0].Value, 0); Assert.Equal(wealth.Levels[1].Level, 2); Assert.Equal(wealth.Levels[1].Value, 22000); }
public void BreaksDescriptionIntoIndividualComponentsForMoreFlexibleDescriptions() { // Set up Descriptors var descs = new MemoryStore(); descs.AddListItem(new MemoryStore("pattern", new string[] { "dragon" })); descs.AddListItem(new MemoryStore("color", new string[] { "black" })); // Set up Templates var temps = new MemoryStore(); temps.AddListItem(new MemoryStore("template", "{{feature}} of a {{descriptor \"color\"}} {{descriptor \"pattern\"}}.")); // Set up physical Feature var mem = new MemoryStore(); mem.SetValue("name", "tattoo"); mem.SetValue("descriptors", descs); mem.SetValue("templates", temps); var phys = new PhysicalFeature(mem); var gateway = EntityGateway <PhysicalFeature> .LoadWithSingleItem(phys); var subject = new CreatePhysicalFeatures(gateway); var character = new CharacterSheet(CharacterStrategy.Default()); character.Gender = Gender.Female; subject.ExecuteStep(character); Assert.Equal(character.Appearance.PhysicalAppearance, "Tattoo of a black dragon."); }
public CharacterDesignerTests() { var data = new MemoryStore(); data.SetValue("name", "Test One"); var steps = new MemoryStore(); steps.AddListItem(new MemoryStore("step", "Tests.Actions.CharacterGeneration.DummyStepOne")); steps.AddListItem(new MemoryStore("step", "Tests.Actions.CharacterGeneration.DummyStepTwo")); data.SetValue("steps", steps); subject = new CharacterDesigner(data); }
public void CreatingADescriptionCombinesDescriptorsAndName() { var data = new MemoryStore(); data.SetValue("name", "ponytail"); var descriptors = new MemoryStore(); descriptors.AddListItem(new MemoryStore("length", new string[] { "long" })); descriptors.AddListItem(new MemoryStore("texture", new string[] { "braided" })); data.SetValue("descriptors", descriptors); var subject = new TestDescription(data); var text = subject.CreateDescription(); Assert.Equal(text, "long braided ponytail"); }
public void CharacterDesignerWillExecuteStepsUntilCharacterIsAtStrategyLevelIfTypeIsLevelUp() { var data = new MemoryStore(); data.SetValue("name", "Test One"); data.SetValue("type", "levelup"); var steps = new MemoryStore(); steps.AddListItem(new MemoryStore("step", "Tests.Actions.CharacterGeneration.DummyStepLevelUp")); data.SetValue("steps", steps); var build = new CharacterStrategy(); build.TargetLevel = 5; var character = new CharacterSheet(build); character.SetClass(Class.CreateForTesting()); var designer = new CharacterDesigner(data); designer.ExecuteStep(character); Assert.Equal(designer.DesignerType, CharacterDesigner.Type.LevelUp); Assert.Equal(character.Level, 5); Assert.Equal(character.Age, 4); }
public void DescriptionDetailCanHaveSupportingAdjectivesToChooseFrom() { var data = new MemoryStore(); data.SetValue("name", "ponytail"); var descriptors = new MemoryStore(); descriptors.AddListItem(new MemoryStore("length", new string[] { "long", "short", "waist-length" })); descriptors.AddListItem(new MemoryStore("texture", new string[] { "messy", "tidy", "wavy", "straight", "high", "braided" })); data.SetValue("descriptors", descriptors); var subject = new TestDescription(data); Assert.Equal(subject.Name, "ponytail"); Assert.Single(subject.Descriptors.Values.ElementAt(0), "long"); Assert.Single(subject.Descriptors.Values.ElementAt(1), "wavy"); }
public void SupportsNamedDescriptors() { var data = new MemoryStore(); data.SetValue("name", "ponytail"); var descriptors = new MemoryStore(); descriptors.AddListItem(new MemoryStore("color", "red, green, blue")); data.SetValue("descriptors", descriptors); var subject = new TestDescription(data); Assert.Single(subject.Descriptors.Keys, "color"); }
public void PassInConfigurationDataToStepIfAppropriate() { var data = new MemoryStore(); data.SetValue("name", "Test One"); var configureStep = new MemoryStore(); configureStep.SetValue("step", "Tests.Actions.CharacterGeneration.DummyStepWithConfiguration"); configureStep.SetValue("other-option", "fourteen"); var steps = new MemoryStore(); steps.AddListItem(configureStep); data.SetValue("steps", steps); var designer = new CharacterDesigner(data); var character = CharacterTestTemplates.AverageBob(); designer.ExecuteStep(character); Assert.Equal(configureStep, character.Get <IObjectStore>()); Assert.Equal("fourteen", configureStep.GetString("other-option")); }
public void LoadFromObjectStore() { var data = new MemoryStore(); data.SetValue("name", "Bat"); var modifiers = new MemoryStore(); var statMod = new MemoryStore(); statMod.SetValue("stat", "Perception"); statMod.SetValue("type", "bonus"); statMod.SetValue("modifier", 2); statMod.SetValue("condition", "darkness"); modifiers.AddListItem(statMod); data.SetValue("modifiers", modifiers); var familiar = new Familiar(data); Assert.Equal("Bat", familiar.Name); Assert.Equal(1, familiar.Modifiers.Count); Assert.Equal("Perception", familiar.Modifiers[0].StatisticName); Assert.Equal("bonus", familiar.Modifiers[0].ModifierType); Assert.Equal(2, familiar.Modifiers[0].Modifier); }
public void UsesDescriptorsIfAvailable() { var descs = new MemoryStore(); descs.AddListItem(new MemoryStore("descriptor", new string[] { "dragon" })); var mem = new MemoryStore(); mem.SetValue("name", "tattoo"); mem.SetValue("descriptors", descs); var phys = new PhysicalFeature(mem); var gateway = EntityGateway <PhysicalFeature> .LoadWithSingleItem(phys); var subject = new CreatePhysicalFeatures(gateway); var character = new CharacterSheet(CharacterStrategy.Default()); character.Gender = Gender.Female; subject.ExecuteStep(character); Assert.Equal(character.Appearance.PhysicalAppearance, "She has a dragon tattoo."); }