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); }
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); }
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); }
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); }
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); }
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); } }