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_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)