def test_ordered_monomer_initialization(self): #Correct instantiation x = OrderedMonomer() x = OrderedMonomer(direction="forward") self.assertEqual(x.direction,"forward") self.assertEqual(x.position,None) self.assertEqual(x.parent,None) self.assertEqual(OrderedMonomer(direction="reverse"),x.set_dir("reverse")) #Position with no parent with self.assertRaisesRegex(ValueError, f"OrderedMonomer"): m = OrderedMonomer(position = 1) #Bad parent with self.assertRaisesRegex(ValueError, f"parent must be an OrderedPolymer"): m = OrderedMonomer(parent = 1) p = OrderedPolymer(parts = []) #Parent with no position with self.assertRaisesRegex(ValueError, f"OrderedMonomer"): m = OrderedMonomer(parent = p) #Correct instantiation with parent and position m = OrderedMonomer(parent = p, position = 0)
def test_initialization(self): x = OrderedMonomer() y = OrderedMonomer() c = MonomerCollection([x, y]) #test setter assert len(c.monomers) == 2 assert type(c.monomers) == tuple #test copying assert x not in c.monomers and y not in c.monomers assert x.parent is None and y.parent is None assert [m.parent == c for m in c.monomers]
def test_monomers_setter_and_getter(self): x = OrderedMonomer() y = OrderedMonomer() c = MonomerCollection([x, y]) xr = OrderedMonomer(direction="reverse") c.monomers = [x, xr, y] assert len(c.monomers) == 3 assert c.monomers[1].direction == "reverse" assert all([m.parent is None for m in [x, xr, y]]) assert all([m.parent is c for m in c.monomers])
def test_properties(self): x = OrderedMonomer() #Test None initialization of properties self.assertTrue(x.parent is None) self.assertTrue(x.direction is None) self.assertTrue(x.position is None) p = OrderedPolymer(parts = []) x = OrderedMonomer(parent = p, position = 0, direction = "r") self.assertTrue(x.parent == p) self.assertTrue(x.position == 0) self.assertTrue(x.direction == "r")
def test_ordered_polymer_intialization(self): x = OrderedMonomer(direction="forward") y = OrderedPolymer([x,[OrderedMonomer(),"reverse"],OrderedMonomer()]) self.assertFalse(y[0]==x)#Parts should be copied, not inserted! #Test faithful copying of a part self.assertEqual(y[0].direction, x.direction) self.assertEqual(y[0].parent, y) self.assertEqual(y[0].position, 0) self.assertEqual(y[1].position,1) self.assertEqual(y[1].direction,"reverse") self.assertEqual(y[1].parent,y) self.assertEqual(y[2].position,2) self.assertEqual(y[2].direction,None) self.assertEqual(y[2].parent,y)
def test_ordered_polymer_manipulations(self): z = OrderedMonomer(direction="forward") x = OrderedMonomer(direction="reverse") y = OrderedPolymer([x,[OrderedMonomer(),"reverse"],OrderedMonomer()]) #replace y.replace(1,z) truthvalue = OrderedPolymer([OrderedMonomer(direction="reverse"),OrderedMonomer(direction="forward"),OrderedMonomer(direction=None)]) self.assertEqual(y,truthvalue) #insert y = OrderedPolymer([x,OrderedMonomer()]) ins = OrderedMonomer(direction="forward") y.insert(1,ins) self.assertEqual(y,truthvalue) #append y = OrderedPolymer([x,OrderedMonomer(direction="forward")]) y.append(OrderedMonomer()) self.assertEqual(y,truthvalue) #reverse y = OrderedPolymer([OrderedMonomer(),OrderedMonomer(direction="reverse"),\ OrderedMonomer(direction="forward")]) y.reverse() self.assertEqual(y,truthvalue) #delpart y = OrderedPolymer([OrderedMonomer(direction="reverse"),\ OrderedMonomer(direction="forward"),\ OrderedMonomer(direction="reverse"),\ OrderedMonomer()]) z = y[2] self.assertEqual(z.parent,y) y.delpart(2) self.assertEqual(z.parent,None) self.assertEqual(y,truthvalue)