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