class TestRule(unittest.TestCase): def setUp(self): self.Aagent1 = Atomic_Agent('S', ['u'], 'cyt') self.Aagent12 = Atomic_Agent('S', ['p'], 'cyt') self.Aagent13 = Atomic_Agent('S', ['u', 'p'], 'cyt') self.Aagent2 = Atomic_Agent('T', ['u'], 'cyt') self.Aagent22 = Atomic_Agent('T', ['p'], 'cyt') self.Aagent23 = Atomic_Agent('T', ['u', 'p'], 'cyt') self.Aagent3 = Atomic_Agent('N', ['u'], 'cyt') self.Aagent32 = Atomic_Agent('N', ['p'], 'cyt') self.Aagent33 = Atomic_Agent('N', ['u', 'p'], 'cyt') self.Aagent4 = Atomic_Agent('N', ['u', 'p'], 'liq') self.Sagent1 = Structure_Agent('KaiC', [self.Aagent1, self.Aagent2], 'cyt') self.Sagent2 = Structure_Agent('KaiC', [self.Aagent2, self.Aagent1], 'cyt') self.Sagent3 = Structure_Agent('KaiC', [self.Aagent2, self.Aagent3], 'cyt') self.Sagent4 = Structure_Agent('KaiC', [self.Aagent13, self.Aagent23], 'cyt') self.Sagent5 = Structure_Agent('KaiC', [self.Aagent12, self.Aagent22, self.Aagent32], 'cyt') self.Sagent6 = Structure_Agent('KaiC', [self.Aagent22, self.Aagent12], 'cyt') self.Sagent7 = Structure_Agent('KaiC', [self.Aagent13, self.Aagent2], 'cyt') self.Sagent8 = Structure_Agent('KaiC', [self.Aagent1, self.Aagent23], 'cyt') self.Sagent9 = Structure_Agent('KaiC', [self.Aagent1, self.Aagent22], 'cyt') self.Sagent10 = Structure_Agent('KaiC', [], 'cyt') self.Sagent11 = Structure_Agent('KaiC', [self.Aagent1], 'cyt') self.Sagent12 = Structure_Agent('KaiC', [self.Aagent12], 'cyt') self.Sagent13 = Structure_Agent('KaiC', [self.Aagent23, self.Aagent33], 'cyt') self.Sagent14 = Structure_Agent('KaiC', [self.Aagent12, self.Aagent23, self.Aagent33], 'cyt') self.Xagent1 = Complex_Agent([self.Sagent1, self.Sagent2], 'cyt') self.Xagent2 = Complex_Agent([self.Sagent2, self.Sagent1], 'cyt') self.Xagent3 = Complex_Agent([self.Sagent1, self.Sagent3], 'cyt') self.Xagent4 = Complex_Agent([self.Sagent3, self.Sagent1], 'cyt') self.Xagent5 = Complex_Agent([self.Sagent4, self.Sagent1], 'cyt') self.Xagent6 = Complex_Agent([self.Sagent1, self.Sagent1], 'cyt') self.Xagent7 = Complex_Agent([self.Sagent11, self.Sagent10, self.Sagent10], 'cyt') self.Xagent8 = Complex_Agent([self.Sagent1, self.Sagent4, self.Sagent9], 'cyt') self.Xagent9 = Complex_Agent([self.Sagent5, self.Sagent4, self.Sagent9], 'cyt') self.Xagent10 = Complex_Agent([self.Aagent1, self.Aagent1], 'cyt') self.Xagent11 = Complex_Agent([self.Sagent12, self.Sagent10, self.Sagent10], 'cyt') self.Xagent12 = Complex_Agent([self.Sagent11, self.Sagent4, self.Sagent5], 'cyt') self.Xagent13 = Complex_Agent([self.Sagent12, self.Sagent4, self.Sagent5], 'cyt') self.Xagent14 = Complex_Agent([self.Sagent1, self.Sagent3, self.Sagent5], 'cyt') self.Xagent15 = Complex_Agent([self.Sagent4, self.Sagent13], 'cyt') self.Xagent16 = Complex_Agent([self.Sagent4, self.Sagent13, self.Sagent14], 'cyt') self.Xagent17 = Complex_Agent([self.Sagent10, self.Sagent10], 'cyt') self.Xagent18 = Complex_Agent([self.Sagent6, self.Sagent1], 'cyt') self.Xagent19 = Complex_Agent([self.Sagent1, self.Sagent6], 'cyt') self.Xagent20 = Complex_Agent([self.Sagent4, self.Sagent4], 'cyt') self.Xagent21 = Complex_Agent([self.Sagent4, self.Sagent4, self.Sagent4, self.Sagent4], 'cyt') self.Xagent22 = Complex_Agent([self.Sagent6, self.Sagent1, self.Sagent6, self.Sagent1], 'cyt') self.Xagent23 = Complex_Agent([self.Sagent6, self.Sagent1, self.Sagent1, self.Sagent6], 'cyt') self.Xagent24 = Complex_Agent([self.Sagent1, self.Sagent6, self.Sagent6, self.Sagent1], 'cyt') self.Xagent25 = Complex_Agent([self.Sagent1, self.Sagent6, self.Sagent1, self.Sagent6], 'cyt') self.Xagent26 = Complex_Agent([self.Sagent6, self.Sagent6], 'cyt') self.Rule1 = Rule([self.Aagent1], [self.Aagent12]) self.Rule2 = Rule([self.Sagent1], [self.Sagent9]) self.Rule3 = Rule([self.Aagent32], []) self.Rule4 = Rule([self.Aagent1, self.Aagent1], [self.Xagent10]) self.Rule5 = Rule([], [self.Aagent32]) self.Rule6 = Rule([self.Xagent7], [self.Xagent11]) self.Rule7 = Rule([self.Xagent15, self.Sagent14], [self.Xagent16]) self.Rule8 = Rule([self.Sagent10, self.Sagent10], [self.Xagent17]) self.Rule9 = Rule([self.Xagent20, self.Xagent20], [self.Xagent21]) self.Rule10 = Rule([self.Xagent10], [self.Aagent1, self.Aagent1]) self.Rule11 = Rule([self.Xagent16], [self.Xagent15, self.Sagent14]) self.Rule12 = Rule([self.Xagent21], [self.Xagent20, self.Xagent20]) self.Rule13 = Rule([self.Aagent33], [self.Aagent4]) self.Rule14 = Rule([], []) self.Rule15 = Rule([], []) self.Rule16 = Rule([], []) self.Rule17 = Rule([], []) self.Rule18 = Rule([], []) self.Rule19 = Rule([], []) self.Rule20 = Rule([], []) def test_equal(self): self.assertTrue(self.Rule1.__eq__(self.Rule1)) self.assertTrue(self.Rule2.__eq__(self.Rule2)) self.assertFalse(self.Rule1.__eq__(self.Rule2)) def test_print(self): self.assertEqual(self.Rule1.__str__(), self.Rule1.__str__()) self.assertEqual(self.Rule1.__str__(), "S{u}::cyt => S{p}::cyt") def test_hash(self): self.assertNotEqual(hash(self.Rule1), hash(self.Rule2)) self.assertEqual(hash(self.Rule2), hash(self.Rule2)) def test_checkcandidateAndLhs(self): self.assertTrue(self.Rule7.checkcandidateAndLhs([self.Xagent3, self.Sagent5])) self.assertFalse(self.Rule7.checkcandidateAndLhs([self.Xagent4, self.Sagent5])) def test_match(self): candidate1 = [self.Xagent3, self.Sagent5] self.assertEqual(self.Rule7.match(candidate1), [tuple(candidate1)]) def test_formComplex(self): candidate_old = [self.Aagent1, self.Aagent1] candidate_new = [self.Xagent10] self.assertEqual(self.Rule4.formComplex(candidate_old), candidate_new) candidate_old = [self.Xagent3, self.Sagent5] candidate_new = [self.Xagent14] self.assertEqual(self.Rule7.formComplex(candidate_old), candidate_new) def test_dissociateComplex(self): candidate_old = [self.Xagent10] candidate_new = [self.Aagent1, self.Aagent1] self.assertEqual(self.Rule10.dissociateComplex(candidate_old), candidate_new) candidate_old = [self.Xagent14] candidate_new = [self.Xagent3, self.Sagent5] self.assertEqual(self.Rule11.dissociateComplex(candidate_old), candidate_new) def test_translate(self): candidate_old = [] candidate_new = [self.Aagent32 ] self.assertEqual(self.Rule5.translate(), candidate_new) def test_degrade(self): candidate_old = [self.Aagent32] candidate_new = [] self.assertEqual(self.Rule3.degrade(candidate_old), candidate_new) def test_changeAtomicStates(self): self.assertEqual(changeAtomicStates(self.Aagent12, self.Aagent1), self.Aagent12) def test_changeStructureStates(self): self.assertEqual(changeStructureStates(self.Sagent9, self.Sagent1), self.Sagent9) def test_changeComplexStates(self): self.assertEqual(changeComplexStates(self.Xagent11, self.Xagent12), self.Xagent13) def test_replace(self): candidate_old = [self.Aagent1, self.Aagent1] candidate_new = [self.Xagent10] self.assertEqual(self.Rule4.replace(candidate_old), candidate_new) candidate_old = [] candidate_new = [self.Aagent32] self.assertEqual(self.Rule5.replace(candidate_old), candidate_new) candidate_old = [self.Aagent32] candidate_new = [] self.assertEqual(self.Rule3.replace(candidate_old), candidate_new) candidate_old = [self.Aagent1] candidate_new = [self.Aagent12] self.assertEqual(self.Rule1.replace(candidate_old), candidate_new) candidate_old = [self.Sagent1] candidate_new = [self.Sagent9] self.assertEqual(self.Rule2.replace(candidate_old), candidate_new) candidate_old = [self.Xagent12] candidate_new = [self.Xagent13] self.assertEqual(self.Rule6.replace(candidate_old), candidate_new) candidate_old = [self.Xagent10] candidate_new = [self.Aagent1, self.Aagent1] self.assertEqual(self.Rule10.replace(candidate_old), candidate_new) def test_replacement(self): candidate_old = [self.Xagent3, self.Sagent5] candidate_new = [[self.Xagent14]] self.assertEqual(sorted(self.Rule7.replacement(candidate_old)), sorted(candidate_new)) candidate_old = [self.Sagent1, self.Sagent3] candidate_new = [[self.Xagent3]] self.assertEqual(sorted(self.Rule8.replacement(candidate_old)), sorted(candidate_new)) candidate_old = [self.Xagent18, self.Xagent19] candidate_new = [[self.Xagent22]] self.assertEqual(sorted(self.Rule9.replacement(candidate_old)), sorted(candidate_new)) candidate_old = [self.Xagent22] candidate_new = [[self.Xagent19, self.Xagent19], [self.Xagent6, self.Xagent26]] self.assertEqual(sorted(self.Rule12.replacement(candidate_old)), sorted(candidate_new)) candidate_old = [self.Aagent33] candidate_new = [[self.Aagent4]] self.assertEqual(sorted(self.Rule13.replacement(candidate_old)), sorted(candidate_new))