Merge pull request #5 from fireblade-engine/feature/travis-ci
Extend to linux on travis.ci
This commit is contained in:
commit
f36371a378
14
.travis.yml
14
.travis.yml
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
@ -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)
|
||||
|
|
|
|||
Loading…
Reference in New Issue