public function testUnaryOperators()
{
$asserts = [[function () {
+1;
}, INativeType::TYPE_INT], [function () {
-1;
}, INativeType::TYPE_INT], [function () {
~1;
}, INativeType::TYPE_INT], [function () {
++$i;
}, INativeType::TYPE_INT, ['i' => $this->typeSystem->getNativeType(INativeType::TYPE_INT)]], [function () {
--$i;
}, INativeType::TYPE_INT, ['i' => $this->typeSystem->getNativeType(INativeType::TYPE_INT)]], [function () {
$i++;
}, INativeType::TYPE_INT, ['i' => $this->typeSystem->getNativeType(INativeType::TYPE_INT)]], [function () {
$i--;
}, INativeType::TYPE_INT, ['i' => $this->typeSystem->getNativeType(INativeType::TYPE_INT)]], [function () {
+'';
}, INativeType::TYPE_INT], [function () {
-'';
}, INativeType::TYPE_INT], [function () {
~'';
}, INativeType::TYPE_STRING], [function () {
++$i;
}, INativeType::TYPE_MIXED, ['i' => $this->typeSystem->getNativeType(INativeType::TYPE_STRING)]], [function () {
--$i;
}, INativeType::TYPE_MIXED, ['i' => $this->typeSystem->getNativeType(INativeType::TYPE_STRING)]], [function () {
$i++;
}, INativeType::TYPE_STRING, ['i' => $this->typeSystem->getNativeType(INativeType::TYPE_STRING)]], [function () {
$i--;
}, INativeType::TYPE_STRING, ['i' => $this->typeSystem->getNativeType(INativeType::TYPE_STRING)]]];
foreach ($asserts as $assert) {
$this->assertReturnsNativeType($assert[0], $assert[1], isset($assert[2]) ? $assert[2] : []);
}
}