public void ShouldReturnAttackCar()
        {
            var baseCar = new BaseCar();
            var car     = new AttackCar(baseCar);

            Assert.AreEqual(90, car.Drive());
            Assert.AreEqual(130, car.Attack());
            Assert.AreEqual(90, car.Defend());
        }
        public void ShouldReturnFullyDecoratedRaceCar()
        {
            var  baseCar     = new BaseCar();
            var  armoredCar  = new ArmoredCar(baseCar);
            var  armoredCar2 = new ArmoredCar(armoredCar);
            var  raceCar     = new RaceCar(armoredCar2);
            ICar car         = new AttackCar(raceCar);

            Assert.AreEqual(90, car.Drive());
            Assert.AreEqual(120, car.Attack());
            Assert.AreEqual(160, car.Defend());
        }
        public void AttackCar_AttackCarAttackTest()
        {
            // Arrange
            ICar car      = new AttackCar(new AttackCar(new BaseCar()));
            var  expected = 100 - 10 - 10;

            // Action
            var actual = car.Attack();

            // Arrange
            Assert.AreEqual(expected, actual);
        }
        public void AttackCar_DefendTest()
        {
            // Arrange
            ICar car      = new AttackCar(new BaseCar());
            var  expected = 100 + 30;

            // Action
            var actual = car.Defend();

            // Arrange
            Assert.AreEqual(expected, actual);
        }