add StateComponentMappingTests

This commit is contained in:
Igor Kravchenko 2020-10-01 12:47:59 +03:00
parent c222234adc
commit 2905541413
1 changed files with 66 additions and 0 deletions

View File

@ -31,6 +31,8 @@ class ComponentInstanceProviderTests: XCTestCase {
}
}
// MARK: -
class ComponentTypeProviderTests: XCTestCase {
func testProviderReturnsAnInstanceOfType() {
let provider = ComponentTypeProvider(type: MockComponent.self)
@ -74,6 +76,8 @@ class ComponentTypeProviderTests: XCTestCase {
}
}
// MARK: -
class ComponentSingletonProviderTests: XCTestCase {
func testProviderReturnsAnInstanceOfType() {
let provider = ComponentSingletonProvider(type: MockComponent.self)
@ -118,6 +122,8 @@ class ComponentSingletonProviderTests: XCTestCase {
}
}
// MARK: -
class DynamicComponentProviderTests: XCTestCase {
func testProviderReturnsTheInstance() {
let instance = MockComponent(value: 0)
@ -153,6 +159,8 @@ class DynamicComponentProviderTests: XCTestCase {
}
}
// MARK: -
@testable import class FirebladeECS.EntityState
class EntityStateTests: XCTestCase {
@ -252,6 +260,17 @@ class EntityStateTests: XCTestCase {
XCTAssertNotNil(provider)
XCTAssertTrue(provider === singletonProvider)
}
func testHasReturnsFalseForNotCreatedProvider() {
XCTAssertFalse(state.has(MockComponent.self))
}
func testHasReturnsTrueForCreatedProvider() {
state.add(MockComponent.self)
XCTAssertTrue(state.has(MockComponent.self))
}
// TODO: continue here
class MockComponent: ComponentInitializable {
let value: Int
@ -268,6 +287,8 @@ class EntityStateTests: XCTestCase {
class MockComponent2: MockComponent {}
}
// MARK: -
class EntityStateMachineTests: XCTestCase {
var nexus = Nexus()
var fsm = EntityStateMachine<String>(entity: .init(nexus: .init(), id: .invalid))
@ -389,3 +410,48 @@ class EntityStateMachineTests: XCTestCase {
}
}
}
class StateComponentMappingTests: XCTestCase {
func testAddReturnsSameMappingForSameComponentType() {
let state = EntityState()
let mapping = state.add(MockComponent.self)
XCTAssertFalse(mapping === mapping.add(MockComponent.self))
}
func testAddReturnsSameMappingForDifferentComponentTypes() {
let state = EntityState()
let mapping = state.add(MockComponent.self)
XCTAssertFalse(mapping === mapping.add(MockComponent2.self))
}
func testAddAddsProviderToState() {
let state = EntityState()
let mapping = state.add(MockComponent.self)
mapping.add(MockComponent2.self)
XCTAssertTrue(state.has(MockComponent.self))
}
class MockComponent: ComponentInitializable {
let value: Int
init(value: Int) {
self.value = value
}
required init() {
self.value = 0
}
}
class MockComponent2: ComponentInitializable {
let value: String
init(value: String) {
self.value = value
}
required init() {
self.value = ""
}
}
}