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.