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()))
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')
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)