def test_make_proxy(): ip = IProperty(getter=True) ip.get = MethodType(lambda s, o: False, ip) pm = _ProxyManager() ip_p = pm.make_proxy(ip, WeakRef(), {'get': lambda s, o: True, 'toto': 'test'}) assert not ip.get(None) assert ip_p.get(None) assert ip_p.toto == 'test'
def test_make_proxy(): ip = IProperty(getter=True) ip.get = MethodType(lambda s, o: False, ip) pm = _ProxyManager() ip_p = pm.make_proxy(ip, WeakRef(), { 'get': lambda s, o: True, 'toto': 'test' }) assert not ip.get(None) assert ip_p.get(None) assert ip_p.toto == 'test'
def test_set_check(): class Tester(FalseDriver): t1 = True t2 = False p = IProperty(True, checks=(None, '{t1} is True; {t2} == False')) p.name = 'test' p.get = MethodType(lambda s, o: None, p) p.set = MethodType(lambda s, o, v: v, p) t = Tester() assert not hasattr(p, 'get_check') assert hasattr(p, 'set_check') p._get(t) p._set(t, 1) t.t2 = True with raises(AssertionError): p._set(t, 1) try: p._set(t, 1) except AssertionError as e: m = 'Setting test assertion t2 == False failed, values are : t2=True' assert e.message == m
def test_cloning(): p = IProperty(True, True) def aux(self, obj): return self m = MethodType(aux, p) p.get = m p.val = 1 p.__doc__ = 'test' p2 = p.clone() assert p2 is not p assert p2.val == 1 assert p2.get.__func__ == aux assert p2.get(None) != p.get(None) assert p2.__doc__ == p.__doc__
def setup(self): p = IProperty() p.name = 'test' def getter(self, obj): return 'Test' p.get = MethodType(getter, p) self.p = p
def test_obsolete(): ip = IProperty(getter=True) ip.get = MethodType(lambda s, o: False, ip) pm = _ProxyManager() ip_p = pm.make_proxy(ip, WeakRef(), {'get': lambda s, o: True, 'toto': 'test'}) assert not ip_p.obsolete ip_p.unpatch(['get']) assert not ip_p.obsolete ip_p.unpatch(['toto']) assert ip_p.obsolete
def test_obsolete(): ip = IProperty(getter=True) ip.get = MethodType(lambda s, o: False, ip) pm = _ProxyManager() ip_p = pm.make_proxy(ip, WeakRef(), { 'get': lambda s, o: True, 'toto': 'test' }) assert not ip_p.obsolete ip_p.unpatch(['get']) assert not ip_p.obsolete ip_p.unpatch(['toto']) assert ip_p.obsolete