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
|
osx_image: xcode11
|
||||||
|
install:
|
||||||
|
- eval "$(curl -sL https://swiftenv.fuller.li/install.sh)"
|
||||||
script:
|
script:
|
||||||
- swift package clean
|
- swift package reset
|
||||||
- swift package resolve
|
- swift build
|
||||||
- swift test
|
- swift test
|
||||||
|
|
|
||||||
|
|
@ -5,6 +5,7 @@
|
||||||
// Created by Christian Treffs on 25.06.19.
|
// Created by Christian Treffs on 25.06.19.
|
||||||
//
|
//
|
||||||
|
|
||||||
|
#if swift(>=5.1)
|
||||||
@dynamicMemberLookup
|
@dynamicMemberLookup
|
||||||
public struct ReadableOnly<Comp> where Comp: Component {
|
public struct ReadableOnly<Comp> where Comp: Component {
|
||||||
@usableFromInline let component: Comp
|
@usableFromInline let component: Comp
|
||||||
|
|
@ -31,3 +32,4 @@ public struct Writable<Comp> where Comp: Component {
|
||||||
nonmutating set { component[keyPath: keyPath] = newValue }
|
nonmutating set { component[keyPath: keyPath] = newValue }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
|
||||||
|
|
@ -104,4 +104,9 @@ public struct Entity {
|
||||||
}
|
}
|
||||||
|
|
||||||
// MARK: - Equatable
|
// 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 { }
|
extension Family.EntityComponentIterator: LazySequenceProtocol { }
|
||||||
|
|
||||||
// MARK: - Equatable
|
// 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 requiresAll = Set<ComponentIdentifier>(requiresAll.map { $0.identifier })
|
||||||
let excludesAll = Set<ComponentIdentifier>(excludesAll.map { $0.identifier })
|
let excludesAll = Set<ComponentIdentifier>(excludesAll.map { $0.identifier })
|
||||||
|
|
||||||
let valid: Bool = FamilyTraitSet.isValid(requiresAll: requiresAll, excludesAll: excludesAll)
|
precondition(FamilyTraitSet.isValid(requiresAll: requiresAll, excludesAll: excludesAll),
|
||||||
precondition(valid, "invalid family trait created - requiresAll: \(requiresAll), excludesAll: \(excludesAll)")
|
"invalid family trait created - requiresAll: \(requiresAll), excludesAll: \(excludesAll)")
|
||||||
|
|
||||||
self.requiresAll = requiresAll
|
self.requiresAll = requiresAll
|
||||||
self.excludesAll = excludesAll
|
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 FirebladeECS
|
||||||
import XCTest
|
import XCTest
|
||||||
|
|
||||||
|
#if swift(>=5.1)
|
||||||
class AccessTests: XCTestCase {
|
class AccessTests: XCTestCase {
|
||||||
|
|
||||||
func testReadOnly() {
|
func testReadOnly() {
|
||||||
|
|
@ -42,3 +42,4 @@ class AccessTests: XCTestCase {
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
|
||||||
|
|
@ -12,12 +12,13 @@ class HashingTests: XCTestCase {
|
||||||
|
|
||||||
func makeComponent() -> Int {
|
func makeComponent() -> Int {
|
||||||
let upperBound: Int = 44
|
let upperBound: Int = 44
|
||||||
let high = UInt(arc4random()) << UInt(upperBound)
|
let range = UInt32.min...UInt32.max
|
||||||
let low = UInt(arc4random())
|
let high = UInt(UInt32.random(in: range)) << UInt(upperBound)
|
||||||
assert(high.leadingZeroBitCount < 64 - upperBound)
|
let low = UInt(UInt32.random(in: range))
|
||||||
assert(high.trailingZeroBitCount >= upperBound)
|
XCTAssertTrue(high.leadingZeroBitCount < 64 - upperBound)
|
||||||
assert(low.leadingZeroBitCount >= 32)
|
XCTAssertTrue(high.trailingZeroBitCount >= upperBound)
|
||||||
assert(low.trailingZeroBitCount <= 32)
|
XCTAssertTrue(low.leadingZeroBitCount >= 32)
|
||||||
|
XCTAssertTrue(low.trailingZeroBitCount <= 32)
|
||||||
let rand: UInt = high | low
|
let rand: UInt = high | low
|
||||||
let cH = Int(bitPattern: rand)
|
let cH = Int(bitPattern: rand)
|
||||||
return cH
|
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
|
import XCTest
|
||||||
|
|
||||||
XCTMain([
|
import FirebladeECSPerformanceTests
|
||||||
testCase(FirebladeECSTests.allTests)
|
import FirebladeECSTests
|
||||||
])
|
|
||||||
|
var tests = [XCTestCaseEntry]()
|
||||||
|
tests += FirebladeECSPerformanceTests.__allTests()
|
||||||
|
tests += FirebladeECSTests.__allTests()
|
||||||
|
|
||||||
|
XCTMain(tests)
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue