示例#1
0
        public async Task SetProficiencyAsync_SetFalse_ReturnSuccess()
        {
            // Arrange
            var charProvider = new MockCharacterProvider();
            var statProvider = new MockStatisticProvider();

            var statOptions = new StatisticOptions
            {
                InitialAttributeMin         = 1,
                InitialAttributeMax         = 10,
                InitialAttributePoints      = 40,
                InitialAttributesAtMax      = 7,
                InitialAttributesProficient = 0
            };

            var controller = new StatisticController(charProvider, statProvider, new GenericProgressionStrategy(statProvider, statOptions));
            var character  = await charProvider.GetActiveCharacterAsync(1);

            await controller.SetStatisticAsync(1, "strength", 10);

            // Act
            var result = await controller.SetProficiencyAsync(1, "strength", false);

            // Assert
            Assert.Equal(StatisticResult.StatisticSetSucessfully(), result);
        }
示例#2
0
        public async Task SetProficiencyAsync_ValidInput_ReturnSuccess()
        {
            // Arrange
            var charProvider = new MockCharacterProvider();
            var statProvider = new MockStatisticProvider();

            var statOptions = new StatisticOptions
            {
                InitialAttributeMin         = 1,
                InitialAttributeMax         = 10,
                InitialAttributePoints      = 40,
                InitialAttributesAtMax      = 7,
                InitialAttributesProficient = 1
            };

            var controller = new StatisticController(charProvider, statProvider, new GenericProgressionStrategy(statProvider, statOptions));
            var character  = await charProvider.GetActiveCharacterAsync(1);

            Statistic str = await statProvider.GetStatisticAsync("strength");

            await controller.SetStatisticAsync(1, "strength", 10);

            // Act
            await controller.SetProficiencyAsync(1, "strength", true);

            // Assert
            Assert.True(character.GetStatistic(str).IsProficient);
        }
示例#3
0
        public async Task SetStatisticAsync_LevelTooHighButAttributesUnset_ReturnSuccess()
        {
            // Arrange
            var charProvider = new MockCharacterProvider();
            var character    = await charProvider.CreateCharacterAsync(100, "TooHigh");

            // the important bit
            character.Experience = 50000;

            var statProvider = new MockStatisticProvider();
            var statOptions  = new StatisticOptions
            {
                InitialAttributeMin    = 1,
                InitialAttributeMax    = 10,
                InitialAttributePoints = 10,
                InitialSetupMaxLevel   = 1
            };

            var controller = new StatisticController(charProvider, statProvider, new GenericProgressionStrategy(statProvider, statOptions));

            // Act
            var result = await controller.SetStatisticAsync(100, "strength", 3);

            // Assert
            Assert.Equal(StatisticResult.StatisticSetSucessfully(), result);
        }
示例#4
0
        public async Task CreateAttributeAsync_ValidInput_ReturnSuccess()
        {
            var charProvider = new MockCharacterProvider();
            var statProvider = new MockStatisticProvider();
            var controller   = new StatisticController(charProvider, statProvider, null);

            var result = await controller.CreateAttributeAsync("Wisdom");

            Assert.Equal(StatisticResult.StatisticCreatedSuccessfully(), result);
        }
示例#5
0
        public async Task CreateSkillAsync_ValidInput_ReturnSuccess()
        {
            var charProvider = new MockCharacterProvider();
            var statProvider = new MockStatisticProvider();
            var controller   = new StatisticController(charProvider, statProvider, null);

            var result = await controller.CreateSkillAsync("Intimidation", "Strength");

            Assert.Equal(StatisticResult.StatisticCreatedSuccessfully(), result);
        }
示例#6
0
        public async Task CreateSkillAsync_AlreadyExists_ReturnNameAlreadyExists()
        {
            var charProvider = new MockCharacterProvider();
            var statProvider = new MockStatisticProvider();
            var controller   = new StatisticController(charProvider, statProvider, null);

            var result = await controller.CreateSkillAsync("Powerlifting", "Strength");

            Assert.Equal(StatisticResult.NameAlreadyExists(), result);
        }
示例#7
0
        public async Task CreateSkillAsync_InvalidAttributeName_ReturnCreationFailed()
        {
            var charProvider = new MockCharacterProvider();
            var statProvider = new MockStatisticProvider();
            var controller   = new StatisticController(charProvider, statProvider, null);

            var result = await controller.CreateSkillAsync("Intimidation", "STR");

            Assert.Equal(StatisticResult.StatisticCreationFailed(), result);
        }
示例#8
0
        public async Task CreateEffectAsync_ValidInput_ReturnSuccess()
        {
            var charProvider   = new MockCharacterProvider();
            var effectProvider = new MockEffectProvider();
            var statProvider   = new MockStatisticProvider();
            var controller     = new EffectController(charProvider, effectProvider, statProvider, new GeneralOptions());

            var result = await controller.CreateEffectAsync(1, "ValidInput");

            Assert.Equal(EffectResult.EffectCreatedSuccessfully(), result);
        }
示例#9
0
        public async Task CreateCharacter_ExistingNameButNotBelongingToPlayer_ReturnSuccess()
        {
            // Arrange
            var provider   = new MockCharacterProvider();
            var controller = new CharacterController(provider, null, new GeneralOptions());

            // Act
            var result = await controller.CreateCharacterAsync(1, "c2"); // Existing

            // Assert
            Assert.Equal(CharacterResult.CharacterCreatedSuccessfully(), result);
        }
示例#10
0
        public async Task CreateCharacter_PlayerHasExistingName_ReturnNameAlreadyExists()
        {
            // Arrange
            var provider   = new MockCharacterProvider();
            var controller = new CharacterController(provider, null, new GeneralOptions());

            // Act
            var result = await controller.CreateCharacterAsync(1, "c1"); // Existing

            // Assert
            Assert.Equal(CharacterResult.NameAlreadyExists(), result);
        }
示例#11
0
        public async Task CreateCharacter_ValidValues_ReturnSuccess()
        {
            // Arrange
            var provider   = new MockCharacterProvider();
            var controller = new CharacterController(provider, null, new GeneralOptions());

            // Act
            var result = await controller.CreateCharacterAsync(1, "c");

            // Assert
            Assert.Equal(CharacterResult.CharacterCreatedSuccessfully(), result);
        }
示例#12
0
        public async Task ShowCharacter_InvalidId_ReturnCharacterNotFound()
        {
            // Arrange
            var provider   = new MockCharacterProvider();
            var controller = new CharacterController(provider, null, new GeneralOptions());

            // Act
            var result = await controller.ShowCharacterAsync(0);

            // Assert
            Assert.Equal(CharacterResult.CharacterNotFound(), result);
        }
示例#13
0
        public async Task SetStory_InvalidCharacter_ReturnCharacterNotFound()
        {
            // Arrange
            var provider   = new MockCharacterProvider();
            var controller = new CharacterController(provider, new MockProgressionStrategy(), new GeneralOptions());

            // Act
            var result = await controller.SetCharacterStoryAsync(1000, "description");

            // Assert
            Assert.True(CharacterResult.CharacterNotFound().Equals(result));
        }
示例#14
0
        public async Task SetStatisticEffectAsync_InvalidEffectName_ReturnEffectNotFound()
        {
            // Arrange
            var charProvider   = new MockCharacterProvider();
            var effectProvider = new MockEffectProvider();
            var statProvider   = new MockStatisticProvider();

            var controller = new EffectController(charProvider, effectProvider, statProvider, null);

            var result = await controller.SetStatisticEffectAsync("DoesNotExist", "Strength", 1);

            Assert.Equal(EffectResult.EffectNotFound(), result);
        }
示例#15
0
        public async Task CreateEffectAsync_AlreadyExists_ReturnNameAlreadyExists()
        {
            var charProvider   = new MockCharacterProvider();
            var effectProvider = new MockEffectProvider();
            var statProvider   = new MockStatisticProvider();
            var controller     = new EffectController(charProvider, effectProvider, statProvider, new GeneralOptions());

            await controller.CreateEffectAsync(1, "AlreadyExists");

            var result = await controller.CreateEffectAsync(1, "AlreadyExists");

            Assert.Equal(EffectResult.NameAlreadyExists(), result);
        }
示例#16
0
        public async Task Roll_InvalidId_ReturnCharacterNotFound()
        {
            // Arrange
            var provider     = new MockCharacterProvider();
            var statProvider = new MockStatisticProvider();
            var controller   = new RollController(provider, statProvider, new MockRollStrategy());

            // Act
            var result = await controller.RollStatisticAsync(0, "strength");

            // Assert
            Assert.Equal(CharacterResult.CharacterNotFound(), result);
        }
示例#17
0
        public async Task Roll_InvalidStat_ReturnStatNotFound()
        {
            // Arrange
            var provider     = new MockCharacterProvider();
            var statProvider = new MockStatisticProvider();
            var controller   = new RollController(provider, statProvider, new MockRollStrategy());

            // Act
            var result = await controller.RollStatisticAsync(1, "invalid");

            // Assert
            Assert.True(StatisticResult.StatisticNotFound().Equals(result));
        }
示例#18
0
        public async Task DeleteStatistic_InvalidStatName_ReturnNotFound()
        {
            // Arrange
            var charProvider = new MockCharacterProvider();
            var statProvider = new MockStatisticProvider();
            var controller   = new StatisticController(charProvider, statProvider, new GenericProgressionStrategy(statProvider, new StatisticOptions()));

            // Act
            var result = await controller.DeleteStatisticAsync("bacon");

            // Assert
            Assert.Equal(result, StatisticResult.StatisticNotFound());
        }
示例#19
0
        public async Task RollAgainst_InvalidStatValues_ReturnRollFailed()
        {
            // Arrange
            var provider     = new MockCharacterProvider();
            var statProvider = new MockStatisticProvider();
            var controller   = new RollController(provider, statProvider, new MockRollStrategy());

            // Act
            var result = await controller.RollStatisticAgainstAsync(1, 2, "strength");

            // Assert
            Assert.Equal(RollResult.RollFailed(), result);
        }
示例#20
0
        public async Task DeleteStatistic_ValidInput_ReturnSuccess()
        {
            // Arrange
            var charProvider = new MockCharacterProvider();
            var statProvider = new MockStatisticProvider();
            var controller   = new StatisticController(charProvider, statProvider, new GenericProgressionStrategy(statProvider, new StatisticOptions()));

            // Act
            var result = await controller.DeleteStatisticAsync("strength");

            // Assert
            Assert.Equal(result, StatisticResult.StatisticDeletedSuccessfully());
        }
示例#21
0
        public async Task SetStory_NullInput_ReturnInvalidInput()
        {
            // Arrange
            var provider   = new MockCharacterProvider();
            var controller = new CharacterController(provider, new MockProgressionStrategy(), new GeneralOptions());

            // Act
            var result = await controller.SetCharacterStoryAsync(1, null); // Existing

            var character = await controller.ShowCharacterAsync(1);

            // Assert
            Assert.True(GenericResult.InvalidInput().Equals(result));
        }
示例#22
0
        public async Task DeleteEffect_InvalidEffectName_ReturnNotFound()
        {
            // Arrange
            var charProvider   = new MockCharacterProvider();
            var statProvider   = new MockStatisticProvider();
            var effectProvider = new MockEffectProvider();
            var controller     = new EffectController(charProvider, effectProvider, statProvider, new GeneralOptions());

            // Act
            var result = await controller.DeleteEffectAsync("DoesNotExist");

            // Assert
            Assert.Equal(result, EffectResult.EffectNotFound());
        }
示例#23
0
        public async Task SetStatisticAsync_ValidInput_ReturnSuccess()
        {
            // Arrange
            var charProvider = new MockCharacterProvider();
            var statProvider = new MockStatisticProvider();

            var statOptions = new StatisticOptions
            {
                InitialAttributeMin    = 1,
                InitialAttributeMax    = 10,
                InitialAttributePoints = 40,
                InitialAttributesAtMax = 7
            };

            var controller = new StatisticController(charProvider, statProvider, new GenericProgressionStrategy(statProvider, statOptions));
            var character  = await charProvider.GetActiveCharacterAsync(1);

            // Act
            await controller.SetStatisticAsync(1, "strength", 10);

            await controller.SetStatisticAsync(1, "perception", 2);

            await controller.SetStatisticAsync(1, "endurance", 6);

            await controller.SetStatisticAsync(1, "charisma", 6);

            await controller.SetStatisticAsync(1, "intelligence", 6);

            await controller.SetStatisticAsync(1, "agility", 5);

            await controller.SetStatisticAsync(1, "luck", 5);

            // Assert
            Statistic str  = await statProvider.GetStatisticAsync("strength"),
                      per  = await statProvider.GetStatisticAsync("perception"),
                      end  = await statProvider.GetStatisticAsync("endurance"),
                      cha  = await statProvider.GetStatisticAsync("charisma"),
                      inte = await statProvider.GetStatisticAsync("intelligence"),
                      agi  = await statProvider.GetStatisticAsync("agility"),
                      lck  = await statProvider.GetStatisticAsync("luck");

            Assert.True(character.GetStatistic(str).Value.Equals(10) &&
                        character.GetStatistic(per).Value.Equals(2) &&
                        character.GetStatistic(end).Value.Equals(6) &&
                        character.GetStatistic(cha).Value.Equals(6) &&
                        character.GetStatistic(inte).Value.Equals(6) &&
                        character.GetStatistic(agi).Value.Equals(5) &&
                        character.GetStatistic(lck).Value.Equals(5));
        }
示例#24
0
        public async Task SetStory_ValidInput_ReturnSuccess()
        {
            // Arrange
            var provider   = new MockCharacterProvider();
            var controller = new CharacterController(provider, new MockProgressionStrategy(), new GeneralOptions());

            // Act
            var result = await controller.SetCharacterStoryAsync(1, "story"); // Existing

            var character = await controller.ShowCharacterAsync(1);

            // Assert
            Assert.True(CharacterResult.CharacterUpdatedSuccessfully().Equals(result) &&
                        ((ShowCharacterViewModel)character.ViewModel).Story.Equals("story"));
        }
示例#25
0
        public async Task SetStatisticAsync_InvalidStatisticName_ReturnStatisticNotFound()
        {
            // Arrange
            var charProvider             = new MockCharacterProvider();
            var statProvider             = new MockStatisticProvider();
            StatisticOptions statOptions = new StatisticOptions();

            var controller = new StatisticController(charProvider, statProvider, new GenericProgressionStrategy(statProvider, statOptions));

            // Act
            var result = await controller.SetStatisticAsync(1, "invalid", 5);

            // Assert
            Assert.Equal(StatisticResult.StatisticNotFound(), result);
        }
示例#26
0
        public async Task SetStatisticAsync_InvalidCharacterId_ReturnCharacterNotFound()
        {
            // Arrange
            var charProvider             = new MockCharacterProvider();
            var statProvider             = new MockStatisticProvider();
            StatisticOptions statOptions = new StatisticOptions();

            var controller = new StatisticController(charProvider, statProvider, new GenericProgressionStrategy(statProvider, statOptions));

            // Act
            var result = await controller.SetStatisticAsync(ulong.MaxValue, "strength", 5);

            // Assert
            Assert.Equal(CharacterResult.CharacterNotFound(), result);
        }
示例#27
0
        public async Task SetStatisticEffectAsync_ValidInput_ReturnSuccess()
        {
            // Arrange
            var charProvider   = new MockCharacterProvider();
            var effectProvider = new MockEffectProvider();
            var statProvider   = new MockStatisticProvider();

            var controller = new EffectController(charProvider, effectProvider, statProvider, null);

            await effectProvider.CreateEffectAsync(1, "ValidInput");

            var result = await controller.SetStatisticEffectAsync("ValidInput", "Strength", 1);

            Assert.Equal(EffectResult.EffectUpdatedSucessfully(), result);
        }
示例#28
0
        public async Task SetStatisticEffectAsync_InvalidStatisticName_ReturnStatisticNotFound()
        {
            // Arrange
            var charProvider   = new MockCharacterProvider();
            var effectProvider = new MockEffectProvider();
            var statProvider   = new MockStatisticProvider();

            var controller = new EffectController(charProvider, effectProvider, statProvider, null);

            await effectProvider.CreateEffectAsync(1, "ValidInput");

            var result = await controller.SetStatisticEffectAsync("ValidInput", "DoesNotExist", 1);

            Assert.Equal(StatisticResult.StatisticNotFound(), result);
        }
示例#29
0
        public async Task DeleteEffect_ValidInput_ReturnSuccess()
        {
            // Arrange
            var charProvider   = new MockCharacterProvider();
            var statProvider   = new MockStatisticProvider();
            var effectProvider = new MockEffectProvider();
            var controller     = new EffectController(charProvider, effectProvider, statProvider, new GeneralOptions());

            // Act
            await effectProvider.CreateEffectAsync(1, "ValidInput");

            var result = await controller.DeleteEffectAsync("ValidInput");

            // Assert
            Assert.Equal(result, EffectResult.EffectDeletedSuccessfully());
        }
示例#30
0
        public async Task Roll_InvalidStatValues_ReturnRollFailed()
        {
            // Arrange
            var statProvider = new MockStatisticProvider();
            var strength     = await statProvider.GetStatisticAsync("Strength");

            var provider = new MockCharacterProvider();

            var controller = new RollController(provider, statProvider, new MockRollStrategy());

            // Act
            // Character should have null or empty Statistics list.
            var result = await controller.RollStatisticAsync(1, "strength");

            // Assert
            Assert.True(RollResult.RollFailed().Equals(result));
        }