test,verdict = "two advices on a method, new-style class",FAIL try: class c(object): def sq(self,x=1): return x*x def g_adv1(self,x=3): retval=yield aspects.proceed yield aspects.return_stop(retval+1) def g_adv2(self,x=5): yield aspects.proceed(self,x=x) rv1=aspects.with_wrap(g_adv1,c.sq) rv2=aspects.with_wrap(g_adv2,c.sq) o=c() assert o.sq()==26, "o.sq()!=26" assert aspects.wrap_count(c.sq) == 2, "wrap_count fails!" verdict=PASS finally: print verdict,test test,verdict = "two advices on a function",FAIL try: def sq(*args): return args def g_adv1(*args): yield aspects.proceed(*args+(1,)) def g_adv2(*args): rv = yield aspects.proceed(*args+(2,)) yield aspects.return_stop("-".join(str(s) for s in rv)) rv1=aspects.with_wrap(g_adv1,sq) rv2=aspects.with_wrap(g_adv2,sq)
def __foo0(self,num): return num def foo1(self,num): return self.__foo0(num)+1 def foo2(self,num): return self.__foo0(num)+2 def bar1(self,num): return self.__foo0(num)+4 def adv1(self,*args): return self.__proceed(args[0]+100) def adv2(self,*args,**keyw): return self.__proceed(keyw['num']+400) o=C() test,verdict="using wrap_count when no wraps",FAIL try: if aspects.wrap_count(C.foo1)==0: verdict=PASS finally: print verdict,test test,verdict="wrap_around a public method, keyword argument",FAIL try: n=aspects.wrap_around(C.foo1,adv2) if o.foo1(num=0)==401 and n==0: verdict=PASS finally: print verdict,test test,verdict="using wrap_count when one wrap",FAIL try: if aspects.wrap_count(C.foo1)==1: verdict=PASS else: print "wrap_count returned",aspects.wrap_count(C.foo1) finally: print verdict,test
class c(object): def sq(self, x=1): return x * x def g_adv1(self, x=3): retval = yield aspects.proceed yield aspects.return_stop(retval + 1) def g_adv2(self, x=5): yield aspects.proceed(self, x=x) rv1 = aspects.with_wrap(g_adv1, c.sq) rv2 = aspects.with_wrap(g_adv2, c.sq) o = c() assert o.sq() == 26, "o.sq()!=26" assert aspects.wrap_count(c.sq) == 2, "wrap_count fails!" verdict = PASS finally: print verdict, test test, verdict = "two advices on a function", FAIL try: def sq(*args): return args def g_adv1(*args): yield aspects.proceed(*args + (1, )) def g_adv2(*args):
return self.__foo0(num) + 4 def adv1(self, *args): return self.__proceed(args[0] + 100) def adv2(self, *args, **keyw): return self.__proceed(keyw['num'] + 400) o = C() test, verdict = "using wrap_count when no wraps", FAIL try: if aspects.wrap_count(C.foo1) == 0: verdict = PASS finally: print verdict, test test, verdict = "wrap_around a public method, keyword argument", FAIL try: n = aspects.wrap_around(C.foo1, adv2) if o.foo1(num=0) == 401 and n == 0: verdict = PASS finally: print verdict, test test, verdict = "using wrap_count when one wrap", FAIL try: if aspects.wrap_count(C.foo1) == 1: verdict = PASS else: print "wrap_count returned", aspects.wrap_count(C.foo1) finally: