Exemplo n.º 1
0
        public void CheckStatisGravityNotAllowed(DamageTypeEnum weapon1Type, DamageTypeEnum weapon2Type)
        {
            var ship = ShipFactory.CreateShip();
            var wing = WingFactory.CreateWing();

            var weapon1 = WeaponFactory.CreateWeapon();

            weapon1.Setup(w => w.DamageType).Returns(weapon1Type);
            var weapon2 = WeaponFactory.CreateWeapon();

            weapon2.Setup(w => w.DamageType).Returns(weapon2Type);

            wing.Setup(w => w.NumberOfHardpoints).Returns(2);
            wing.Setup(w => w.Hardpoint).Returns((new[] { weapon1.Object, weapon2.Object }).ToList());

            ship.Setup(s => s.Wings).Returns((new[] { wing.Object }).ToList());

            var valid = Validate(ship, "ForceStress");

            if ((weapon1Type == DamageTypeEnum.Statis || weapon2Type == DamageTypeEnum.Statis) && (weapon1Type == DamageTypeEnum.Gravity || weapon2Type == DamageTypeEnum.Gravity) && weapon1Type != weapon2Type)
            {
                Assert.False(valid);
            }
            else
            {
                Assert.True(valid);
            }
        }
Exemplo n.º 2
0
        public void CheckImploderCombination(int engineId, int weaponId)
        {
            var ship   = ShipFactory.CreateShip();
            var wing   = WingFactory.CreateWing();
            var weapon = WeaponFactory.CreateWeapon();
            var engine = EngineFactory.CreateEngine();

            wing.Setup(w => w.Hardpoint).Returns((new[] { weapon.Object }).ToList());
            ship.Setup(s => s.Wings).Returns((new[] { wing.Object }).ToList());
            ship.Setup(s => s.Engine).Returns(engine.Object);

            engine.Setup(e => e.Id).Returns(engineId);
            weapon.Setup(w => w.Id).Returns(weaponId);

            var valid = Validate(ship, "ImplosionDanger");

            if (engineId == 2 && weaponId == 9)
            {
                Assert.False(valid);
            }
            else
            {
                Assert.True(valid);
            }
        }
Exemplo n.º 3
0
        public void CheckStatisShipWeight()
        {
            var ship   = ShipFactory.CreateShip();
            var engine = EngineFactory.CreateEngine();
            var wing1  = WingFactory.CreateWing();
            var wing2  = WingFactory.CreateWing();

            wing1.Setup(w => w.Weight).Returns(5);
            wing2.Setup(w => w.Weight).Returns(10);

            var weapon1 = WeaponFactory.CreateWeapon();

            weapon1.Setup(w => w.Weight).Returns(15);
            weapon1.Setup(w => w.DamageType).Returns(DamageTypeEnum.Statis);
            var weapon2 = WeaponFactory.CreateWeapon();

            weapon2.Setup(w => w.Weight).Returns(20);
            weapon2.Setup(w => w.DamageType).Returns(DamageTypeEnum.Statis);

            wing1.Setup(w => w.Hardpoint).Returns((new[] { weapon1.Object }).ToList());
            wing2.Setup(w => w.Hardpoint).Returns((new[] { weapon2.Object }).ToList());

            engine.Setup(e => e.Weight).Returns(25);

            ship.Setup(s => s.Engine).Returns(engine.Object);
            ship.Setup(s => s.Wings).Returns((new[] { wing1.Object, wing2.Object }).ToList());

            Assert.Equal(75 * 0.85, _calculations.GetShipWeight(ship.Object));
        }
Exemplo n.º 4
0
        public void CheckAtLeastOneWeaponPerWing()
        {
            var ship = ShipFactory.CreateShip();
            var wing = WingFactory.CreateWing();

            wing.Setup(w => w.Hardpoint).Returns((Array.Empty <Weapon>()).ToList());
            ship.Setup(s => s.Wings).Returns((new[] { wing.Object }).ToList());

            Assert.False(Validate(ship, "AtLeastOneWeaponPerWing"));

            var weapon = WeaponFactory.CreateWeapon();

            wing.Setup(w => w.Hardpoint).Returns((new[] { weapon.Object }).ToList());

            Assert.True(Validate(ship, "AtLeastOneWeaponPerWing"));
        }
Exemplo n.º 5
0
        public void CheckKineticEnergyOnlyOneWingLessThen35()
        {
            var ship = ShipFactory.CreateShip();
            var wing = WingFactory.CreateWing();

            var weapon = WeaponFactory.CreateWeapon();

            weapon.Setup(w => w.DamageType).Returns(DamageTypeEnum.Kinetic);

            wing.Setup(w => w.Hardpoint).Returns((new[] { weapon.Object }).ToList());
            ship.Setup(s => s.Wings).Returns((new[] { wing.Object }).ToList());

            weapon.Setup(w => w.EnergyDrain).Returns(35);
            Assert.False(Validate(ship, "KineticDifference"));

            weapon.Setup(w => w.EnergyDrain).Returns(34);
            Assert.True(Validate(ship, "KineticDifference"));
        }
Exemplo n.º 6
0
        public void CheckNullifierNotOnlyWeaponOnWing()
        {
            var ship = ShipFactory.CreateShip();
            var wing = WingFactory.CreateWing();

            var weapon1 = WeaponFactory.CreateWeapon();

            weapon1.Setup(w => w.Id).Returns(14);

            wing.Setup(w => w.Hardpoint).Returns((new[] { weapon1.Object }).ToList());
            ship.Setup(s => s.Wings).Returns((new[] { wing.Object }).ToList());

            Assert.False(Validate(ship, "LoneNullifier"));

            var weapon2 = WeaponFactory.CreateWeapon();

            wing.Setup(w => w.Hardpoint).Returns((new[] { weapon1.Object, weapon2.Object }).ToList());

            Assert.True(Validate(ship, "LoneNullifier"));
        }
Exemplo n.º 7
0
        public void CheckEnergyConsumptionSameType(int weaponAmount)
        {
            var ship = ShipFactory.CreateShip();
            var wing = WingFactory.CreateWing();

            var weapons = new List <Weapon>();

            for (var i = 0; i < weaponAmount; i++)
            {
                var weapon = WeaponFactory.CreateWeapon();
                weapon.Setup(w => w.EnergyDrain).Returns(5);
                weapon.Setup(w => w.DamageType).Returns(DamageTypeEnum.Statis);
                weapons.Add(weapon.Object);
            }

            wing.Setup(w => w.Hardpoint).Returns(weapons);
            ship.Setup(s => s.Wings).Returns((new[] { wing.Object }).ToList());

            Assert.Equal(weaponAmount * 5 * (weaponAmount >= 3 ? 0.8 : 1), _calculations.GetEnergyConsumption(ship.Object));
        }
Exemplo n.º 8
0
        public void CheckEnergyDifferenceLessThen35(int energyDifference)
        {
            var ship  = ShipFactory.CreateShip();
            var wing1 = WingFactory.CreateWing();
            var wing2 = WingFactory.CreateWing();

            var weapon1 = WeaponFactory.CreateWeapon();

            weapon1.Setup(w => w.DamageType).Returns(DamageTypeEnum.Kinetic);
            weapon1.Setup(w => w.EnergyDrain).Returns(50 + energyDifference);
            var weapon2 = WeaponFactory.CreateWeapon();

            weapon2.Setup(w => w.DamageType).Returns(DamageTypeEnum.Kinetic);
            weapon2.Setup(w => w.EnergyDrain).Returns(50);

            var weapon3 = WeaponFactory.CreateWeapon();

            weapon3.Setup(w => w.DamageType).Returns(DamageTypeEnum.Kinetic);
            weapon3.Setup(w => w.EnergyDrain).Returns(100);

            var weapon4 = WeaponFactory.CreateWeapon();

            weapon4.Setup(w => w.DamageType).Returns(DamageTypeEnum.Cold);
            weapon4.Setup(w => w.EnergyDrain).Returns(100);

            wing1.Setup(w => w.Hardpoint).Returns((new[] { weapon1.Object, weapon2.Object }).ToList());
            wing2.Setup(w => w.Hardpoint).Returns((new[] { weapon3.Object, weapon4.Object }).ToList());

            ship.Setup(s => s.Wings).Returns((new[] { wing1.Object, wing2.Object }).ToList());

            var valid = Validate(ship, "KineticDifference");

            if (Math.Abs(energyDifference) < 35)
            {
                Assert.True(valid);
            }
            else
            {
                Assert.False(valid);
            }
        }
Exemplo n.º 9
0
        public void CheckEnergyConsumptionNotSameType(int weaponAmount)
        {
            var ship = ShipFactory.CreateShip();
            var wing = WingFactory.CreateWing();

            var weapons = new List <Weapon>();

            for (var i = 0; i < weaponAmount; i++)
            {
                var weapon = WeaponFactory.CreateWeapon();
                weapon.Setup(w => w.EnergyDrain).Returns(5);
                weapon.Setup(w => w.DamageType).Returns((DamageTypeEnum)i);
                _testOutputHelper.WriteLine(((DamageTypeEnum)i).ToString());
                weapons.Add(weapon.Object);
            }

            wing.Setup(w => w.Hardpoint).Returns(weapons);
            ship.Setup(s => s.Wings).Returns((new[] { wing.Object }).ToList());

            Assert.Equal(weaponAmount * 5, _calculations.GetEnergyConsumption(ship.Object));
        }
Exemplo n.º 10
0
        public void CheckEvenNumberOfWings(int amount)
        {
            var ship  = ShipFactory.CreateShip();
            var wings = new List <Wing>();

            for (var i = 0; i < amount; i++)
            {
                wings.Add(WingFactory.CreateWing().Object);
            }

            ship.Setup(s => s.Wings).Returns(wings);

            var valid = Validate(ship, "OddWings");

            if (amount % 2 == 0)
            {
                Assert.True(valid);
            }
            else
            {
                Assert.False(valid);
            }
        }
Exemplo n.º 11
0
        public void CheckWeaponAmount(int weaponAmountModifier)
        {
            var ship = ShipFactory.CreateShip();
            var wing = WingFactory.CreateWing();

            var weapons = (new[] { WeaponFactory.CreateWeapon().Object }).ToList();

            wing.Setup(w => w.NumberOfHardpoints).Returns(1 + weaponAmountModifier);
            wing.Setup(w => w.Hardpoint).Returns(weapons);

            ship.Setup(s => s.Wings).Returns((new[] { wing.Object }).ToList());

            var valid = Validate(ship, "WeaponOverload");

            if (weaponAmountModifier < 0)
            {
                Assert.False(valid);
            }
            else
            {
                Assert.True(valid);
            }
        }