public void TestEverybodySet() { Game.Game g = new Game.Game(); //int rand = g.Rand.Next(); Village selectedVillage = g.Villages[0]; Family family = selectedVillage.FamiliesList[1]; Villager villager = family.FamilyMembers[0]; double lifeExpectancyIni = villager.LifeExpectancy; epidemic = new Game.GodSpell.Epidemic(g, villager); selectedVillage.JobsList.Tailor.AddPerson2(villager); JobsModel job = villager.Job; epidemic.LaunchEpidemic(); g.NextStep(); Assert.That(villager.LifeExpectancy < lifeExpectancyIni); g.NextStep(); Assert.That(villager.LifeExpectancy == lifeExpectancyIni - 2); List<Villager> sickVillagers= new List<Villager>(); for (int i = 0; i < 16; i++) { g.NextStep(); } Assert.That(family != null, "family is already dead"); foreach (Villager v in family.FamilyMembers) { if((v.Health & Healths.SICK)!=0) sickVillagers.Add(v); } Assert.That((sickVillagers.Count>1 || family.FamilyMembers.Count<2), "no family members got sick!!!"); sickVillagers.Clear(); foreach (Villager v in job.Workers) { if ((v.Health & Healths.SICK) != 0) sickVillagers.Add(v); } Assert.That((sickVillagers.Count > 1 || job.Workers.Count < 2), "no workers got sick!!!"); for (int i = 0; i < 16; i++) { g.NextStep(); } foreach (Villager v in job.Workers) { Assert.That(v.Faith < 91, "villager's faith has not changed!"); } }
public void death() { var MyGame = new Game.Game(); var village = MyGame.Villages[0]; Family family = MyGame.Villages[0].FamiliesList[0]; foreach (Family f in village.FamiliesList) { foreach (Villager v in f.FamilyMembers) { if (v.Job != null) { v.Job.RemovePerson2(v); } } } Villager mother = family.Mother; Villager father = family.Father; Assert.That(mother.ParentFamily == family); Assert.That(mother.GetFiance().GetFiance() == mother); Assert.That(family.Mother.ParentFamily == family); Assert.That(family.Mother == mother && family.Father == father); Assert.That(mother.StatusInFamily == Status.MARRIED && mother.StatusInFamily == Status.MARRIED); Villager kid=family.NewFamilyMember(); for (int i = 0; i < family.FamilyMembers.Count; i++) { Assert.That(family.FamilyMembers[i].Happiness == 80, "The happiness his not 80"); } Assert.That(family.HappinessAverage() == 80, "family average is not 80"); Assert.That(family.FamilyMembers.Count == 3); mother.Kill(); //mother.DieOrIsAlive(); MyGame.NextStep(); MyGame.NextStep(); MyGame.NextStep(); Assert.That(family.FamilyMembers.Count == 2); /*double tmp; for (int i = 0; i < family.FamilyMembers.Count; i++) { tmp = family.FamilyMembers[i].Happiness; Assert.AreEqual(75, tmp, "The happiness his not 75"); }*/ //Assert.AreEqual(75, family.HappinessAverage(), "family average is not 75"); }
public void saveTest() { Game.Game myGame = new Game.Game(); var MyWindow = new Tests.IWindowImplementationForTests(); Village selectedVillage = myGame.Villages[0]; Family family = selectedVillage.FamiliesList[1]; Villager villager = family.FamilyMembers[0]; do { myGame.NextStep(); foreach (IEvent e in myGame.EventList) { e.PublishMessage(MyWindow); e.Do(MyWindow); } } while (myGame.TotalPop < 30); Game.Serialize.Save(myGame); /*{ IFormatter formatter = new BinaryFormatter(); Stream stream = new FileStream("SAVED.bin", FileMode.Create, FileAccess.Write, FileShare.None); formatter.Serialize(stream, myGame); stream.Close(); }*/ do { myGame.NextStep(); foreach (IEvent e in myGame.EventList) { e.PublishMessage(MyWindow); e.Do(MyWindow); } } while (myGame.TotalPop < 70); myGame = null; /* { IFormatter formatter = new BinaryFormatter(); Stream stream = new FileStream("SAVED.bin", FileMode.Open, FileAccess.Read, FileShare.Read); myGame = (Game.Game)formatter.Deserialize(stream); stream.Close(); }*/ myGame=Game.Serialize.Load(); Assert.That(myGame.TotalPop < 65 && myGame.TotalPop > 29); }
public void Events() { var MyGame = new Game.Game(); var MyWindow = new Tests.IWindowImplementationForTests(); Villager villager1=MyGame.Villages[0].FamiliesList[0].Mother; Assert.AreEqual(0, MyGame.EventList.Count); MyGame.NextStep(); Assert.AreEqual(0, MyWindow.nb_pushAlert); Assert.AreEqual(0, MyWindow.nb_pushTrace); foreach (IEvent e in MyGame.EventList) { e.PublishMessage(MyWindow); e.Do(MyWindow); } Assert.AreEqual(1, MyWindow.goldtouched); MyGame.NextStep(); foreach (IEvent e in MyGame.EventList) { e.PublishMessage(MyWindow); e.Do(MyWindow); } Assert.AreEqual(2, MyWindow.goldtouched); //Assert.AreEqual(15, MyWindow.nb_pushTrace);//11 Assert.AreEqual(0, MyWindow.nb_pushAlert); villager1.Kill(); MyGame.NextStep(); foreach (IEvent Event in MyGame.EventList) { Event.PublishMessage(MyWindow); Event.Do(MyWindow); } //Assert.AreEqual(1, MyWindow.goldtouched); // Assert.AreEqual(34, MyWindow.nb_pushTrace);//32 Assert.AreEqual(1, MyWindow.nb_pushAlert); }
public void ToSee() { var myGame = new Game.Game(); var MyWindow = new Tests.IWindowImplementationForTests(); Village selectedVillage = myGame.Villages[0]; Family family = selectedVillage.FamiliesList[1]; Villager villager = family.FamilyMembers[0]; new Game.GodSpell.Epidemic(myGame, villager); myGame.NextStep(); myGame.NextStep(); myGame.NextStep(); new Game.GodSpell.Heal(myGame); do { myGame.NextStep(); foreach (IEvent e in myGame.EventList) { e.PublishMessage(MyWindow); e.Do(MyWindow); } } while (myGame.TotalPop < 3000 && myGame.TotalPop>1); //Assert.That(MyWindow.nb_pushAlert, Is.EqualTo(1)); }
public void Death() { var MyGame = new Game.Game(); Family family = MyGame.Villages[0].CreateFamilyFromScratch(); Assert.That(family.Mother.GetFiance().GetFiance() == family.Mother); Assert.That(family.Mother.ParentFamily == family); Assert.That(family.Mother == family.Mother && family.Father == family.Father); Assert.That(family.Mother.StatusInFamily == Status.MARRIED && family.Mother.StatusInFamily == Status.MARRIED); Assert.That(family.FamilyMembers.Count == 2); Villager mother = family.Mother; family.Mother.Kill(); //family.Mother.DieOrIsAlive(); MyGame.NextStep(); Assert.That(family.FamilyMembers.Count == 1); Assert.That(family.Mother == null); Assert.Throws<InvalidOperationException>(() => mother.GetFiance(), "villager is mourning!"); Assert.Throws<InvalidOperationException>(() => family.Father.GetFiance(), "villager is mourning!"); Assert.That(family.Father.StatusInFamily == Status.MOURNING); MyGame.NextStep(); }
public void Birth() { var MyGame = new Game.Game(); Assert.AreEqual(10, MyGame.TotalPop); for (int i = 0; i < /*12*18*/216; i++) { MyGame.NextStep(); } Assert.AreEqual(15, MyGame.TotalPop); Assert.AreEqual(5, MyGame.Villages[0].FamiliesList.Count); for (int i = 0; i < 11; i++) { MyGame.NextStep(); } int j = 0; while (MyGame.Villages[0].FamiliesList.Count == 5) { MyGame.NextStep(); j++; } Assert.Greater(MyGame.Villages[0].FamiliesList.Count, 5); //Assert.AreEqual(6, MyGame.Villages[0].FamiliesList.Count); }
public void familyTests() { var myGame = new Game.Game(); var village = myGame.Villages[0]; var families = village.FamiliesList; // Add new familly Assert.That(village.FamiliesList.Count, Is.EqualTo(5)); var family1 = village.CreateFamilyFromScratch(); Assert.That(village.FamiliesList.Count, Is.EqualTo(6)); // Kill a family family1.FamilyMembers[0].Kill(); family1.FamilyMembers[1].Kill(); myGame.NextStep(); Assert.That(village.FamiliesList.Count, Is.EqualTo(5)); }
public void killPopulation() { var myGame = new Game.Game(); var villager = myGame.Villages[0].FamiliesList[0].Father; Game.GodSpell.Epidemic epidemic = new Game.GodSpell.Epidemic(myGame, villager); var MyWindow = new Tests.IWindowImplementationForTests(); do { myGame.NextStep(); foreach (IEvent e in myGame.EventList) { e.PublishMessage(MyWindow); e.Do(MyWindow); } } while (MyWindow.nb_pushAlert == 0); //Assert.That(MyWindow.nb_pushAlert, Is.EqualTo(1)); }
public void familyRichOrPoor() { var MyGame = new Game.Game(); Assert.That(MyGame.TotalPop == 10); var village = MyGame.Villages[0]; Family family = MyGame.Villages[0].FamiliesList[0]; Villager mother = family.Mother; Villager father = family.Father; Assert.That(mother.ParentFamily == family); Assert.That(mother.GetFiance().GetFiance() == mother); Assert.That(family.Mother == mother && family.Father == father); Assert.That(mother.StatusInFamily == Status.MARRIED && mother.StatusInFamily == Status.MARRIED); Assert.AreEqual(10, MyGame.TotalPop); Assert.AreEqual(20, family.GoldStash); Assert.AreEqual(100, MyGame.TotalGold);// 5 families, 20 gold per family family.AddToGoldStash(110); Assert.That(family.GoldStash == 130); Assert.That(MyGame.TotalPop == 10); Assert.AreEqual(210, MyGame.TotalGold);//4families 20gold, 1 family 130 Assert.AreEqual(80, family.HappinessAverage(), "family average is not 80"); foreach (Family f in village.FamiliesList) { foreach (Villager v in f.FamilyMembers) { if (v.Job != null) { v.Job.RemovePerson2(v); } } } MyGame.NextStep();//-1 gold per villager Assert.AreEqual(128, family.GoldStash);//2villagers in family128 Assert.AreEqual(200, MyGame.TotalGold);//10villagers200 Assert.AreEqual(80.1, family.HappinessAverage(), "family average is not 80,1"); Assert.AreEqual(200, MyGame.LastTotalGold);//200 Villager kid = family.NewFamilyMember(); Assert.AreEqual(80.1,family.HappinessAverage(), "family average is not 80,1"); Assert.That(MyGame.TotalPop == 11); MyGame.NextStep();//4 other families of 2.each family has 20-3*2 Assert.That(family.HappinessAverage() == 80.1, "family average is not 80,1"); Assert.AreEqual(125, family.GoldStash);//3villagers in family125 Assert.AreEqual(189, MyGame.TotalGold);//11villagers189 family.AddToGoldStash(3003-125); MyGame.NextStep();//3villagers in family Assert.AreEqual(3000, family.GoldStash);//3000 Assert.AreEqual(3056, MyGame.TotalGold);//4 other families of 2.each family has 20-2*2*2 3056 //double nb1 = 3056; //double nb2 = 11; //double totest = nb1 / nb2;//278 Assert.AreEqual(1000, family.LastGoldStash / family.FamilyMembers.Count);//1000 Assert.AreEqual(277, MyGame.LastTotalGold / MyGame.TotalPop);//..HAHAHA...YOU KIDDING ME? //Assert.AreEqual(80.2*3/3, family.HappinessAverage(), "family average is not 80.2");//..HAHAHA... family.TakeFromGoldStash(2937); Assert.AreEqual(14, MyGame.Villages[0].FamiliesList[1].LastGoldStash);//14 MyGame.Villages[0].FamiliesList[1].AddToGoldStash(1255+91-14+36+3); /*while (MyGame.TotalPop < 100) { MyGame.Villages[0].FamiliesList[1].newFamilyMember(); } MyGame.NextStep(); Assert.AreEqual(1294, MyGame.Villages[0].FamiliesList[1].LastGoldStash);//1294 Assert.AreEqual(60, family.LastGoldStash);//60 Assert.AreEqual(20, family.LastGoldStash / family.FamilyMembers.Count);//20 MyGame.Villages[0].FamiliesList[1].addTOGoldStash(5000); Assert.AreEqual(1390, MyGame.LastTotalGold);//60+1255+12*3...(12)*3=36 1390 Assert.AreEqual(6390, MyGame.TotalGold);//6390 double isequalto = 13.9;//13.9 Assert.AreEqual(isequalto, MyGame.LastTotalGold / MyGame.TotalPop);//..HAHAHA...YOU KIDDING ME? Assert.AreEqual(3, family.FamilyMembers.Count()); Assert.AreEqual(80.2, family.HappinessAverage(), "family average is not 80.2");//..HAHAHA... 80.2 //not enough now. //MyGame.Villages[0].FamiliesList[1].addTOGoldStash(10000); MyGame.NextStep(); Assert.AreEqual( 80.1, family.HappinessAverage(), "family average is not 80.1");*/ MyGame.NextStep(); Assert.AreEqual(1383, MyGame.Villages[0].FamiliesList[1].LastGoldStash);//1294 Assert.AreEqual(80.1, family.HappinessAverage(), "family average is not 80.1"); MyGame.Villages[0].FamiliesList[1].AddToGoldStash(10000); MyGame.NextStep(); Assert.AreEqual(80, family.HappinessAverage(), "family average is not 80"); }
public void Job() { // Create game Game.Game game = new Game.Game(); var village = game.Villages[0]; var farm = new Farm(village, village.JobsList.Farmer); new Restaurant(village, village.JobsList.Cooker); foreach (Family f in village.FamiliesList) { foreach (Villager v in f.FamilyMembers) { if (v.Job!=null) { v.Job.RemovePerson2(v); } } } var v0 = village.FamiliesList[0].FamilyMembers[0]; var v1 = village.FamiliesList[0].FamilyMembers[1]; var v2 = village.FamiliesList[1].FamilyMembers[0]; var v3 = village.FamiliesList[1].FamilyMembers[1]; var v4 = village.FamiliesList[2].FamilyMembers[0]; var v5 = village.FamiliesList[2].FamilyMembers[1]; var cooker = village.JobsList.Cooker; // Jobs are created int i; for(i=0; i<8; i++) Assert.That(village.JobsList[i], Is.Not.Null); // Add new worker to job Assert.That(cooker.Workers.Count, Is.EqualTo(0)); cooker.AddPerson2(v0); Assert.That(cooker.Workers.Count, Is.EqualTo(1)); Assert.That(v0.Job==cooker); // Try add the same worker to Apothecary job //Assert.Throws<InvalidOperationException>(() => cooker.AddPerson(v0), "Add worker issue!"); Assert.That( cooker.AddPerson2(v0)==false); Assert.That(cooker.Workers.Count, Is.EqualTo(1)); game.NextStep(); // See gold generation Assert.AreEqual(130, cooker.GoldGenerated);// /!\ should never be called. //was 65 cooker.GenerateGold(); Assert.That(v0.ParentFamily.GoldStash, Is.EqualTo(278));//65+20 Assert.That(v1.ParentFamily.GoldStash, Is.EqualTo(278));//65+20 Assert.That(v2.ParentFamily.GoldStash, Is.EqualTo(18));//0+20 // Add other worker cooker.AddPerson2(v2); Assert.That(cooker.Workers.Count, Is.EqualTo(2)); // New Gold generation cooker.GenerateGold(); Assert.That(cooker.GoldGenerated, Is.EqualTo(65));//64 Assert.That(v0.ParentFamily.GoldStash, Is.EqualTo(343));//129+20 Assert.That(v2.ParentFamily.GoldStash, Is.EqualTo(83));//64+20 // Remove worker cooker.RemovePerson2(v0); Assert.That(cooker.Workers.Count, Is.EqualTo(1)); Assert.That(v0.Job==null); // Try remove the same worker //Assert.Throws<InvalidOperationException>(() => cooker.RemovePerson2(v0), "Remove worker issue!"); Assert.That(cooker.RemovePerson2(v0)==false); Assert.That(cooker.Workers.Count, Is.EqualTo(1)); // Gold generation up cooker.GenerateGold(); Assert.That(cooker.GoldGenerated, Is.EqualTo(130));//65 Assert.That(v2.ParentFamily.GoldStash, Is.EqualTo(213));//129+20 }
public void Fiance() { var MyGame = new Game.Game(); Family family1 = MyGame.Villages[0].CreateFamilyFromScratch(); Family family2 = MyGame.Villages[0].CreateFamilyFromScratch(); Villager girlf1; do { girlf1 = family1.NewFamilyMember(); } while (girlf1.Gender != Genders.FEMALE); Assert.That(girlf1.StatusInFamily == Status.SINGLE); Villager guy1f2; do { guy1f2 = family1.NewFamilyMember(); } while (guy1f2.Gender != Genders.MALE); Villager guy2f2; do { guy2f2 = family1.NewFamilyMember(); } while (guy2f2.Gender != Genders.MALE); Assert.That(girlf1.StatusInFamily == Status.SINGLE); girlf1.Engage(guy1f2);//hmmm accessibility? Assert.That(girlf1.StatusInFamily == Status.ENGAGED); Assert.That(!MyGame.SingleMen.Contains(guy1f2)); guy1f2.Kill(); //guy1f2.DieOrIsAlive(); MyGame.NextStep();// MyGame.NextStep(); MyGame.NextStep(); Assert.That(girlf1.StatusInFamily == Status.SINGLE, "is not single!"); Assert.Throws<InvalidOperationException>(() => girlf1.GetFiance(), "is single"); girlf1.Engage(guy2f2); Assert.That(girlf1.StatusInFamily == Status.ENGAGED); Assert.That(girlf1.GetFiance() == guy2f2); Assert.That(guy2f2.StatusInFamily == Status.ENGAGED); Assert.That(girlf1.GetFiance() == guy2f2); Assert.That(guy2f2.GetFiance() == girlf1); guy2f2.Kill(); //guy2f2.DieOrIsAlive(); MyGame.NextStep(); Assert.That(girlf1.StatusInFamily == Status.SINGLE); Assert.Throws<InvalidOperationException>(() => girlf1.GetFiance(), "fiance is single"); Assert.That(!MyGame.SingleMen.Contains(guy1f2)); Assert.That(!MyGame.SingleMen.Contains(guy2f2)); }
public void NewFamily() { var MyGame = new Game.Game(); Family family1 = MyGame.Villages[0].CreateFamilyFromScratch(); Family family2 = MyGame.Villages[0].CreateFamilyFromScratch(); family1.TakeFromGoldStash(100); Assert.That(family1.GoldStash, Is.EqualTo(0)); family1.AddToGoldStash(100); Assert.That(family1.GoldStash, Is.EqualTo(100)); family2.TakeFromGoldStash(100); Assert.That(family2.GoldStash, Is.EqualTo(0)); family2.AddToGoldStash(100); Assert.That(family2.GoldStash, Is.EqualTo(100)); Villager girlf1; do { girlf1 = family1.NewFamilyMember(); } while (girlf1.Gender != Genders.FEMALE); Assert.That(girlf1.StatusInFamily == Status.SINGLE); Villager boyf2; do { boyf2 = family2.NewFamilyMember(); } while (boyf2.Gender != Genders.MALE); Assert.That(family2.FamilyMembers.Contains(boyf2)); Family family3 = MyGame.Villages[0].CreateFamily(girlf1, boyf2); Assert.That(family3 != null); Assert.That(family3.GoldStash == 20); Assert.That(family1.GoldStash == 90); Assert.That(family2.GoldStash == 90); Assert.That(!family2.FamilyMembers.Contains(boyf2)); Assert.That(family3.FamilyMembers.Contains(boyf2)); //maybe the single list needs to be cleaned. //TODO : check that when a guy dies, he is out of the single list. Villager girl2f1; do { girl2f1 = family1.NewFamilyMember(); } while (girl2f1.Gender != Genders.FEMALE); Villager girl2f2; do { girl2f2 = family2.NewFamilyMember(); } while (girl2f2.Gender != Genders.FEMALE); MyGame.NextStep(); Action Totest = delegate() { MyGame.Villages[0].CreateFamily(girl2f1, girl2f2); }; Assert.Throws<InvalidOperationException>(() => MyGame.Villages[0].CreateFamily(girl2f1, girl2f2), "gender issue!"); Assert.That(!MyGame.SingleMen.Contains(family1.Father)); MyGame.NextStep(); Villager boy2f1; do { boy2f1 = family1.NewFamilyMember(); } while (boy2f1.Gender != Genders.MALE); Assert.Throws<InvalidOperationException>(() => MyGame.Villages[0].CreateFamily(girl2f1, boy2f1), "same family!"); family1.Mother.Kill(); //family1.Mother.DieOrIsAlive(); MyGame.NextStep(); Assert.Throws<InvalidOperationException>(() => family1.NewFamilyMember(), "missing parent"); }