コード例 #1
0
        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);
        }
コード例 #2
0
        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);
        }
コード例 #3
0
        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);
        }