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