public function testPropertyType($name, $type)
{
$sp = _elgg_services();
$non_shared_names = ['queryCounter'];
$skipped_names = [];
if (isset($skipped_names[$name])) {
$this->markTestSkipped($skipped_names[$name]);
return;
}
$obj1 = $sp->{$name};
$obj2 = $sp->{$name};
// support $type like "Foo\Bar|Baz|null"
$passed = false;
foreach (explode('|', $type) as $test_type) {
if ($test_type === 'null') {
if ($obj1 === null) {
$passed = true;
}
} elseif ($obj1 instanceof $test_type) {
$passed = true;
}
}
$this->assertTrue($passed, "\$obj1 did not match type {$type}");
if (in_array($name, $non_shared_names)) {
$this->assertNotSame($obj1, $obj2);
} else {
$this->assertSame($obj1, $obj2);
}
}