def test_0element(self): a = ConstDom("") z = a.zero() self.assertEqual(str(z), "{ ZERO }") a = ConstDom("r1 = 3") #Test that zero is annihilator for extend, i.e. # a x Z = Z = Z x a b = a.extend(z) self.assertEqual(str(b), str(z)) b = z.extend(a) self.assertEqual(str(b), str(z)) #Test that zero is neutral for combine #Test with manual deref b = a.combine(z.__deref__()) self.assertEqual(str(b), str(a)) #Test with auto deref b = a.combine(z) self.assertEqual(str(b), str(a))
def test_combine(self): a = ConstDom("r1 = 5") b = ConstDom("r1 = 7") c = a.combine(b) self.assertEqual(str(c), "{ r1 = top ; }") a = ConstDom("r1 = 5") b = ConstDom("") c = a.combine(b) self.assertEqual(str(c), "{ r1 = top ; }") a = ConstDom("r1 = 5") b = ConstDom("r1 = 5") c = a.combine(b) self.assertEqual(str(c), "{ r1 = 5 ; }") a = ConstDom("r1 = 5; r2 = 7") b = ConstDom("r1 = 5; r2 = 8") c = a.combine(b) self.assertEqual(str(c), "{ r1 = 5 ; r2 = top ; }") a = ConstDom("r1 = 7; r2 = 5") b = ConstDom("r1 = 8; r2 = 5") c = a.combine(b) self.assertEqual(str(c), "{ r1 = top ; r2 = 5 ; }") a = ConstDom("r1 = 7; r2 = 5") b = ConstDom("r1 = 8; r2 = 4") c = a.combine(b) self.assertEqual(str(c), "{ r1 = top ; r2 = top ; }")