public void generateScoresArrayTest()
 {
     Genetics genetics = new Genetics(20, 20, 19);
     genetics.createBoard();
     genetics.generatePopulation(10);
     genetics.generateScores();
     Assert.AreEqual(10, genetics.individualsSortedByScore.Count);
 }
 public void generatePopulationBinaryChromosomesTest()
 {
     Genetics genetics = new Genetics(20, 20, 19);
     genetics.generatePopulation(10);
     Assert.AreEqual(5, genetics.numOfBinaryDigitsForStartCells);
     Assert.AreEqual(2*19, genetics.numOfBinaryDigitsForSteps);
     Assert.AreEqual(10, genetics.population.Length);
     Assert.IsTrue(genetics.population[0][0] < 2, "Encoding of individuals must be binary and 1st digit was: "+ genetics.population[0][0]);
 }
 public void calculatePathOfIndividualOutOfBoundsTest()
 {
     Genetics genetics = new Genetics(5, 5, 4);
     genetics.generatePopulation(10);
     int[] individual = { 1, 0, 0,
                          0, 0,
                          0, 0,
                          1, 1,
                          1, 0};
     Tuple<int, int>[] individualPath = genetics.calculatePathOfIndividual(individual);
     Tuple<int, int>[] expectedPath = { new Tuple<int, int>(0, 4), new Tuple<int, int>(1, 4), new Tuple<int, int>(2, 4),
                                        new Tuple<int, int>(2, 5), new Tuple<int, int>(3, 5)};
     Assert.AreEqual(expectedPath[0], individualPath[0]);
     Assert.AreEqual(expectedPath[1], individualPath[1]);
     Assert.AreEqual(expectedPath[4], individualPath[4]);
 }
 public void generateScoresAndSortIndividualsTest()
 {
     Genetics genetics = new Genetics(3, 3, 2);
     genetics.mapHelpers.matrix = new Genetics.Actions[3, 3];
     genetics.mapHelpers.matrix[0, 0] = Genetics.Actions.Circus;
     genetics.mapHelpers.matrix[0, 1] = Genetics.Actions.Team;
     genetics.mapHelpers.matrix[0, 2] = Genetics.Actions.Advisor;
     genetics.mapHelpers.matrix[1, 0] = Genetics.Actions.Sales;
     genetics.mapHelpers.matrix[1, 1] = Genetics.Actions.Investor;
     genetics.mapHelpers.matrix[1, 2] = Genetics.Actions.Circus;
     genetics.mapHelpers.matrix[2, 0] = Genetics.Actions.None;
     genetics.mapHelpers.matrix[2, 1] = Genetics.Actions.None;
     genetics.mapHelpers.matrix[2, 2] = Genetics.Actions.BadNews;
     genetics.generatePopulation(3);
     genetics.population[0] = new int[] { 1, 0, 0, 1, 0, 1 }; // Starting 0,2; down; down
     genetics.population[1] = new int[] { 0, 1, 0, 0, 0, 1 }; // Starting 0,1; right; down
     genetics.population[2] = new int[] { 1, 0, 0, 0, 0, 0 }; // Starting 0,2; right; right
     genetics.generateScores();
     Assert.AreEqual(1, genetics.individualsSortedByScore[0].Key);
     Assert.AreEqual(0, genetics.individualsSortedByScore[1].Key);
     Assert.AreEqual(2, genetics.individualsSortedByScore[2].Key);
 }