diff --git a/Tests/FirebladeECSTests/EntityCreationTests.swift b/Tests/FirebladeECSTests/EntityCreationTests.swift new file mode 100644 index 0000000..2184ac7 --- /dev/null +++ b/Tests/FirebladeECSTests/EntityCreationTests.swift @@ -0,0 +1,80 @@ +// +// EntityCreationTests.swift +// +// +// Created by Christian Treffs on 30.07.20. +// + +import FirebladeECS +import XCTest + +final class EntityCreationTests: XCTestCase { + + func testCreateEntityOneComponent() throws { + let nexus = Nexus() + let entity = nexus.createEntity { + Position(x: 1, y: 2) + } + + XCTAssertEqual(entity[\Position.x], 1) + XCTAssertEqual(entity[\Position.y], 2) + + XCTAssertEqual(nexus.numEntities, 1) + XCTAssertEqual(nexus.numComponents, 1) + XCTAssertEqual(nexus.numFamilies, 0) + } + + func testCreateEntityMultipleComponents() throws { + let nexus = Nexus() + + let entity = nexus.createEntity { + Position(x: 1, y: 2) + Name(name: "Hello") + } + + XCTAssertEqual(entity[\Position.x], 1) + XCTAssertEqual(entity[\Position.y], 2) + + XCTAssertEqual(entity[\Name.name], "Hello") + + XCTAssertEqual(nexus.numEntities, 1) + XCTAssertEqual(nexus.numComponents, 2) + XCTAssertEqual(nexus.numFamilies, 0) + } + + func testBulkCreateEntitiesOneComponent() throws { + let nexus = Nexus() + + let entities = nexus.createEntities(count: 100) { ctx in + Velocity(a: Float(ctx.index)) + } + + XCTAssertEqual(entities[0][\Velocity.a], 0) + XCTAssertEqual(entities[99][\Velocity.a], 99) + + XCTAssertEqual(nexus.numEntities, 100) + XCTAssertEqual(nexus.numComponents, 100) + XCTAssertEqual(nexus.numFamilies, 0) + } + + func testBulkCreateEntitiesMultipleComponents() throws { + let nexus = Nexus() + + let entities = nexus.createEntities(count: 100) { ctx in + Position(x: ctx.index, y: ctx.index) + Name(name: "\(ctx.index)") + } + + XCTAssertEqual(entities[0][\Position.x], 0) + XCTAssertEqual(entities[0][\Position.y], 0) + XCTAssertEqual(entities[0][\Name.name], "0") + XCTAssertEqual(entities[99][\Position.x], 99) + XCTAssertEqual(entities[99][\Position.y], 99) + XCTAssertEqual(entities[99][\Name.name], "99") + + XCTAssertEqual(nexus.numEntities, 100) + XCTAssertEqual(nexus.numComponents, 200) + XCTAssertEqual(nexus.numFamilies, 0) + } + +} diff --git a/Tests/FirebladeECSTests/XCTestManifests.swift b/Tests/FirebladeECSTests/XCTestManifests.swift index 2a2b454..b7daeb4 100644 --- a/Tests/FirebladeECSTests/XCTestManifests.swift +++ b/Tests/FirebladeECSTests/XCTestManifests.swift @@ -20,6 +20,18 @@ extension ComponentTests { ] } +extension EntityCreationTests { + // DO NOT MODIFY: This is autogenerated, use: + // `swift test --generate-linuxmain` + // to regenerate. + static let __allTests__EntityCreationTests = [ + ("testBulkCreateEntitiesMultipleComponents", testBulkCreateEntitiesMultipleComponents), + ("testBulkCreateEntitiesOneComponent", testBulkCreateEntitiesOneComponent), + ("testCreateEntityMultipleComponents", testCreateEntityMultipleComponents), + ("testCreateEntityOneComponent", testCreateEntityOneComponent) + ] +} + extension EntityTests { // DO NOT MODIFY: This is autogenerated, use: // `swift test --generate-linuxmain` @@ -162,6 +174,7 @@ public func __allTests() -> [XCTestCaseEntry] { return [ testCase(ComponentIdentifierTests.__allTests__ComponentIdentifierTests), testCase(ComponentTests.__allTests__ComponentTests), + testCase(EntityCreationTests.__allTests__EntityCreationTests), testCase(EntityTests.__allTests__EntityTests), testCase(FamilyCodingTests.__allTests__FamilyCodingTests), testCase(FamilyTests.__allTests__FamilyTests),