add tests for EntityState.get

This commit is contained in:
Igor Kravchenko 2020-10-01 10:26:33 +03:00
parent c6a2bb7740
commit 65fedb737e
3 changed files with 52 additions and 2 deletions

View File

@ -123,7 +123,7 @@ extension ComponentSingletonProvider: ComponentProvider {
/// This component provider calls a function to get the component instance. The function must
/// return a single component of the appropriate type.
public class DynamicComponentProvider {
/// Wrapper for closure to make it hashable
/// Wrapper for closure to make it hashable via ObjectIdentifier
public class Closure {
let provideComponent: () -> Component

View File

@ -209,6 +209,50 @@ class EntityStateTests: XCTestCase {
XCTAssertTrue(provider?.getComponent() is MockComponent)
}
func testGetReturnsTypeProviderByDefault() {
state.add(MockComponent.self)
let provider = state.get(MockComponent.self)
XCTAssertNotNil(provider)
XCTAssertTrue(provider is ComponentTypeProvider?)
}
func testGetReturnsInstanceProvider() {
let component = MockComponent()
state.add(MockComponent.self).withInstance(component)
let provider = state.get(MockComponent.self)
XCTAssertNotNil(provider)
XCTAssertTrue(provider is ComponentInstanceProvider?)
}
func testGetReturnsSingletonProvider() {
state.add(MockComponent.self).withSingleton(MockComponent.self)
let provider = state.get(MockComponent.self)
XCTAssertNotNil(provider)
XCTAssertTrue(provider is ComponentSingletonProvider?)
}
func testGetReturnsDynamicProvider() {
state.add(MockComponent.self).withMethod(.init { MockComponent() })
let provider = state.get(MockComponent.self)
XCTAssertNotNil(provider)
XCTAssertTrue(provider is DynamicComponentProvider?)
}
func testGetReturnsTypeProvider() {
state.add(MockComponent.self).withType(MockComponent.self)
let provider = state.get(MockComponent.self)
XCTAssertNotNil(provider)
XCTAssertTrue(provider is ComponentTypeProvider?)
}
func testGetReturnsPassedProvider() {
let singletonProvider = ComponentSingletonProvider(type: MockComponent.self)
state.add(MockComponent.self).withProvider(singletonProvider)
let provider = state.get(MockComponent.self) as? ComponentSingletonProvider
XCTAssertNotNil(provider)
XCTAssertTrue(provider === singletonProvider)
}
class MockComponent: ComponentInitializable {
let value: Int

View File

@ -113,7 +113,13 @@ extension EntityStateTests {
("testAddWithMethodQualifierCreatesDynamicProvider", testAddWithMethodQualifierCreatesDynamicProvider),
("testAddWithNoQualifierCreatesTypeProvider", testAddWithNoQualifierCreatesTypeProvider),
("testAddWithSingletonQualifierCreatesSingletonProvider", testAddWithSingletonQualifierCreatesSingletonProvider),
("testAddWithTypeQualifierCreatesTypeProvider", testAddWithTypeQualifierCreatesTypeProvider)
("testAddWithTypeQualifierCreatesTypeProvider", testAddWithTypeQualifierCreatesTypeProvider),
("testGetReturnsDynamicProvider", testGetReturnsDynamicProvider),
("testGetReturnsInstanceProvider", testGetReturnsInstanceProvider),
("testGetReturnsPassedProvider", testGetReturnsPassedProvider),
("testGetReturnsSingletonProvider", testGetReturnsSingletonProvider),
("testGetReturnsTypeProvider", testGetReturnsTypeProvider),
("testGetReturnsTypeProviderByDefault", testGetReturnsTypeProviderByDefault)
]
}