| 
<?phpnamespace Generics\Tests;
 
 use PHPUnit\Framework\TestCase;
 use Generics\NoticeException;
 use Generics\Util\ExceptionErrorHandler;
 use Generics\WarningException;
 use Generics\UserErrorException;
 use Generics\UserWarningException;
 use Generics\UserNoticeException;
 use Generics\RecoverableErrorException;
 use Generics\DeprecatedException;
 use Generics\UserDeprecatedException;
 
 class A
 {
 }
 
 class B
 {
 function B()
 {
 }
 }
 
 class C
 {
 function bar()
 {
 }
 }
 
 class ExceptionErrorHandlerTest extends TestCase
 {
 protected function setUp()
 {
 new ExceptionErrorHandler();
 }
 
 public function testNoticeException()
 {
 $this->expectException(NoticeException::class);
 
 echo $a['b'];
 }
 
 public function testWarningException()
 {
 $this->expectException(WarningException::class);
 
 trigger_error('A warning', E_WARNING);
 }
 
 public function testUserError()
 {
 $this->expectException(UserErrorException::class);
 
 trigger_error('A user error', E_USER_ERROR);
 }
 
 public function testUserWarning()
 {
 $this->expectException(UserWarningException::class);
 
 trigger_error('A user warning', E_USER_WARNING);
 }
 
 public function testUserNotice()
 {
 $this->expectException(UserNoticeException::class);
 
 trigger_error('A user notice', E_USER_NOTICE);
 }
 
 public function testRecoverableError()
 {
 $this->expectException(RecoverableErrorException::class);
 
 $a = new A();
 printf("%s\n", $a);
 }
 
 public function testDeprecated()
 {
 $this->expectException(DeprecatedException::class);
 
 C::bar();
 }
 
 public function testUserDeprecated()
 {
 $this->expectException(UserDeprecatedException::class);
 
 trigger_error('A user deprecated', E_USER_DEPRECATED);
 }
 }
 
 |