* @license MIT */ declare(strict_types=1); namespace Test\Unit; use BitBadger\PDODocument\DocumentException; use Exception; use PHPUnit\Framework\Attributes\TestDox; use PHPUnit\Framework\TestCase; /** * Unit tests for the DocumentException class */ #[TestDox('Document Exception (Unit tests)')] class DocumentExceptionTest extends TestCase { public function testConstructorSucceedsWithCodeAndPriorException(): void { $priorEx = new Exception('Uh oh'); $ex = new DocumentException('Test Exception', 17, $priorEx); $this->assertNotNull($ex, 'The exception should not have been null'); $this->assertEquals('Test Exception', $ex->getMessage(), 'Message not filled properly'); $this->assertEquals(17, $ex->getCode(), 'Code not filled properly'); $this->assertSame($priorEx, $ex->getPrevious(), 'Prior exception not filled properly'); } public function testConstructorSucceedsWithoutCodeAndPriorException(): void { $ex = new DocumentException('Oops'); $this->assertNotNull($ex, 'The exception should not have been null'); $this->assertEquals('Oops', $ex->getMessage(), 'Message not filled properly'); $this->assertEquals(0, $ex->getCode(), 'Code not filled properly'); $this->assertNull($ex->getPrevious(), 'Prior exception should have been null'); } public function testToStringSucceedsWithoutCode(): void { $ex = new DocumentException('Test failure'); $this->assertEquals("BitBadger\PDODocument\DocumentException: Test failure\n", "$ex", 'toString not generated correctly'); } public function testToStringSucceedsWithCode(): void { $ex = new DocumentException('Oof', -6); $this->assertEquals("BitBadger\PDODocument\DocumentException: [-6] Oof\n", "$ex", 'toString not generated correctly'); } }