You are here

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

Test various built-in transcendental and extended functions.

File

tests/math_expression.test, line 183

Class

CtoolsMathExpressionTestCase
Tests the MathExpression library of ctools.

Code

public function testBuildInFunctions() {
  $math_expr = new ctools_math_expr();
  foreach (range(1, 4) as $n) {
    $random_double = $this
      ->rand01();
    $random_int = mt_rand(-65535, 65535);
    $this
      ->assertFloat(sin($random_double), $math_expr
      ->evaluate("sin({$random_double})"), "sin({$random_double})");
    $this
      ->assertFloat(cos($random_double), $math_expr
      ->evaluate("cos({$random_double})"), "cos({$random_double})");
    $this
      ->assertFloat(tan($random_double), $math_expr
      ->evaluate("tan({$random_double})"), "tan({$random_double})");
    $this
      ->assertFloat(exp($random_double), $math_expr
      ->evaluate("exp({$random_double})"), "exp({$random_double})");
    $this
      ->assertFloat(sqrt($random_double), $math_expr
      ->evaluate("sqrt({$random_double})"), "sqrt({$random_double})");
    $this
      ->assertFloat(log($random_double), $math_expr
      ->evaluate("ln({$random_double})"), "ln({$random_double})");
    $this
      ->assertFloat(round($random_double), $math_expr
      ->evaluate("round({$random_double})"), "round({$random_double})");
    $random_real = $random_double + $random_int;
    $this
      ->assertFloat(abs($random_real), $math_expr
      ->evaluate('abs(' . $random_real . ')'), "abs({$random_real})");
    $this
      ->assertEqual(round($random_real), $math_expr
      ->evaluate('round(' . $random_real . ')'), "round({$random_real})");
    $this
      ->assertEqual(ceil($random_real), $math_expr
      ->evaluate('ceil(' . $random_real . ')'), "ceil({$random_real})");
    $this
      ->assertEqual(floor($random_real), $math_expr
      ->evaluate('floor(' . $random_real . ')'), "floor({$random_real})");
  }
  $this
    ->assertFloat(time(), $math_expr
    ->evaluate('time()'), "time()");
  $random_double_a = $this
    ->rand01();
  $random_double_b = $this
    ->rand01();
  $this
    ->assertFloat(max($random_double_a, $random_double_b), $math_expr
    ->evaluate("max({$random_double_a}, {$random_double_b})"), "max({$random_double_a}, {$random_double_b})");
  $this
    ->assertFloat(min($random_double_a, $random_double_b), $math_expr
    ->evaluate("min({$random_double_a}, {$random_double_b})"), "min({$random_double_a}, {$random_double_b})");
}