コード例 #1
0
        public void LabBuildingTest()
        {
            Lab     lab     = new Lab(5, 2);
            Builder builder = (Builder)UnitFactory.CreateUnit(typeof(Builder));

            Assert.False(lab.AbleToFunction);
            Assert.Equal(2, lab.BuildingTime);
            Assert.Equal(0, lab.BuildProgress);
            Assert.Equal(0, lab.CurrentCapacity);
            Assert.Equal(5, lab.MaxCapacity);
            Assert.Equal(0, lab.CurrentConstructionUnitCount);
            Assert.Single(lab.UnitTypes);
            Assert.Single(lab.UnitTypes.Where(u => u == typeof(Researcher)));

            Assert.Empty(lab.DoWork());

            lab.DoBuildProcess();
            Assert.Equal(0, lab.BuildProgress);

            lab.AddConstructionUnit(builder);
            Assert.Equal(1, lab.CurrentConstructionUnitCount);
            lab.DoBuildProcess();
            Assert.Equal(1, lab.BuildProgress);
            Assert.False(lab.AbleToFunction);

            lab.DoBuildProcess();
            Assert.Equal(2, lab.BuildProgress);
            Assert.True(lab.AbleToFunction);
        }
コード例 #2
0
        public void LabTest()
        {
            Lab        lab        = new Lab(5, 2);
            Builder    builder    = (Builder)UnitFactory.CreateUnit(typeof(Builder));
            Researcher researcher = (Researcher)UnitFactory.CreateUnit(typeof(Researcher));

            Assert.False(lab.AbleToFunction);
            Assert.Equal(2, lab.BuildingTime);
            Assert.Equal(0, lab.BuildProgress);
            Assert.Equal(0, lab.CurrentCapacity);
            Assert.Equal(5, lab.MaxCapacity);
            Assert.Equal(0, lab.CurrentConstructionUnitCount);
            Assert.Single(lab.UnitTypes);
            Assert.Single(lab.UnitTypes.Where(u => u == typeof(Researcher)));

            lab.DoBuildProcess();
            Assert.Equal(0, lab.BuildProgress);

            lab.AddConstructionUnit(builder);
            Assert.Equal(1, lab.CurrentConstructionUnitCount);
            lab.DoBuildProcess();
            Assert.Equal(1, lab.BuildProgress);
            Assert.False(lab.AbleToFunction);

            lab.DoBuildProcess();
            Assert.Equal(2, lab.BuildProgress);
            Assert.True(lab.AbleToFunction);

            var resources = lab.DoWork();

            Assert.NotNull(resources);
            Assert.Empty(resources);

            lab.AssignUnit(researcher);
            Assert.Equal(1, lab.CurrentCapacity);
            resources = lab.DoWork();
            Assert.NotNull(resources);
            Assert.Single(resources);
            Assert.Single(resources.Where(r => r.Type == "researchpoint"));
            Assert.Single(resources.Where(r => r.Type == "researchpoint" && r.Amount == 1));

            //unlock
            researcher.UpgradeConverterOutputResource("ore");
            researcher.UpgradeConverterInputMapping("ore", new List <ResourceAmount>()
            {
                new ResourceAmount("ironore", 1)
            });
            resources = lab.DoWork();
            Assert.NotNull(resources);
            Assert.Single(resources);
            Assert.Single(resources.Where(r => r.Type == "researchpoint"));
            Assert.Single(resources.Where(r => r.Type == "researchpoint" && r.Amount == 1));

            //add input
            lab.AddInput(new ResourceAmount("ore", 2));
            resources = lab.DoWork();
            Assert.NotNull(resources);
            Assert.Equal(2, resources.Count);
            Assert.Single(resources.Where(r => r.Type == "researchpoint"));
            Assert.Single(resources.Where(r => r.Type == "researchpoint" && r.Amount == 1));
            Assert.Single(resources.Where(r => r.Type == "ironore"));
            Assert.Single(resources.Where(r => r.Type == "ironore" && r.Amount == 2));

            //unlock x2
            researcher.UpgradeConverterInputMapping("ore", new List <ResourceAmount>()
            {
                new ResourceAmount("goldore", 1)
            });
            lab.AddInput(new ResourceAmount("ore", 1));
            resources = lab.DoWork();
            Assert.NotNull(resources);
            Assert.Equal(3, resources.Count);
            Assert.Single(resources.Where(r => r.Type == "researchpoint"));
            Assert.Single(resources.Where(r => r.Type == "researchpoint" && r.Amount == 1));
            Assert.Single(resources.Where(r => r.Type == "ironore"));
            Assert.Single(resources.Where(r => r.Type == "ironore" && r.Amount == 1));
            Assert.Single(resources.Where(r => r.Type == "goldore"));
            Assert.Single(resources.Where(r => r.Type == "goldore" && r.Amount == 1));

            lab.AddInput(new ResourceAmount("ore", 3));
            lab.RemoveInput(new ResourceAmount("ore", 2));
            resources = lab.DoWork();
            Assert.NotNull(resources);
            Assert.Equal(3, resources.Count);
            Assert.Single(resources.Where(r => r.Type == "researchpoint"));
            Assert.Single(resources.Where(r => r.Type == "researchpoint" && r.Amount == 1));
            Assert.Single(resources.Where(r => r.Type == "ironore"));
            Assert.Single(resources.Where(r => r.Type == "ironore" && r.Amount == 1));
            Assert.Single(resources.Where(r => r.Type == "goldore"));
            Assert.Single(resources.Where(r => r.Type == "goldore" && r.Amount == 1));
        }