def test_hash(self): a = ContinuousVariable("a") b = ContinuousVariable("a") self.assertEqual(hash(a), hash(b)) a._compute_value = lambda x: x self.assertNotEqual(hash(a), hash(b)) b._compute_value = lambda x: x self.assertNotEqual(hash(a), hash(b)) a1 = ContinuousVariable("a") a2 = ContinuousVariable("a") a._compute_value = Identity(a1) self.assertNotEqual(hash(a), hash(b)) b._compute_value = Identity(a2) self.assertEqual(hash(a), hash(b)) at = TimeVariable("a") b = ContinuousVariable("b") self.assertEqual(hash(a1), hash(a2)) self.assertNotEqual(hash(a1), hash(b)) self.assertNotEqual(hash(a1), hash(at))
def test_eq_with_compute_value(self): a = ContinuousVariable("a") b = ContinuousVariable("a") self.assertEqual(a, a) self.assertEqual(a, b) self.assertIsNot(a, b) a._compute_value = lambda x: x self.assertEqual(a, a) self.assertNotEqual(a, b) a1 = ContinuousVariable("a") a2 = ContinuousVariable("a") c = ContinuousVariable("c") a._compute_value = Identity(a1) self.assertEqual(a, a) self.assertEqual(a, b) self.assertEqual(hash(a), hash(b)) b._compute_value = a.compute_value self.assertEqual(a, b) b._compute_value = Identity(a1) self.assertEqual(a, b) b._compute_value = Identity(a2) self.assertEqual(a, b) b._compute_value = Identity(c) self.assertNotEqual(a, b) b._compute_value = Identity(a2) a1._compute_value = lambda x: x self.assertNotEqual(a, b) a1._compute_value = Identity(c) self.assertNotEqual(a, b) a2._compute_value = Identity(c) self.assertEqual(a, b)