Skip to content

Commit

Permalink
Added tests
Browse files Browse the repository at this point in the history
  • Loading branch information
KorsaR-ZN committed Oct 2, 2015
1 parent 4d5ab21 commit 8a11f6a
Show file tree
Hide file tree
Showing 2 changed files with 108 additions and 0 deletions.
50 changes: 50 additions & 0 deletions test/assign.zep
Original file line number Diff line number Diff line change
Expand Up @@ -851,4 +851,54 @@ class Assign
let _GET["stestint2"] = 2;
let _GET[v] = "testval";
}

public function testAssignBitwiseX(string! op, int a, int b)
{
var i, j;
int r;
array result = [];

switch op {
case "or":
let a |= b;
break;
case "and":
let a &= b;
break;
case "xor":
let a ^= b;
break;
case "shiftleft":
let a <<= b;
break;
case "shiftright":
let a >>= b;
break;

default:
throw new \InvalidArgumentException("First argument must have: or, and, xor, shiftleft, shiftright");
}

for i in [0, 1] {
for j in [0, 1] {
let r = i;
switch op {
case "or":
let r |= j;
break;
case "and":
let r &= j;
break;
case "xor":
let r ^= j;
break;
}

let result[] = r;
}
}

let a += array_sum(result);
return a;
}
}
58 changes: 58 additions & 0 deletions unit-tests/Extension/AssignTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -118,4 +118,62 @@ public function testGlobalVarAssign()
assert($_GET["stestint2"] == 2);
assert($_GET["stest2"] == "testval");
}

public function testAssignBitwiseX()
{
$a = 900; // 1110000100
$b = 5; // 0000000101

$test = new \Test\Assign();

foreach (array("or", "and", "xor", "shiftleft", "shiftright") as $op) {
$this->assertEquals($test->testAssignBitwiseX($op, $a, $b), $this->resultNativeBitwiseX($op, $a, $b));
}
}

protected function resultNativeBitwiseX($op, $a, $b)
{
$result = array();
$r = 0;

switch ($op) {
case 'or':
$a |= $b;
break;
case 'and':
$a &= $b;
break;
case 'xor':
$a ^= $b;
break;
case 'shiftleft':
$a <<= $b;
break;
case 'shiftright':
$a >>= $b;
break;
}

for ($i = 0; $i < 2; $i++) {
for ($j = 0; $j < 2; $j++) {
$r = $i;
switch ($op) {
case 'or':
$r |= $j;
break;
case 'and':
$r &= $j;
break;
case 'xor':
$r ^= $j;
break;
}

$result[] = $r;
}
}

$a += array_sum($result);
return $a;
}
}

0 comments on commit 8a11f6a

Please sign in to comment.