Esempio n. 1
0
def test1():
    class B:
        def __init__(self, name):
            self.name = name

        def __str__(self):
            return self.name

    classify = fun.Function(object, name="classify")

    @classify.match(fun.catch(lambda a: a % 2 == 0))
    def classify_even(a):
        return "even"

    @classify.match(fun.catch(lambda a: a % 3 == 0))
    def classify_div3(a, **kwargs):
        return "divisible by 3"

    @classify.match(fun.val == 0, priority=1)
    def classify_zero(a):
        return "zero"

    @classify.match(lambda a: a > 5, priority=1)
    def classify_big(a):
        return "big"

    @classify.match(fun.any)
    def classify_unclassified(a):
        return "unclassified"

    @classify.match(fun.matchclass(B), priority=2)
    def classify_string(a):
        return "B"

    @classify.match(fun.matchattr(name="xxx"), priority=3)
    def classify_xxx(a):
        return "B(xxx)"

    assert classify(0) == "zero"
    assert classify(1) == "unclassified"
    assert classify(2) == "even"
    assert classify(3) == "divisible by 3"
    assert classify(4) == "even"
    assert classify(5) == "unclassified"
    assert classify(6) == "big"
    assert classify(7) == "big"
    assert classify(8) == "big"
    assert classify(9) == "big"
    assert classify(B("xx")) == "B"
    assert classify(B("xxx")) == "B(xxx)"
Esempio n. 2
0
def test1 ():
    class B:
        def __init__ (self, name):
            self.name = name
        def __str__ (self):
            return self.name

    classify = fun.Function (object, name="classify")

    @classify.match (fun.catch (lambda a: a % 2 == 0))
    def classify_even (a):
        return "even"
    @classify.match (fun.catch (lambda a: a % 3 == 0))
    def classify_div3 (a, **kwargs):
        return "divisible by 3"


    @classify.match (fun.val == 0, priority=1)
    def classify_zero (a):
        return "zero"

    @classify.match (lambda a: a > 5, priority=1)
    def classify_big (a):
        return "big"

    @classify.match (fun.any)
    def classify_unclassified (a):
        return "unclassified"

    @classify.match (fun.matchclass (B), priority=2)
    def classify_string (a):
        return "B"

    @classify.match (fun.matchattr (name = "xxx"), priority=3)
    def classify_xxx (a):
        return "B(xxx)"

    assert classify (0) == "zero"
    assert classify (1) == "unclassified"
    assert classify (2) == "even"
    assert classify (3) == "divisible by 3"
    assert classify (4) == "even"
    assert classify (5) == "unclassified"
    assert classify (6) == "big"
    assert classify (7) == "big"
    assert classify (8) == "big"
    assert classify (9) == "big"
    assert classify (B ("xx")) == "B"
    assert classify (B ("xxx")) == "B(xxx)"
Esempio n. 3
0
def test3 ():
    class A:
        def __init__ (self, a):
            self.m_a = a
        def a (self):
            return self.m_a

    class B:
        pass

    x = fun.Function (object, object)

    @x.match (fun.any, fun.any)
    def do (i, j):
        return "%s, %s" % (i, j)

    @x.match (fun.matchclass (B), fun.any)
    def do (i, j):
        return "some B, %s" % j

    @x.match (fun.any, fun.val == 5)
    def do (i, j):
        return "%s, value 5" % i

    @x.match (fun.bind (X = fun.catch (lambda arg: arg.a ())), fun.any)
    def do (i, j):
        return "a=%s, %s" % (X, j)

    assert (x (1, 2) == "1, 2")
    assert (x (A (1), 2) == "a=1, 2")
    assert (x (B (), 2) == "some B, 2")
    assert (x (1, 5) == "1, value 5")
Esempio n. 4
0
def test3():
    class A:
        def __init__(self, a):
            self.m_a = a

        def a(self):
            return self.m_a

    class B:
        pass

    x = fun.Function(object, object)

    @x.match(fun.any, fun.any)
    def do(i, j):
        return "%s, %s" % (i, j)

    @x.match(fun.matchclass(B), fun.any)
    def do(i, j):
        return "some B, %s" % j

    @x.match(fun.any, fun.val == 5)
    def do(i, j):
        return "%s, value 5" % i

    @x.match(fun.bind(X=fun.catch(lambda arg: arg.a())), fun.any)
    def do(i, j):
        return "a=%s, %s" % (X, j)

    assert (x(1, 2) == "1, 2")
    assert (x(A(1), 2) == "a=1, 2")
    assert (x(B(), 2) == "some B, 2")
    assert (x(1, 5) == "1, value 5")