import unittest import p5 class P5Tests(unittest.TestCase): def testCurrent(self): class X: pass rd = p5.Resolver(X, p5.DFS) rb = p5.Resolver(X, p5.BFS) X.baba = 6 self.assertEqual(rd.baba.value, 6) self.assertEqual(rd.baba.cls, X) self.assertEqual(rb.baba.value, 6) self.assertEqual(rb.baba.cls, X) def testVersus(self): class D: pass class C: pass class B(D): pass class A(B, C): pass C.baba = D.baba = 1 rb = p5.Resolver(A, p5.BFS) rd = p5.Resolver(A, p5.DFS) v = p5.ValueResolver(A) self.assertEqual(rb.baba.cls, C) self.assertEqual(rd.baba.cls, D) self.assertEqual(v.baba, 1) def testAttrError(self): class X: pass v = p5.ValueResolver(X) try: X.baba except AttributeError: pass else: self.fail('AttributeError was excpected, but no exception was raised!') if __name__ == "__main__": unittest.main()