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):
Example #4
0
        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: