public function testBindEvents()
 {
     $events = [['Test', 'test', function () {
         return 'a';
     }], ['Test', 'test', function () {
         return 'b';
     }]];
     $observer = new Observer($events);
     foreach ($observer->getListeners('Test', 'test') as $key => $event) {
         $this->assertEquals(call_user_func($events[$key][2]), call_user_func($event));
     }
     $observer->unbind();
     $this->assertEquals([], $observer->getListeners());
     $this->assertEquals(false, $observer->getListeners('Test'));
     $this->assertEquals(false, $observer->getListeners('Test', 'test'));
     $this->assertEquals(false, $observer->getListeners('Test', 'test', 0));
     $observer->bindEvents($events);
     $this->assertInternalType('callable', $observer->getListeners('Test', 'test', 0));
     $this->assertInternalType('callable', $observer->getListeners('Test', 'test', 1));
     $this->assertInternalType('array', $observer->getListeners('Test', 'test'));
     $this->assertInternalType('array', $observer->getListeners('Test'));
     foreach ($observer->getListeners('Test') as $key => $val) {
         $this->assertEquals('test', $key);
         foreach ($val as $eventKey => $event) {
             $this->assertEquals(call_user_func($events[$eventKey][2]), call_user_func($event));
         }
     }
 }