$p = new GitPath("test/file"); $t->ok(!$p->isSingle(), 'a file in a directory is not single'); $p = new GitPath("/test"); $t->ok($p->isSingle(), 'one file is a single reference'); $t->comment('isRoot testing'); $p = new GitPath("/"); $t->ok($p->isRoot(), 'root is a root'); $p = new GitPath(""); $t->ok($p->isRoot(), 'empty is a root'); $p = new GitPath("test"); $t->ok(!$p->isRoot(), 'a file is not a root'); $t->comment('Testing differences for Tree and Blob paths'); $p = new GitPath("abc/def/ghi"); $t->ok($p->refBlob(), 'no trailing slash references a blob object'); $p = new GitPath("abc/def/ghi/"); $t->ok($p->refTree(), 'a trailing slash references a tree object'); $t->comment('Testing array access'); $p = new GitPath("abc/def/ghi"); $t->is($p[0], 'abc', 'allows array access'); $t->is($p[-1], 'ghi', 'allows negative index array access'); $t->is(count($p), 3, 'count returns number of elements'); $t->comment('Testing iterator'); $p = new GitPath("abc/def"); foreach ($p as $index => $part) { switch ($index) { case 0: $t->is($part, 'abc', 'first iteration'); break; case 1: $t->is($part, 'def', 'second iteration'); break;