public async Task SetStatisticAsync_LevelTooHigh_ReturnLevelTooHigh() { // Arrange var charProvider = new MockCharacterProvider(); var character = await charProvider.CreateCharacterAsync(100, "TooHigh"); var statProvider = new MockStatisticProvider(); var statOptions = new StatisticOptions { InitialAttributeMin = 1, InitialAttributeMax = 10, InitialAttributePoints = 40, InitialSkillPoints = 1, InitialSetupMaxLevel = 1, AttributePointsOnLevelUp = 0 }; var controller = new StatisticController(charProvider, statProvider, new GenericProgressionStrategy(statProvider, statOptions)); // Act // Set initial special await controller.SetStatisticAsync(100, "strength", 10); await controller.SetStatisticAsync(100, "perception", 2); await controller.SetStatisticAsync(100, "endurance", 6); await controller.SetStatisticAsync(100, "charisma", 6); await controller.SetStatisticAsync(100, "intelligence", 6); await controller.SetStatisticAsync(100, "agility", 5); await controller.SetStatisticAsync(100, "luck", 5); character.Experience = 50000; await charProvider.UpdateCharacterAsync(character); // Attempt to set initial special again after going past InitialSetupMaxLevel var result = await controller.SetStatisticAsync(100, "strength", 4); // Assert Assert.Equal(CharacterResult.LevelTooHigh(), result); }
public async Task SetStatisticAsync_NewValueLowerThanCurrent_ReturnInvalidInput() { // Arrange var charProvider = new MockCharacterProvider(); var character = await charProvider.CreateCharacterAsync(100, "TooHigh"); var statProvider = new MockStatisticProvider(); var statOptions = new StatisticOptions { InitialAttributeMin = 1, InitialAttributeMax = 10, InitialAttributePoints = 40, InitialSetupMaxLevel = 1, AttributePointsOnLevelUp = 0 }; var controller = new StatisticController(charProvider, statProvider, new GenericProgressionStrategy(statProvider, statOptions)); // Act // Set initial special await controller.SetStatisticAsync(100, "strength", 10); await controller.SetStatisticAsync(100, "perception", 2); await controller.SetStatisticAsync(100, "endurance", 6); await controller.SetStatisticAsync(100, "charisma", 6); await controller.SetStatisticAsync(100, "intelligence", 6); await controller.SetStatisticAsync(100, "agility", 5); await controller.SetStatisticAsync(100, "luck", 5); character.Experience = 50000; await charProvider.UpdateCharacterAsync(character); // Attempt to set special lower than current value var result = await controller.SetStatisticAsync(100, "strength", 4); // Assert Assert.Equal(Messages.INVALID_INPUT, result.Message); }
public async Task Roll_ValidValues_ReturnSuccess() { // Arrange var statProvider = new MockStatisticProvider(); var strength = await statProvider.GetStatisticAsync("Strength"); var provider = new MockCharacterProvider(); var chars = await provider.GetAllCharactersAsync(1); // Give the new character a Statistic to test chars[0].SetStatistic(strength, new StatisticValue(5)); await provider.UpdateCharacterAsync(chars[0]); var controller = new RollController(provider, statProvider, new MockRollStrategy()); // Act var result = await controller.RollStatisticAsync(1, "strength"); // Assert Assert.True(result.GetType() == typeof(RollResult) && result.IsSuccess); }