65 lines
1.9 KiB
Swift
65 lines
1.9 KiB
Swift
//
|
|
// SingleTests.swift
|
|
// FirebladeECSTests
|
|
//
|
|
// Created by Christian Treffs on 13.02.19.
|
|
//
|
|
|
|
@testable import FirebladeECS
|
|
import XCTest
|
|
|
|
class SingleTests: XCTestCase {
|
|
var nexus: Nexus!
|
|
|
|
override func setUp() {
|
|
super.setUp()
|
|
nexus = Nexus()
|
|
}
|
|
|
|
override func tearDown() {
|
|
nexus = nil
|
|
super.tearDown()
|
|
}
|
|
|
|
func testSingleCreation() {
|
|
let single = nexus.single(SingleGameState.self)
|
|
XCTAssertTrue(single.nexus === self.nexus)
|
|
XCTAssertEqual(single.traits.requiresAll.count, 1)
|
|
XCTAssertEqual(single.traits.excludesAll.count, 0)
|
|
|
|
XCTAssertEqual(nexus.familyMembersByTraits.keys.count, 1)
|
|
XCTAssertEqual(nexus.familyMembersByTraits.values.count, 1)
|
|
|
|
let traits = FamilyTraitSet(requiresAll: [SingleGameState.self], excludesAll: [])
|
|
XCTAssertEqual(single.traits, traits)
|
|
}
|
|
|
|
func testSingleReuse() {
|
|
let singleA = nexus.single(SingleGameState.self)
|
|
|
|
let singleB = nexus.single(SingleGameState.self)
|
|
|
|
XCTAssertEqual(nexus.familyMembersByTraits.keys.count, 1)
|
|
XCTAssertEqual(nexus.familyMembersByTraits.values.count, 1)
|
|
|
|
XCTAssertEqual(singleA, singleB)
|
|
}
|
|
|
|
func testSingleEntityAndComponentCreation() {
|
|
let single = nexus.single(SingleGameState.self)
|
|
let gameState = SingleGameState()
|
|
XCTAssertNotNil(single.entity)
|
|
XCTAssertNotNil(single.component)
|
|
XCTAssertEqual(single.component.shouldQuit, gameState.shouldQuit)
|
|
XCTAssertEqual(single.component.playerHealth, gameState.playerHealth)
|
|
}
|
|
|
|
func testSingleCreationOnExistingFamilyMember() {
|
|
_ = nexus.createEntity(with: Position(x: 1, y: 2))
|
|
let singleGame = SingleGameState()
|
|
_ = nexus.createEntity(with: singleGame)
|
|
let single = nexus.single(SingleGameState.self)
|
|
XCTAssertTrue(singleGame === single.component)
|
|
}
|
|
}
|