-
Notifications
You must be signed in to change notification settings - Fork 10.4k
/
Copy pathGameplayKit.swift
133 lines (103 loc) · 3.9 KB
/
GameplayKit.swift
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
// RUN: %target-run-simple-swift
// REQUIRES: executable_test
// REQUIRES: objc_interop
// UNSUPPORTED: OS=watchos
import StdlibUnittest
import GameplayKit
// GameplayKit is only available on iOS 9.0 and above, OS X 10.11 and above, and
// tvOS 9.0 and above.
var GamePlayKitTests = TestSuite("GameplayKit")
if #available(OSX 10.12, iOS 10.0, tvOS 10.0, *) {
GamePlayKitTests.test("GKPath_float2") {
let vec: [float2] = [float2(3.0), float2(4.0)]
let path = GKPath(points: vec, radius: Float(30), cyclical: true)
expectEqual(path.numPoints, 2)
expectEqual(path.radius, Float(30))
expectEqual(path.isCyclical, true)
}
GamePlayKitTests.test("GKPath_float3") {
let vec: [float3] = [float3(3.0), float3(4.0)]
let path = GKPath(points: vec, radius: Float(30), cyclical: true)
expectEqual(path.numPoints, 2)
expectEqual(path.radius, Float(30))
expectEqual(path.isCyclical, true)
}
GamePlayKitTests.test("GKPolygonObstacle") {
let vec = [float2(3.0, 3.0), float2(3.0, -3.0), float2(-3.0, 3.0), float2(-3.0, -3.0)]
let obstacle = GKPolygonObstacle(points: vec)
expectEqual(obstacle.vertexCount, 4)
}
GamePlayKitTests.test("GKEntity") {
@objc(MovementComponent)
class MovementComponent: GKComponent {
override func update(deltaTime seconds: TimeInterval) {}
override func didAddToEntity() {}
override func willRemoveFromEntity() {}
}
let comp = MovementComponent()
let entity = GKEntity()
entity.addComponent(comp)
expectEqual(entity.components.count, 1)
let grabbedComp = entity.component(ofType: MovementComponent.self)
expectEqual(grabbedComp, comp)
entity.removeComponent(ofType: MovementComponent.self)
expectEqual(entity.components.count, 0)
}
}
if #available(OSX 10.11, iOS 9.0, tvOS 9.0, *) {
class TestComponent : GKComponent {}
class OtherTestComponent : GKComponent {}
class TestState1 : GKState {}
class TestState2 : GKState {}
GamePlayKitTests.test("GKEntity.component(ofType)") {
let entity = GKEntity()
entity.addComponent(TestComponent())
do {
var componentForTestComponent =
entity.component(ofType: TestComponent.self)
var componentForOtherTestComponent_nil =
entity.component(ofType: OtherTestComponent.self)
expectNotNil(componentForTestComponent)
expectType(Optional<TestComponent>.self, &componentForTestComponent)
expectNil(componentForOtherTestComponent_nil)
}
entity.removeComponent(ofType: TestComponent.self)
entity.addComponent(OtherTestComponent())
do {
var componentForOtherTestComponent =
entity.component(ofType: OtherTestComponent.self)
var componentForTestComponent_nil =
entity.component(ofType: TestComponent.self)
expectNotNil(componentForOtherTestComponent)
expectType(Optional<OtherTestComponent>.self, &componentForOtherTestComponent)
expectNil(componentForTestComponent_nil)
}
}
GamePlayKitTests.test("GKStateMachine.state(forClass:)") {
do {
// Construct a state machine with a custom subclass as the only state.
let stateMachine = GKStateMachine(
states: [TestState1()])
var stateForTestState1 =
stateMachine.state(forClass: TestState1.self)
var stateForTestState2_nil =
stateMachine.state(forClass: TestState2.self)
expectNotNil(stateForTestState1)
expectType(Optional<TestState1>.self, &stateForTestState1)
expectNil(stateForTestState2_nil)
}
do {
// Construct a state machine with a custom subclass as the only state.
let stateMachine = GKStateMachine(
states: [TestState2()])
var stateForTestState2 =
stateMachine.state(forClass: TestState2.self)
var stateForTestState1_nil =
stateMachine.state(forClass: TestState1.self)
expectNotNil(stateForTestState2)
expectType(Optional<TestState2>.self, &stateForTestState2)
expectNil(stateForTestState1_nil)
}
}
} // if #available(OSX 10.11, iOS 9.0, tvOS 9.0, *)
runAllTests()