def test_mate(self): """ Method to test Chromosome.mate(Chromosome) """ c1 = Chromosome.gen_random() c2 = Chromosome.gen_random() # Check to ensure the right number of children are returned. children = c1.mate(c2) self.assertEqual(2, len(children)) # Check the resulting child gene lengths self.assertEqual(13, len(children[0].gene)) self.assertEqual(13, len(children[1].gene)) # Determine the pivot point for the mating tmpArr = children[0].gene for pivot in range(len(c1.gene)): if c1.gene[pivot] != tmpArr[pivot]: break # Check the first child. for i in range(len(tmpArr)): if (i < pivot): self.assertEqual(c1.gene[i], tmpArr[i]) else: self.assertEqual(c2.gene[i], tmpArr[i]) # Check the second child. tmpArr = children[1].gene for i in range(len(tmpArr)): if i < pivot: self.assertEqual(c2.gene[i], tmpArr[i]) else: self.assertEqual(c1.gene[i], tmpArr[i])
def test_mate(self): """ Method to test Chromosome.mate(Chromosome) """ c1 = Chromosome.gen_random() c2 = Chromosome.gen_random() # Check to ensure the right number of children are returned. children = c1.mate(c2) self.assertEqual(2, len(children)) # Check the resulting child gene lengths self.assertEqual(13, len(children[0].gene)) self.assertEqual(13, len(children[1].gene)) # Determine the pivot point for the mating tmpArr = children[0].gene for pivot in range(len(c1.gene)): if c1.gene[pivot] != tmpArr[pivot]: break; # Check the first child. for i in range(len(tmpArr)): if (i < pivot): self.assertEqual(c1.gene[i], tmpArr[i]) else: self.assertEqual(c2.gene[i], tmpArr[i]) # Check the second child. tmpArr = children[1].gene for i in range(len(tmpArr)): if i < pivot: self.assertEqual(c2.gene[i], tmpArr[i]) else: self.assertEqual(c1.gene[i], tmpArr[i])
def test_fitness(self): """ Method used to test Chromosome.fitness(), and indirectly Chromosome._update_fitness(). """ c = Chromosome("Hello, world!") self.assertEqual(0, c.fitness) c = Chromosome("H5p&J;!l<X\\7l") self.assertEqual(399, c.fitness) c = Chromosome("Vc;fx#QRP8V\\$") self.assertEqual(297, c.fitness) c = Chromosome("t\\O`E_Jx$n=NF") self.assertEqual(415, c.fitness)
def test_gen_random(self): """ Method used to test Chromosome.gen_random. """ for i in range(1000): c = Chromosome.gen_random() self.assertTrue(c.fitness >= 0) self.assertEqual(13, len(c.gene)) for ch in c.gene: self.assertTrue(ord(ch) >= 32) self.assertTrue(ord(ch) <= 121)
def test_mutate(self): """ Method to test Chromosome.mutate() """ for i in range(1000): c1 = Chromosome.gen_random() c2 = c1.mutate() self.assertEqual(len(c1.gene), len(c2.gene)) s1 = set(c1.gene) s2 = set(c2.gene) self.assertTrue(len(s1 - s2) <= 1)