public function testHandle() {
$handler = ErrorHandler::register(0);
$this
->assertFalse($handler
->handle(0, 'foo', 'foo.php', 12, 'foo'));
restore_error_handler();
$handler = ErrorHandler::register(3);
$this
->assertFalse($handler
->handle(4, 'foo', 'foo.php', 12, 'foo'));
restore_error_handler();
$handler = ErrorHandler::register(3);
try {
$handler
->handle(111, 'foo', 'foo.php', 12, 'foo');
} catch (\ErrorException $e) {
$this
->assertSame('111: foo in foo.php line 12', $e
->getMessage());
$this
->assertSame(111, $e
->getSeverity());
$this
->assertSame('foo.php', $e
->getFile());
$this
->assertSame(12, $e
->getLine());
}
restore_error_handler();
$handler = ErrorHandler::register(E_USER_DEPRECATED);
$this
->assertTrue($handler
->handle(E_USER_DEPRECATED, 'foo', 'foo.php', 12, 'foo'));
restore_error_handler();
$handler = ErrorHandler::register(E_DEPRECATED);
$this
->assertTrue($handler
->handle(E_DEPRECATED, 'foo', 'foo.php', 12, 'foo'));
restore_error_handler();
$logger = $this
->getMock('Psr\\Log\\LoggerInterface');
$that = $this;
$warnArgCheck = function ($message, $context) use ($that) {
$that
->assertEquals('foo', $message);
$that
->assertArrayHasKey('type', $context);
$that
->assertEquals($context['type'], ErrorHandler::TYPE_DEPRECATION);
$that
->assertArrayHasKey('stack', $context);
$that
->assertInternalType('array', $context['stack']);
};
$logger
->expects($this
->once())
->method('warning')
->will($this
->returnCallback($warnArgCheck));
$handler = ErrorHandler::register(E_USER_DEPRECATED);
$handler
->setLogger($logger);
$handler
->handle(E_USER_DEPRECATED, 'foo', 'foo.php', 12, 'foo');
restore_error_handler();
}