示例#1
0
        public void ShadeLevelUp_CorrectlyRaisesTransformEvent()
        {
            //arrange
            Shade shade         = new Shade(1, _chanceService, Shade.ExperienceForLevel[Shade.MaxShadeLevel] - 1);
            Shade absorbedShade = new Shade(1, _chanceService, 1);

            _chanceService.PushWhichEventOccurs(0); //so AbsorbShade method doesn't throw an exception

            _logger.Subscribe(EventType.FighterTransformed, shade);
            string beforeBaseName = shade.BaseName;

            //act
            shade.AbsorbShade(absorbedShade);

            //assert
            List <EventLog> logs = _logger.Logs;

            Assert.AreEqual(1, logs.Count);

            EventLog log = logs[0];

            FighterTransformedEventArgs e = log.E as FighterTransformedEventArgs;

            Assert.NotNull(e);

            Assert.AreEqual(beforeBaseName, e.PreTransformDisplayName);
            Assert.AreEqual($"a {shade.BaseName}", e.PostTransformDisplayName);
        }
示例#2
0
        public void ShadesShadeLevelCorrectlyIncreasesWhenAbsorbingAnotherShade([Range(1, 4)] int shadeLevel)
        {
            Shade shade1 = new Shade(1, _chanceService, 1);
            Shade shade2 = new Shade(1, _chanceService, shadeLevel);

            _chanceService.PushWhichEventOccurs(0); //determines which stat will be boosted, required to prevent exceptions, but not really important for the test

            shade1.AbsorbShade(shade2);

            Assert.AreEqual(shadeLevel + 1, shade1.ShadeExperience);
        }
示例#3
0
        public void ShadeExperienceSetter_CorrectlySkipsShadeLevels()
        {
            Shade shade         = new Shade(1, _chanceService, 1);
            Shade absorbedShade = new Shade(1, _chanceService, Shade.ExperienceForLevel[Shade.MaxShadeLevel]);

            _chanceService.PushWhichEventOccurs(0);

            shade.AbsorbShade(absorbedShade);

            Assert.AreEqual(Shade.MaxShadeLevel, shade.ShadeLevel);
        }
示例#4
0
        public void ShadesDisplayNameCorrectlyAlteredWhenAbsorbingAnotherShade([Values(1, 4)] int shadeLevel)
        {
            Shade shade1 = new Shade(1, _chanceService, 1);
            Shade shade2 = new Shade(1, _chanceService, shadeLevel);

            _chanceService.PushWhichEventOccurs(0); //determines which stat will be boosted, required to prevent exceptions, but not really important for the test

            shade1.AbsorbShade(shade2);

            string expectedDisplayName = shadeLevel == 1 ? "Strong Shade" : "Powerful Shade";

            Assert.AreEqual(expectedDisplayName, shade1.DisplayName);
        }
示例#5
0
        public void ShadeCorrectlyGainsBonusWhenAbsorbingAnotherShade([Range(0, 2)] int selectedBonusIndex)
        {
            _chanceService.PushWhichEventOccurs(selectedBonusIndex);

            StatType boostedStat = Shade.AbsorptionBonuses[selectedBonusIndex];

            int valueBefore = _shade1.GetStatValue(boostedStat);

            _shade1.AbsorbShade(_shade2);

            int valueAfter = _shade1.GetStatValue(boostedStat);

            Assert.Greater(valueAfter, valueBefore);
        }
示例#6
0
        public void ShadeExperienceSetter_CorrectlySetsShadeLevel()
        {
            for (int i = 1; i <= Shade.MaxShadeLevel; ++i)
            {
                int   experienceForLevel = Shade.ExperienceForLevel[i];
                Shade shade = new Shade(1, _chanceService, experienceForLevel - 1); //1 xp away from leveling
                Assert.AreEqual(i - 1, shade.ShadeLevel);
                Shade absorbedShade = new Shade(1, _chanceService, 1);

                _chanceService.PushWhichEventOccurs(0); //which stat is boosted, needed to prevent out of range exceptions
                shade.AbsorbShade(absorbedShade);

                Assert.AreEqual(experienceForLevel, shade.ShadeExperience);
                Assert.AreEqual(i, shade.ShadeLevel);
            }
        }