Example #1
0
        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));
        }
Example #2
0
        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());
            }
        }
Example #3
0
        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;
        }
Example #4
0
        private ManufacturingTask CreateManufacturingTask(ManufacturingParameters parameters)
        {
            var manufacturing = new ManufacturingTask(_itemFactory.Object);
            manufacturing.SetParameters(parameters);

            return manufacturing;
        }
Example #5
0
        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));
        }
Example #6
0
        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));
        }
Example #7
0
        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);
        }
Example #8
0
        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));
        }
Example #9
0
        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);
        }