MathExecutor/tests/MathTest.php
NeonXP 9cdc34290a Mass refactoring
Some changes:
+ Added support of functions with multiple arguments
+ Added some default function (min, max, avg). just example of multiple arguments :)
- Removed variables support (I think they pointless)
~ All tokens now in individual classes
~ Parsing based on regular expressions
~ Fix negative numbers
~ Fix grouping with brackets
2013-09-06 05:42:09 +04:00

62 lines
1.3 KiB
PHP

<?php
/**
* This file is part of the MathExecutor package
*
* (c) Alexander Kiryukhin
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code
*/
namespace NXP\Tests;
use \NXP\MathExecutor;
class MathTest extends \PHPUnit_Framework_TestCase
{
/**
* @dataProvider providerExpressions
*/
public function testCalculating($expression)
{
$calculator = new MathExecutor();
/** @var float $phpResult */
eval('$phpResult = ' . $expression . ';');
$this->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)')
);
}
}