fromStatus(new MailboxStatusResult('INBOX', ['UNSEEN' => 2])); $this->assertSame(12, $updated->messages()); $this->assertSame(2, $updated->unread()); $this->assertSame(123, $updated->uidValidity()); $this->assertSame(4, $mailbox->unread()); } public function testExplicitZeroCountsReplaceKnownCounts(): void { $mailbox = new Mailbox('INBOX', '/', [], 12, 4, 123); $updated = $mailbox->fromStatus(new MailboxStatusResult('INBOX', [ 'MESSAGES' => 0, 'UNSEEN' => 0, 'UIDVALIDITY' => 456, ])); $this->assertSame(0, $updated->messages()); $this->assertSame(0, $updated->unread()); $this->assertSame(456, $updated->uidValidity()); } public function testEmptyStatusPreservesMailboxIncludingUnknownUidValidity(): void { foreach ([null, 123] as $uidValidity) { $mailbox = new Mailbox('INBOX', '/', ['\\HasNoChildren'], 12, 4, $uidValidity, 2, ['\\Seen'], false); $updated = $mailbox->fromStatus(new MailboxStatusResult('INBOX', [])); $this->assertEquals($mailbox, $updated); } } }