def testMultigenic(self):
        class Foo(object):
            a = b = c = d = e = f = 1

        # Representation
        g1 = KarvaGene(['a', 'b', 'c'], 1)
        g2 = KarvaGene(['d', 'e', 'f'], 1)
        c = Computation([g1, g2], 1)
        self.assertEqual('abcdef', repr(c))

        # Evaluation
        self.assertEqual((1, 1), c(Foo()))
Exemple #2
0
    def testDerivation(self):
        alleles = [subtract_op, '?', '?', 1, 0]
        gene = KarvaGene(alleles, 1, [2, 5])
        self.assertEqual(gene._evaluation, [subtract_op, 5, 2])
        self.assertEqual(gene.alleles, alleles)

        # Make sure the RNCs are evaluated correctly
        o = object()
        self.assertEqual(3, gene(o))

        # Make sure all caching is done
        self.assertTrue(o in getattr(gene, '___call___memo'))
        self.assertEqual(gene._evaluation, [3, 5, 2])

        # And that changes to the used RNCs eliminate that cache
        gene2 = gene.derive([(4, [1])])
        self.assertNotEqual(gene2._evaluation, gene._evaluation)
        self.assertRaises(AttributeError, getattr, gene2, '___call___memo')
Exemple #3
0
 def setUp(self):
     self.gene = KarvaGene([add_op, subtract_op, 'a', 1, 'a'], 2)
 def setUp(self):
     self.gene = KarvaGene([z,z,'y',3,4], 1)
     self.chromosome = Computation([self.gene], 2)