python-plumb: 31af281ffcbe9334a2000fd9f94313b7db877fa2

     1: from random import randint
     2: 
     3: random = lambda _: randint(0, 1000)
     4: 
     5: test = lambda t: t(*map(random, range(t.func_code.co_argcount)))
     6: 
     7: def failures(ts):
     8:     results = {n: test(t) for n, t in ts.iteritems()}
     9:     return {n: (l, r) for n, (l, r) in results.iteritems() if l != r}
    10: 
    11: def show(ts):
    12:     if len(ts) > 0:
    13:         print ts
    14:         return
    15:     print "Passed"
    16: 
    17: from core import *
    18: 
    19: core_fails = show(failures({
    20:     'currying curries': lambda a, b: (
    21:         curry(lambda x, y: x + y)(a)(b),
    22:         a + b),
    23: 
    24:     'curried functions still callable as normal': lambda a, b: (
    25:         curry(lambda x, y: x + y)(a, b),
    26:         a + b),
    27: 
    28:     'currying uncurries': lambda a, b, c: (
    29:         curry(lambda x, y: lambda z: x + y + z)(a, b, c),
    30:         a + b + c),
    31: 
    32:     'can curry types': lambda a: (
    33:         curry(str)(a),
    34:         str(a)),
    35: 
    36:     'curry passes on keywords': lambda a, b: (
    37:         curry(lambda x, **kwargs: map(str, kwargs.iteritems()),
    38:               foo=a)(b),
    39:         [str(('foo', a))]),
    40: 
    41:     'curry ignores defaults': lambda a, b, c: (
    42:         curry(lambda x, y=a: x + y, b, c),
    43:         b + c)
    44: }))
    45: 
    46: from plumb import *
    47: 
    48: plumb_fails = show(failures({
    49:     'plumb thunks': lambda a, b: (
    50:         plumb([str(a)])(b),
    51:         str(a)),
    52: 
    53:     'plumb id': lambda a: (
    54:         plumb([])(a),
    55:         a),
    56: 
    57:     'plumb id 2': lambda a: (
    58:         plumb([0])(a),
    59:         a),
    60: 
    61:     'plumb de Bruijn': lambda a: (
    62:         plumb([[1 , 0]])(str, a),
    63:         str(a)),
    64: 
    65:     'plumb curries': lambda a, b: (
    66:         plumb([[[2 , 1 , 0]]])(lambda x, y: x + y, a, b),
    67:         a + b),
    68: 
    69:     'plumb uncurries': lambda a: (
    70:         plumb([str , 0], a),
    71:         str(a))
    72: }))

Generated by git2html.