Merge pull request #5 from fireblade-engine/feature/travis-ci

Extend to linux on travis.ci
This commit is contained in:
Christian Treffs 2019-08-22 14:46:11 +02:00 committed by GitHub
commit f36371a378
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
10 changed files with 219 additions and 19 deletions

View File

@ -1,7 +1,13 @@
language: swift
os:
- linux
- osx
language: generic
sudo: required
dist: trusty
osx_image: xcode11
install:
- eval "$(curl -sL https://swiftenv.fuller.li/install.sh)"
script:
- swift package clean
- swift package resolve
- swift package reset
- swift build
- swift test

View File

@ -5,6 +5,7 @@
// Created by Christian Treffs on 25.06.19.
//
#if swift(>=5.1)
@dynamicMemberLookup
public struct ReadableOnly<Comp> where Comp: Component {
@usableFromInline let component: Comp
@ -31,3 +32,4 @@ public struct Writable<Comp> where Comp: Component {
nonmutating set { component[keyPath: keyPath] = newValue }
}
}
#endif

View File

@ -104,4 +104,9 @@ public struct Entity {
}
// MARK: - Equatable
extension Entity: Equatable { }
extension Entity: Equatable {
public static func == (lhs: Entity, rhs: Entity) -> Bool {
return lhs.nexus == rhs.nexus &&
lhs.identifier == rhs.identifier
}
}

View File

@ -124,4 +124,9 @@ extension Family {
extension Family.EntityComponentIterator: LazySequenceProtocol { }
// MARK: - Equatable
extension Family: Equatable { }
extension Family: Equatable {
public static func == (lhs: Family<R>, rhs: Family<R>) -> Bool {
return lhs.nexus == rhs.nexus &&
lhs.traits == rhs.traits
}
}

View File

@ -15,8 +15,8 @@ public struct FamilyTraitSet {
let requiresAll = Set<ComponentIdentifier>(requiresAll.map { $0.identifier })
let excludesAll = Set<ComponentIdentifier>(excludesAll.map { $0.identifier })
let valid: Bool = FamilyTraitSet.isValid(requiresAll: requiresAll, excludesAll: excludesAll)
precondition(valid, "invalid family trait created - requiresAll: \(requiresAll), excludesAll: \(excludesAll)")
precondition(FamilyTraitSet.isValid(requiresAll: requiresAll, excludesAll: excludesAll),
"invalid family trait created - requiresAll: \(requiresAll), excludesAll: \(excludesAll)")
self.requiresAll = requiresAll
self.excludesAll = excludesAll

View File

@ -0,0 +1,52 @@
#if !canImport(ObjectiveC)
import XCTest
extension ComponentTests {
// DO NOT MODIFY: This is autogenerated, use:
// `swift test --generate-linuxmain`
// to regenerate.
static let __allTests__ComponentTests = [
("testMeasureComponentIdentifier", testMeasureComponentIdentifier),
("testMeasureStaticComponentIdentifier", testMeasureStaticComponentIdentifier),
]
}
extension HashingPerformanceTests {
// DO NOT MODIFY: This is autogenerated, use:
// `swift test --generate-linuxmain`
// to regenerate.
static let __allTests__HashingPerformanceTests = [
("testMeasureCombineHash", testMeasureCombineHash),
("testMeasureSetOfSetHash", testMeasureSetOfSetHash),
]
}
extension TypedFamilyPerformanceTests {
// DO NOT MODIFY: This is autogenerated, use:
// `swift test --generate-linuxmain`
// to regenerate.
static let __allTests__TypedFamilyPerformanceTests = [
("testMeasureTraitMatching", testMeasureTraitMatching),
("testPerformanceArray", testPerformanceArray),
("testPerformanceTypedFamilyEntities", testPerformanceTypedFamilyEntities),
("testPerformanceTypedFamilyEntityFiveComponents", testPerformanceTypedFamilyEntityFiveComponents),
("testPerformanceTypedFamilyEntityFourComponents", testPerformanceTypedFamilyEntityFourComponents),
("testPerformanceTypedFamilyEntityOneComponent", testPerformanceTypedFamilyEntityOneComponent),
("testPerformanceTypedFamilyEntityThreeComponents", testPerformanceTypedFamilyEntityThreeComponents),
("testPerformanceTypedFamilyEntityTwoComponents", testPerformanceTypedFamilyEntityTwoComponents),
("testPerformanceTypedFamilyFiveComponents", testPerformanceTypedFamilyFiveComponents),
("testPerformanceTypedFamilyFourComponents", testPerformanceTypedFamilyFourComponents),
("testPerformanceTypedFamilyOneComponent", testPerformanceTypedFamilyOneComponent),
("testPerformanceTypedFamilyThreeComponents", testPerformanceTypedFamilyThreeComponents),
("testPerformanceTypedFamilyTwoComponents", testPerformanceTypedFamilyTwoComponents),
]
}
public func __allTests() -> [XCTestCaseEntry] {
return [
testCase(ComponentTests.__allTests__ComponentTests),
testCase(HashingPerformanceTests.__allTests__HashingPerformanceTests),
testCase(TypedFamilyPerformanceTests.__allTests__TypedFamilyPerformanceTests),
]
}
#endif

View File

@ -10,7 +10,7 @@
import FirebladeECS
import XCTest
#if swift(>=5.1)
class AccessTests: XCTestCase {
func testReadOnly() {
@ -42,3 +42,4 @@ class AccessTests: XCTestCase {
}
}
#endif

View File

@ -12,12 +12,13 @@ class HashingTests: XCTestCase {
func makeComponent() -> Int {
let upperBound: Int = 44
let high = UInt(arc4random()) << UInt(upperBound)
let low = UInt(arc4random())
assert(high.leadingZeroBitCount < 64 - upperBound)
assert(high.trailingZeroBitCount >= upperBound)
assert(low.leadingZeroBitCount >= 32)
assert(low.trailingZeroBitCount <= 32)
let range = UInt32.min...UInt32.max
let high = UInt(UInt32.random(in: range)) << UInt(upperBound)
let low = UInt(UInt32.random(in: range))
XCTAssertTrue(high.leadingZeroBitCount < 64 - upperBound)
XCTAssertTrue(high.trailingZeroBitCount >= upperBound)
XCTAssertTrue(low.leadingZeroBitCount >= 32)
XCTAssertTrue(low.trailingZeroBitCount <= 32)
let rand: UInt = high | low
let cH = Int(bitPattern: rand)
return cH

View File

@ -0,0 +1,124 @@
#if !canImport(ObjectiveC)
import XCTest
extension ComponentTests {
// DO NOT MODIFY: This is autogenerated, use:
// `swift test --generate-linuxmain`
// to regenerate.
static let __allTests__ComponentTests = [
("testComponentIdentifier", testComponentIdentifier),
]
}
extension EntityTests {
// DO NOT MODIFY: This is autogenerated, use:
// `swift test --generate-linuxmain`
// to regenerate.
static let __allTests__EntityTests = [
("testEntityIdentifierAndIndex", testEntityIdentifierAndIndex),
]
}
extension FamilyTests {
// DO NOT MODIFY: This is autogenerated, use:
// `swift test --generate-linuxmain`
// to regenerate.
static let __allTests__FamilyTests = [
("testFamilyAbandoned", testFamilyAbandoned),
("testFamilyBulkDestroy", testFamilyBulkDestroy),
("testFamilyCreation", testFamilyCreation),
("testFamilyExchange", testFamilyExchange),
("testFamilyLateMember", testFamilyLateMember),
("testFamilyMemberBasicIteration", testFamilyMemberBasicIteration),
("testFamilyReuse", testFamilyReuse),
]
}
extension FamilyTraitsTests {
// DO NOT MODIFY: This is autogenerated, use:
// `swift test --generate-linuxmain`
// to regenerate.
static let __allTests__FamilyTraitsTests = [
("testTraitCommutativity", testTraitCommutativity),
("testTraitMatching", testTraitMatching),
]
}
extension HashingTests {
// DO NOT MODIFY: This is autogenerated, use:
// `swift test --generate-linuxmain`
// to regenerate.
static let __allTests__HashingTests = [
("testCollisionsInCritialRange", testCollisionsInCritialRange),
]
}
extension NexusTests {
// DO NOT MODIFY: This is autogenerated, use:
// `swift test --generate-linuxmain`
// to regenerate.
static let __allTests__NexusTests = [
("testComponentCreation", testComponentCreation),
("testComponentDeletion", testComponentDeletion),
("testComponentRetrieval", testComponentRetrieval),
("testComponentUniqueness", testComponentUniqueness),
("testEntityCreate", testEntityCreate),
("testEntityDestroy", testEntityDestroy),
]
}
extension SingleTests {
// DO NOT MODIFY: This is autogenerated, use:
// `swift test --generate-linuxmain`
// to regenerate.
static let __allTests__SingleTests = [
("testSingleCreation", testSingleCreation),
("testSingleCreationOnExistingFamilyMember", testSingleCreationOnExistingFamilyMember),
("testSingleEntityAndComponentCreation", testSingleEntityAndComponentCreation),
("testSingleReuse", testSingleReuse),
]
}
extension SparseSetTests {
// DO NOT MODIFY: This is autogenerated, use:
// `swift test --generate-linuxmain`
// to regenerate.
static let __allTests__SparseSetTests = [
("testSparseSetAdd", testSparseSetAdd),
("testSparseSetAddAndReplace", testSparseSetAddAndReplace),
("testSparseSetClear", testSparseSetClear),
("testSparseSetDoubleRemove", testSparseSetDoubleRemove),
("testSparseSetGet", testSparseSetGet),
("testSparseSetNonCongiuousData", testSparseSetNonCongiuousData),
("testSparseSetReduce", testSparseSetReduce),
("testSparseSetRemove", testSparseSetRemove),
("testSparseSetRemoveAndAdd", testSparseSetRemoveAndAdd),
("testSparseSetRemoveNonPresent", testSparseSetRemoveNonPresent),
("testStartEndIndex", testStartEndIndex),
("testSubscript", testSubscript),
]
}
extension SystemsTests {
// DO NOT MODIFY: This is autogenerated, use:
// `swift test --generate-linuxmain`
// to regenerate.
static let __allTests__SystemsTests = [
("testSystemsUpdate", testSystemsUpdate),
]
}
public func __allTests() -> [XCTestCaseEntry] {
return [
testCase(ComponentTests.__allTests__ComponentTests),
testCase(EntityTests.__allTests__EntityTests),
testCase(FamilyTests.__allTests__FamilyTests),
testCase(FamilyTraitsTests.__allTests__FamilyTraitsTests),
testCase(HashingTests.__allTests__HashingTests),
testCase(NexusTests.__allTests__NexusTests),
testCase(SingleTests.__allTests__SingleTests),
testCase(SparseSetTests.__allTests__SparseSetTests),
testCase(SystemsTests.__allTests__SystemsTests),
]
}
#endif

View File

@ -1,6 +1,10 @@
import FirebladeECSTests
import XCTest
XCTMain([
testCase(FirebladeECSTests.allTests)
])
import FirebladeECSPerformanceTests
import FirebladeECSTests
var tests = [XCTestCaseEntry]()
tests += FirebladeECSPerformanceTests.__allTests()
tests += FirebladeECSTests.__allTests()
XCTMain(tests)