예제 #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 AddEffectAsync_MultipleCharacters_ReturnSuccess()
        {
            // Arrange
            var charProvider   = new MockCharacterProvider();
            var effectProvider = new MockEffectProvider();
            var statProvider   = new MockStatisticProvider();
            var controller     = new EffectController(charProvider, effectProvider, statProvider, new GeneralOptions());

            var effect = await effectProvider.CreateEffectAsync(1, "ValidInput");

            // Act
            await controller.AddEffectAsync(1, "ValidInput");

            await controller.AddEffectAsync(2, "ValidInput");

            // Assert
            var character1 = await charProvider.GetActiveCharacterAsync(1);

            var character2 = await charProvider.GetActiveCharacterAsync(2);

            Assert.True(character1.Effects.Contains(effect) && character2.Effects.Contains(effect));
        }
예제 #4
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));
        }
예제 #5
0
        public async Task GiveExperienceAsync_NotInEnabledChannel_ExperienceEqualsZero()
        {
            var provider     = new MockCharacterProvider();
            var statProvider = new MockStatisticProvider();
            var statOptions  = new StatisticOptions
            {
                ExpEnabledChannels      = new ulong[] { 1 },
                ExpMessageLengthDivisor = 1
            };
            var strategy   = new GenericProgressionStrategy(statProvider, statOptions);
            var controller = new CharacterController(provider, strategy, new GeneralOptions());

            await controller.GiveExperienceAsync(1, 2, "12345");

            var character = await provider.GetActiveCharacterAsync(1);

            Assert.True(character.Experience == 0);
        }
예제 #6
0
        public async Task ShowCharacter_ValidId_ReturnSuccess()
        {
            // Arrange
            var provider   = new MockCharacterProvider();
            var controller = new CharacterController(provider, new MockProgressionStrategy(), new GeneralOptions());
            var dbChar     = await provider.GetActiveCharacterAsync(1);

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

            var charResult = result as CharacterResult;
            var viewModel  = charResult.ViewModel as ShowCharacterViewModel;

            // Assert
            Assert.True(CharacterResult.Show(dbChar, 1, "").Equals(result) &&
                        viewModel.Name.EqualsIgnoreCase(dbChar.Name) &&
                        viewModel.Story.EqualsIgnoreCase(dbChar.Story) &&
                        viewModel.Description.EqualsIgnoreCase(dbChar.Description));
        }