public function testGetRealPath()
{
$this->given($adapter = new atoum\test\adapter())->and($adapter->realpath = function ($path) {
switch ($path) {
case '/an/invalid/path':
case '/an/invalid':
case '/an':
case '/':
return false;
case '/a/b/c/d/e':
case '/a/b/c/d':
return false;
case '/a/b/c':
return '/x/y/z';
default:
return $path;
}
})->then->if($path = new testedClass('/a', '/', $adapter))->then->object($path->getRealPath())->isNotIdenticalTo($path)->toString->isEqualTo('/a')->if($path = new testedClass('/a/b/c', '/', $adapter))->then->object($path->getRealPath())->isNotIdenticalTo($path)->toString->isEqualTo('/x/y/z')->if($path = new testedClass('/a/b/c/d/e', '/', $adapter))->then->object($path->getRealPath())->isNotIdenticalTo($path)->toString->isEqualTo('/x/y/z/d/e')->if($path = new testedClass('/an/invalid/path', '/', $adapter))->then->exception(function () use($path) {
$path->getRealPath();
})->isInstanceOf('mageekguy\\atoum\\fs\\path\\exception')->hasMessage('Unable to get real path for \'' . $path . '\'');
}