public function testUnaryOperators()
{
$values = [INativeType::TYPE_INT => function () {
+4;
}, INativeType::TYPE_BOOL => function () {
!true;
}, INativeType::TYPE_DOUBLE => function () {
-343.23;
}, INativeType::TYPE_STRING => function () {
~'abce';
}];
foreach ($values as $expectedType => $expression) {
$this->doAnalysisTest($expression, function (ITypeAnalysis $analysis, O\UnaryOperationExpression $expression) use($expectedType) {
$this->assertTypeMatchesValue($analysis, $expression->getOperand(), $analysis->getUnaryOperation($expression)->getSourceType());
$this->assertEqualsNativeType($expectedType, $analysis->getUnaryOperation($expression)->getReturnType());
});
}
}