/
easycheck.php
30 lines (24 loc) · 926 Bytes
/
easycheck.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
<?php
set_error_handler(function() {
var_dump(array('args' => func_get_args(),
'trace' => debug_backtrace()));
die();
});
defun('sample', function($f, $n) {
return array_map($f, up_to($n));
});
defuns(call_user_func(function() {
$tests = array();
$run = function($t) {
return call_user_func_array($t[0], sample('random', $t[1]));
};
return array('deftest' => function($name, $test) use (&$tests) {
$tests[$name] = array($test, arity($test));
},
'runtests' => function($t) use (&$tests, $run) {
return is_array($t)
? $run($t)
: array_filter(array_map($run, $tests));
},
'deftests' => key_map('deftest'));
}));