aboutsummaryrefslogtreecommitdiff
path: root/NXP/Tests/MathTest.php
diff options
context:
space:
mode:
authorNeonXP <neonxp@NeonXP-VAIO.(none)>2013-03-14 04:27:37 +0400
committerNeonXP <neonxp@NeonXP-VAIO.(none)>2013-03-14 04:27:37 +0400
commita8bdd54346f8b932ede78f7a9a0764ee336fd281 (patch)
tree86e9ee34dca9c9758e50b3b96d1a9500799c498b /NXP/Tests/MathTest.php
Initial commit
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