public function testBinaryOperations()
{
$valueSet = [[-500], [-5], [-2], [-1], [1], [2], [5], [500]];
$this->assertRecompilesCorrectly(function ($i) {
return $i + 1;
}, $valueSet);
$this->assertRecompilesCorrectly(function ($i) {
return $i - 1;
}, $valueSet);
$this->assertRecompilesCorrectly(function ($i) {
return $i * 1;
}, $valueSet);
$this->assertRecompilesCorrectly(function ($i) {
return $i / 1;
}, $valueSet);
$this->assertRecompilesCorrectly(function ($i) {
return $i % 1;
}, $valueSet);
$this->assertRecompilesCorrectly(function ($i) {
return $i & 1;
}, $valueSet);
$this->assertRecompilesCorrectly(function ($i) {
return $i | 1;
}, $valueSet);
$this->assertRecompilesCorrectly(function ($i) {
return $i << 1;
}, $valueSet);
$this->assertRecompilesCorrectly(function ($i) {
return $i >> 1;
}, $valueSet);
$this->assertRecompilesCorrectly(function ($i) {
return $i && 1;
}, $valueSet);
$this->assertRecompilesCorrectly(function ($i) {
return $i || 1;
}, $valueSet);
$this->assertRecompilesCorrectly(function ($i) {
return $i === 1;
}, $valueSet);
$this->assertRecompilesCorrectly(function ($i) {
return $i !== 1;
}, $valueSet);
$this->assertRecompilesCorrectly(function ($i) {
return $i == 1;
}, $valueSet);
$this->assertRecompilesCorrectly(function ($i) {
return $i != 1;
}, $valueSet);
$this->assertRecompilesCorrectly(function ($i) {
return $i > 1;
}, $valueSet);
$this->assertRecompilesCorrectly(function ($i) {
return $i >= 1;
}, $valueSet);
$this->assertRecompilesCorrectly(function ($i) {
return $i < 1;
}, $valueSet);
$this->assertRecompilesCorrectly(function ($i) {
return $i <= 1;
}, $valueSet);
$this->assertRecompilesCorrectly(function ($i) {
return $i . 1;
}, $valueSet);
}