mirror of
https://github.com/zhamao-robot/zhamao-framework.git
synced 2026-03-18 05:04:51 +08:00
add event provider test (#195)
This commit is contained in:
parent
0ac2985fc1
commit
dcf41091ef
@ -34,6 +34,7 @@ class EventProvider implements SortedProviderInterface
|
||||
self::$_event_map[$event->class][$event->method][] = $event;
|
||||
} elseif (is_array($callback) && is_object($callback[0] ?? '') && is_string($callback[1] ?? null)) {
|
||||
// 如果没有上面两个属性,则可能是回调函数是一个数组,如果是这样,则可以直接使用回调函数
|
||||
self::$_events[$event::class][] = [$level, $callback];
|
||||
self::$_event_map[$callback[0]::class][$callback[1]][] = $event;
|
||||
$event->class = $callback[0]::class;
|
||||
$event->method = $callback[1];
|
||||
|
||||
75
tests/ZM/Event/EventProviderTest.php
Normal file
75
tests/ZM/Event/EventProviderTest.php
Normal file
@ -0,0 +1,75 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace Tests\ZM\Event;
|
||||
|
||||
use Tests\TestCase;
|
||||
use ZM\Annotation\Framework\BindEvent;
|
||||
use ZM\Event\EventProvider;
|
||||
use ZM\Utils\ZMUtil;
|
||||
|
||||
/**
|
||||
* @internal
|
||||
*/
|
||||
class EventProviderTest extends TestCase
|
||||
{
|
||||
private EventProvider $ep;
|
||||
|
||||
protected function setUp(): void
|
||||
{
|
||||
parent::setUp();
|
||||
$this->ep = new EventProvider();
|
||||
}
|
||||
|
||||
public function testAddEventListenerWithCallback(): void
|
||||
{
|
||||
$event = 'test';
|
||||
$callback = fn () => null;
|
||||
$this->ep->addEventListener($event, $callback, 2496);
|
||||
$l = $this->ep->getEventListeners($event);
|
||||
$this->assertSame([
|
||||
[2496, $callback],
|
||||
], $l);
|
||||
}
|
||||
|
||||
public function testAddEventListenerWithObject(): void
|
||||
{
|
||||
// no meaning for using ZMUtil, just for testing
|
||||
$event = new BindEvent(ZMUtil::class, 2496);
|
||||
$event->class = self::class;
|
||||
$event->method = 'testAddEventListenerWithObject';
|
||||
$callback = fn () => null;
|
||||
$this->ep->addEventListener($event, $callback, 2496);
|
||||
$l = $this->ep->getEventListeners($event::class);
|
||||
$this->assertIsArray($l);
|
||||
$this->assertSame(self::class, $l[0][1][0]::class);
|
||||
$this->assertSame('testAddEventListenerWithObject', $l[0][1][1]);
|
||||
}
|
||||
|
||||
public function testAddEventListenerWithCallableArray(): void
|
||||
{
|
||||
// no meaning for using ZMUtil, just for testing
|
||||
$event = new ZMUtil();
|
||||
$callback = [$this, 'testAddEventListenerWithCallableArray'];
|
||||
$this->ep->addEventListener($event, $callback, 2496);
|
||||
$l = $this->ep->getEventListeners(ZMUtil::class);
|
||||
$this->assertIsArray($l);
|
||||
$this->assertSame('testAddEventListenerWithCallableArray', $l[0][1][1]);
|
||||
}
|
||||
|
||||
public function testAddEventListenerWithCustomName(): void
|
||||
{
|
||||
$event = new class() {
|
||||
public function getName(): string
|
||||
{
|
||||
return 'test';
|
||||
}
|
||||
};
|
||||
$callback = fn () => null;
|
||||
$this->ep->addEventListener('test', $callback, 2496);
|
||||
$l = $this->ep->getEventListeners('test');
|
||||
$ll = $this->ep->getListenersForEvent($event);
|
||||
$this->assertSame($l, $ll);
|
||||
}
|
||||
}
|
||||
Loading…
x
Reference in New Issue
Block a user