assertEquals($calculator->execute($expression), $phpResult); } /** * Expressions data provider */ public function providerExpressions() { return array( array('0.1 + 0.2'), array('1 + 2'), array('0.1 - 0.2'), array('1 - 2'), array('0.1 * 2'), array('1 * 2'), array('0.1 / 0.2'), array('1 / 2'), array('2 * 2 + 3 * 3'), array('1 + 0.6 - 3 * 2 / 50'), array('(5 + 3) * -1'), array('2+2*2'), array('(2+2)*2'), array('(2+2)*-2'), array('(2+-2)*2'), array('sin(10) * cos(50) / min(10, 20/2)'), array('100500 * 3.5E5'), array('100500 * 3.5E-5') ); } public function testFunction() { $calculator = new MathExecutor(); $calculator->addFunction('round', function ($arg) { return round($arg); }, 1); /** @var float $phpResult */ eval('$phpResult = round(100/30);'); $this->assertEquals($calculator->execute('round(100/30)'), $phpResult); } }