public function testGlobalVariablesFunctional($scope, $action, $var, $expectedResult)
{
if (empty(self::$vars[$scope]) || empty(self::$args[$scope])) {
$this->markTestSkipped(sprintf('No object for scope: %s', $scope));
}
switch ($action) {
case 'set':
$result = call_user_func_array([self::$vars[$scope], 'setValues'], array_merge([[$var]], self::$args[$scope], [false]));
$this->assertEquals($expectedResult, $result);
break;
case 'get':
$values = call_user_func_array([self::$vars[$scope], 'getValues'], self::$args[$scope]);
$flag = false;
foreach ($values as $value) {
if ($value['name'] == $var['name']) {
$flag = true;
$this->assertEquals($var, $value);
break;
}
}
$this->assertEquals($expectedResult, $flag);
break;
case 'list':
$values = call_user_func_array([self::$vars[$scope], 'listVariables'], self::$args[$scope]);
$flag = false;
foreach ($values as $value) {
if ($value['name'] == $var['name']) {
if ($value['name'] == $var['name']) {
$flag = true;
$this->assertEquals($var, $value);
break;
}
}
}
$this->assertEquals($expectedResult, $flag);
break;
case 'getuidefaults':
$values = call_user_func_array([self::$vars[$scope], 'getUiDefaults'], self::$args[$scope]);
$this->assertTrue(isset($values[$var['name']]));
$this->assertTrue(isset($values[$var['name']]) && $values[$var['name']] === $var['value']);
break;
}
}