$case->value, ApplyStatus::cases()); sort($values); $this->assertSame(['completed', 'failed', 'partial', 'pending'], $values); } public function test_is_terminal_truth_table(): void { $this->assertFalse(ApplyStatus::PENDING->isTerminal()); $this->assertTrue(ApplyStatus::COMPLETED->isTerminal()); $this->assertTrue(ApplyStatus::PARTIAL->isTerminal()); $this->assertTrue(ApplyStatus::FAILED->isTerminal()); } public function test_is_open_truth_table(): void { $this->assertTrue(ApplyStatus::PENDING->isOpen()); $this->assertFalse(ApplyStatus::COMPLETED->isOpen()); $this->assertTrue(ApplyStatus::PARTIAL->isOpen()); $this->assertTrue(ApplyStatus::FAILED->isOpen()); } public function test_label_returns_non_empty_dutch_string_for_each_case(): void { foreach (ApplyStatus::cases() as $case) { $this->assertNotSame('', $case->label()); } } }