Ejemplo n.º 1
0
        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!");
            }
        }
Ejemplo n.º 2
0
        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");
        }
Ejemplo n.º 3
0
        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);
        }
Ejemplo n.º 4
0
        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);
        }
Ejemplo n.º 5
0
 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));
 }
Ejemplo n.º 6
0
        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();
        }
Ejemplo n.º 7
0
        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);
        }
Ejemplo n.º 8
0
        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));
        }
Ejemplo n.º 9
0
 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));
 }
Ejemplo n.º 10
0
        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");
        }
Ejemplo n.º 11
0
        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
        }
Ejemplo n.º 12
0
        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));
        }
Ejemplo n.º 13
0
        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");
        }