From 47df3edbb6c437a049deee356db84f58edcba681 Mon Sep 17 00:00:00 2001 From: Bruce Wells Date: Tue, 15 Jan 2019 20:04:16 -0500 Subject: Fixed comma operator Added unit tests for expressions in function arguments. Changed array_push to $var[] = native code. --- tests/MathTest.php | 48 ++++++++++++++++++++++++++++++++---------------- 1 file changed, 32 insertions(+), 16 deletions(-) (limited to 'tests/MathTest.php') diff --git a/tests/MathTest.php b/tests/MathTest.php index 81f0230..5bb2ec0 100644 --- a/tests/MathTest.php +++ b/tests/MathTest.php @@ -135,17 +135,17 @@ class MathTest extends \PHPUnit_Framework_TestCase } public function testFunctionParameterOrder() - { - $calculator = new MathExecutor(); - - $calculator->addFunction('concat', function ($arg1, $arg2) - { - return $arg1.$arg2; - } - ); - $this->assertEquals('testing', $calculator->execute('concat("test","ing")')); - $this->assertEquals('testing', $calculator->execute("concat('test','ing')")); - } + { + $calculator = new MathExecutor(); + + $calculator->addFunction('concat', function ($arg1, $arg2) + { + return $arg1.$arg2; + } + ); + $this->assertEquals('testing', $calculator->execute('concat("test","ing")')); + $this->assertEquals('testing', $calculator->execute("concat('test','ing')")); + } public function testFunction() { @@ -154,17 +154,33 @@ class MathTest extends \PHPUnit_Framework_TestCase $this->assertEquals(round(100/30), $calculator->execute('round(100/30)')); } + public function testEvaluateFunctionParameters() + { + $calculator = new MathExecutor(); + $calculator->addFunction('round', function ($value, $decimals) + { + return round($value, $decimals); + } + ); + $expression = 'round(100 * 1.111111, 2)'; + eval('$phpResult = ' . $expression . ';'); + $this->assertEquals($phpResult, $calculator->execute($expression)); + $expression = 'round((100*0.04)+(((100*1.02)+0.5)*1.28),2)'; + eval('$phpResult = ' . $expression . ';'); + $this->assertEquals($phpResult, $calculator->execute($expression)); + } + public function testQuotes() { $calculator = new MathExecutor(); $testString = "some, long. arg; with: different-separators!"; $calculator->addFunction('test', function ($arg) use ($testString) - { - $this->assertEquals($testString, $arg); + { + $this->assertEquals($testString, $arg); return 0; - } - ); + } + ); $calculator->execute('test("' . $testString . '")'); // single quotes $calculator->execute("test('" . $testString . "')"); // double quotes } -} \ No newline at end of file +} -- cgit v1.2.3