aboutsummaryrefslogtreecommitdiff
path: root/NXP/Tests/MathTest.php
diff options
context:
space:
mode:
Diffstat (limited to 'NXP/Tests/MathTest.php')
-rw-r--r--NXP/Tests/MathTest.php60
1 files changed, 60 insertions, 0 deletions
diff --git a/NXP/Tests/MathTest.php b/NXP/Tests/MathTest.php
new file mode 100644
index 0000000..6ab67ee
--- /dev/null
+++ b/NXP/Tests/MathTest.php
@@ -0,0 +1,60 @@
+<?php
+/**
+ * Author: Alexander "NeonXP" Kiryukhin
+ * Date: 14.03.13
+ * Time: 3:41
+ */
+namespace NXP\Tests;
+
+use \NXP\MathExecutor;
+
+class MathTest extends \PHPUnit_Framework_TestCase {
+ public function setup()
+ {
+ require '../MathExecutor.php';
+ }
+ public function testCalculating()
+ {
+ $calculator = new MathExecutor();
+ for ($i = 1; $i <= 10; $i++) {
+ $expression = $this->generateExpression();
+ print "Test #$i. Expression: '$expression'\t";
+
+ eval('$result1 = ' . $expression . ';');
+ print "PHP result: $result1 \t";
+ $result2 = $calculator->execute($expression);
+ print "NXP Math Executor result: $result2\n";
+ $this->assertEquals($result1, $result2);
+ }
+ }
+
+ private function generateExpression()
+ {
+ $operators = [ '+', '-', '*', '/' ];
+ $number = true;
+ $expression = '';
+ $brackets = 0;
+ for ($i = 1; $i < rand(1,10)*2; $i++) {
+ if ($number) {
+ $expression .= rand(1,100)*0.5;
+ } else {
+ $expression .= $operators[rand(0,3)];
+ }
+ $number = !$number;
+ $rand = rand(1,5);
+ if (($rand == 1) && ($number)) {
+ $expression .= '(';
+ $brackets++;
+ } elseif (($rand == 2) && (!$number) && ($brackets > 0)) {
+ $expression .= ')';
+ $brackets--;
+ }
+ }
+ if ($number) {
+ $expression .= rand(1,100)*0.5;
+ }
+ $expression .= str_repeat(')', $brackets);
+
+ return $expression;
+ }
+} \ No newline at end of file