public function testFunctionNotFound() { $foo = new E\Func('abracadabra'); try { $foo->interpret($this->ctx); $this->assertTrue(false, 'FunctionNotFoundException should be thrown'); } catch (E\FunctionNotFoundException $e) { } }
protected function setUp() { I\Expression\Func::register('twice', function ($a) { return 2 * $a; }); I\Expression\Func::register('PI', function () { return pi(); }); I\Expression\Func::register('sin', function ($a) { return sin($a); }); I\Expression\Func::register('cos', function ($a) { return cos($a); }); }
Func::register('ln', function ($a) { return log($a); }); Func::register('lg', function ($a) { return log($a, 10); }); // aggregates Func::register('sum', function () { return array_sum(func_get_args()); }); Func::register('min', function () { return min(func_get_args()); }); Func::register('max', function () { return max(func_get_args()); }); Func::register('avg', function () { $mul = 1; foreach (func_get_args() as $i => $n) { $mul *= $n; } return pow($mul, 1 / func_num_args()); }); Func::register('const', function ($name) { switch ($name) { case 'pi': return M_PI; case 'exp': return M_E; } });