You are here

public function CtoolsMathExpressionTestCase::testCustomFunctions in Chaos Tool Suite (ctools) 7

Test custom function handling.

File

tests/math_expression.test, line 262

Class

CtoolsMathExpressionTestCase
Tests the MathExpression library of ctools.

Code

public function testCustomFunctions() {
  $math_expr = new ctools_math_expr();
  $number_a = mt_rand(5, 10);
  $number_b = mt_rand(5, 10);

  // Create a one-argument function.
  $math_expr
    ->evaluate("f(x) = 2 * x");
  $this
    ->assertEqual($number_a * 2, $math_expr
    ->evaluate("f({$number_a})"));
  $this
    ->assertEqual($number_b * 2, $math_expr
    ->evaluate("f({$number_b})"));

  // Create a two-argument function.
  $math_expr
    ->evaluate("g(x, y) = 2 * x + y");
  $this
    ->assertEqual($number_a * 2 + $number_b, $math_expr
    ->evaluate("g({$number_a}, {$number_b})"), "g({$number_a}, {$number_b})");

  // Use a custom function in another function.
  $this
    ->assertEqual(($number_a * 2 + $number_b) * 2, $math_expr
    ->evaluate("f(g({$number_a}, {$number_b}))"), "f(g({$number_a}, {$number_b}))");
}