diff --git a/Sources/FirebladeECS/Event.swift b/Sources/FirebladeECS/Event.swift index 169a3dc..964a80b 100644 --- a/Sources/FirebladeECS/Event.swift +++ b/Sources/FirebladeECS/Event.swift @@ -21,6 +21,10 @@ extension ECSEvent { extension EventHandler { + unowned var listenerRef: EventHandler { + return self + } + /// Subscribe with an event handler closure to receive events of type T /// /// - Parameter eventHandler: event handler closure diff --git a/Tests/FirebladeECSTests/Components.swift b/Tests/FirebladeECSTests/Components.swift new file mode 100644 index 0000000..2396afa --- /dev/null +++ b/Tests/FirebladeECSTests/Components.swift @@ -0,0 +1,10 @@ +// +// Components.swift +// FirebladeECSTests +// +// Created by Christian Treffs on 09.10.17. +// + +import FirebladeECS + +struct EmptyComponent: Component { } diff --git a/Tests/FirebladeECSTests/FirebladeECSTests.swift b/Tests/FirebladeECSTests/FirebladeECSTests.swift index 5c0c3da..e0408b6 100644 --- a/Tests/FirebladeECSTests/FirebladeECSTests.swift +++ b/Tests/FirebladeECSTests/FirebladeECSTests.swift @@ -3,10 +3,42 @@ import XCTest class FirebladeECSTests: XCTestCase { + class MyEventHandler: EventHandler { + init() { + subscribe(event: handleEntityCreated) + subscribe(event: handleEntityDestroyed) + subscribe(event: handleComponentAdded) + } + deinit { + unsubscribe(event: handleEntityCreated) + unsubscribe(event: handleComponentAdded) + unsubscribe(event: handleEntityDestroyed) + } + + func handleEntityCreated(ec: EntityCreated) { + Log.warn(ec) + } + + func handleEntityDestroyed(ed: EntityDestroyed) { + Log.warn(ed) + } + + func handleComponentAdded(ca: ComponentAdded) { + Log.debug(ca) + } + + } + + let eventHandler: MyEventHandler = MyEventHandler() func testCreateEntity() { let newEntity = Entity() + XCTAssert(newEntity.hasComponents == false) XCTAssert(newEntity.uei == 1) + XCTAssert(newEntity.numComponents == 0) + + let pC: EmptyComponent? = newEntity.peekComponent() + XCTAssert(pC == nil) } }