public function testFolder() { $storage = array(); $this->batch->expects($this->exactly(10))->method('getFolder')->will($this->returnCallback(function ($type, $name) use(&$storage) { return isset($storage[$type . $name]) ? $storage[$type . $name] : null; })); $this->batch->expects($this->exactly(5))->method('addFolder')->will($this->returnCallback(function ($obj) use(&$storage) { /** @var EmailFolder $obj */ $storage[$obj->getType() . $obj->getFullName()] = $obj; })); $inbox = $this->builder->folderInbox('test', 'test'); $sent = $this->builder->folderSent('test', 'test'); $drafts = $this->builder->folderDrafts('test', 'test'); $trash = $this->builder->folderTrash('test', 'test'); $other = $this->builder->folderOther('test', 'test'); $this->assertEquals('test', $inbox->getName()); $this->assertEquals('test', $inbox->getFullName()); $this->assertEquals('test', $sent->getName()); $this->assertEquals('test', $sent->getFullName()); $this->assertEquals('test', $drafts->getName()); $this->assertEquals('test', $drafts->getFullName()); $this->assertEquals('test', $trash->getName()); $this->assertEquals('test', $trash->getFullName()); $this->assertEquals('test', $other->getName()); $this->assertEquals('test', $other->getFullName()); $this->assertTrue($inbox === $this->builder->folderInbox('test', 'test')); $this->assertTrue($sent === $this->builder->folderSent('test', 'test')); $this->assertTrue($drafts === $this->builder->folderDrafts('test', 'test')); $this->assertTrue($trash === $this->builder->folderTrash('test', 'test')); $this->assertTrue($other === $this->builder->folderOther('test', 'test')); }