public function testCasts()
{
$values = [INativeType::TYPE_STRING => 'abc', INativeType::TYPE_INT => -34, INativeType::TYPE_BOOL => true, INativeType::TYPE_DOUBLE => -4.2454, INativeType::TYPE_NULL => null, INativeType::TYPE_ARRAY => [222, '']];
foreach ($values as $value) {
$variableType = ['var' => $this->typeSystem->getTypeFromValue($value)];
if (!is_array($value)) {
$this->assertReturnsNativeType(function () {
(string) $var;
}, INativeType::TYPE_STRING, $variableType);
}
$this->assertReturnsNativeType(function () {
(int) $var;
}, INativeType::TYPE_INT, $variableType);
$this->assertReturnsNativeType(function () {
(bool) $var;
}, INativeType::TYPE_BOOL, $variableType);
$this->assertReturnsNativeType(function () {
(double) $var;
}, INativeType::TYPE_DOUBLE, $variableType);
$this->assertReturnsNativeType(function () {
(array) $var;
}, INativeType::TYPE_ARRAY, $variableType);
$this->assertReturnsObjectType(function () {
(object) $var;
}, 'stdClass', $variableType);
}
}