public void CreateItem() { Corporation corporation = Corporation.Builder.Build(_universe.MSCorp).Materialise(); var materials = TestItems.BuildItem(ItemCode.Veldnium, quantity: 20); var property = corporation.GetProperty(Manufactory); property.Add(materials); var parameters = new ManufacturingParameters { BluePrint = _universe.BluePrint, Agent = _universe.John.StandUp(corporation, initialLocation:Manufactory), }; var manufacturing = CreateManufacturingTask(parameters); var result = manufacturing.Manufacture(); Assert.That(result.Success, Is.True); Assert.That(result.StatusCode, Is.EqualTo(ManufacturingTask.StatusCode.Success)); var item = result.Item; Assert.That(item, Is.Not.Null); Assert.That(item.ItemInfo.Code, Is.EqualTo(_universe.BluePrint.Code)); Assert.That(item.Quantity, Is.EqualTo(_universe.BluePrint.TargetQuantity)); Assert.That(materials.Quantity, Is.EqualTo(10)); }
public void BuildMaterialsCalculatedCorrectly() { Corporation corporation = Corporation.Builder.Build(_universe.MSCorp).Materialise(); var property = corporation.GetProperty(Manufactory); property.Add(TestItems.BuildItem(ItemCode.Veldnium, quantity: 2000)); property.Add(TestItems.BuildItem(ItemCode.MissileLauncher, quantity: 20)); property.Add(TestItems.BuildItem(ItemCode.MiningLaser, quantity: 20)); property.Add(TestItems.BuildItem(ItemCode.EnergyShield, quantity: 20)); var parameters = new ManufacturingParameters { BluePrint = _universe.ShipBluePrint, Agent = _universe.John.StandUp(corporation, initialLocation: Manufactory), }; var manufacturing = CreateManufacturingTask(parameters); foreach ( var item in manufacturing.BluePrint.Materials ) { var firstLoad = manufacturing.FirstLoad.Single(x => x.Code == item.Code); var subsequentLoad = manufacturing.SubsequentLoad.Single(x => x.Code == item.Code); Assert.That(firstLoad.Quantity + (subsequentLoad.Quantity * (parameters.BluePrint.BuildLength - 1)), Is.EqualTo(item.Quantity), item.Code.ToString()); } }
private ManufacturingResult SetManufacturingParameters(ManufacturingParameters parameters) { BluePrint = parameters.BluePrint; Agent = parameters.Agent; var result = ValidateParameters(); if (result.Success) { TimeRemaining = parameters.BluePrint.BuildLength; BuildQuanta(parameters.BluePrint); } return result; }
private ManufacturingTask CreateManufacturingTask(ManufacturingParameters parameters) { var manufacturing = new ManufacturingTask(_itemFactory.Object); manufacturing.SetParameters(parameters); return manufacturing; }
public void RequireItemsAtManufactory() { Corporation corporation = Corporation.Builder.Build(_universe.MSCorp).Materialise(); var agent = _universe.John.StandUp(corporation, initialLocation:Manufactory); var parameters = new ManufacturingParameters { BluePrint = _universe.BluePrint, Agent = agent, }; var manufacturing = CreateManufacturingTask(parameters); var result = manufacturing.Manufacture(); Assert.That(result.StatusCode, Is.EqualTo(ManufacturingTask.StatusCode.MissingMaterials)); }
public void RequireBlueprint() { var parameters = new ManufacturingParameters { BluePrint = null }; var manufacturing = CreateManufacturingTask(parameters); var result = manufacturing.Manufacture(); Assert.That(result.StatusCode, Is.EqualTo(ManufacturingTask.StatusCode.MissingBluePrint)); }
public void RequireAgentSkill() { var agent = _universe.John.StandUp(); agent.Skills[SkillCode.SpaceshipCommand].Level = 0; var parameters = new ManufacturingParameters { BluePrint = _universe.BluePrint, Agent = agent, }; var manufacturing = CreateManufacturingTask(parameters); var result = manufacturing.Manufacture(); result.StatusCode.ShouldBe(ManufacturingTask.StatusCode.MissingSkillRequirement); }
public void RequireAgentAtManufactory() { var agent = _universe.John.StandUp(); var parameters = new ManufacturingParameters { BluePrint = _universe.BluePrint, Agent = agent, }; var manufacturing = CreateManufacturingTask(parameters); var result = manufacturing.Manufacture(); Assert.That(result.StatusCode, Is.EqualTo(ManufacturingTask.StatusCode.MissingAgent)); }
public void CreateItemOverTime() { Corporation corporation = Corporation.Builder.Build(_universe.MSCorp).Materialise(); var property = corporation.GetProperty(Manufactory); property.Add(TestItems.BuildItem(ItemCode.Veldnium, quantity: 2000)); property.Add(TestItems.BuildItem(ItemCode.MissileLauncher, quantity: 20)); property.Add(TestItems.BuildItem(ItemCode.MiningLaser, quantity: 20)); property.Add(TestItems.BuildItem(ItemCode.EnergyShield, quantity: 20)); var parameters = new ManufacturingParameters { BluePrint = _universe.ShipBluePrint, Agent = _universe.John.StandUp(corporation, initialLocation:Manufactory), }; var manufacturing = CreateManufacturingTask(parameters); Assert.That(manufacturing.TimeRemaining, Is.EqualTo(_universe.ShipBluePrint.BuildLength)); ManufacturingResult result; var buildLength = 5; var quanta = 200; while ( buildLength > 1 ) { result = manufacturing.Manufacture(); Assert.That(Manufactory.Tasks.Contains(manufacturing)); var veldnium = property.Single(v => v.ItemInfo.Code == ItemCode.Veldnium); Assert.That(result.Success, Is.True); Assert.That(result.StatusCode, Is.EqualTo(ManufacturingTask.StatusCode.Pending)); buildLength--; Assert.That(veldnium.Quantity, Is.EqualTo(1000 + (buildLength * quanta))); } result = manufacturing.Manufacture(); Assert.That(result.Success, Is.True); Assert.That(result.StatusCode, Is.EqualTo(ManufacturingTask.StatusCode.Success)); Assert.That(result.Item, Is.Not.Null); Assert.That(result.Item.ItemInfo.Code, Is.EqualTo(_universe.ShipBluePrint.Code)); Assert.That(result.Item.Quantity, Is.EqualTo(_universe.ShipBluePrint.TargetQuantity)); Assert.That(Manufactory.Tasks.Contains(manufacturing) == false); }