forked from ReactiveCocoa/ReactiveCocoa
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathLifetimeSpec.swift
51 lines (42 loc) · 929 Bytes
/
LifetimeSpec.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
import Foundation
import ReactiveCocoa
import ReactiveSwift
import enum Result.NoError
import Quick
import Nimble
class LifetimeSpec: QuickSpec {
override func spec() {
describe("NSObject.reactive.lifetime") {
var object: NSObject!
weak var _object: NSObject?
beforeEach {
object = NSObject()
_object = object
}
afterEach {
object = nil
expect(_object).to(beNil())
}
it("should not deadlock") {
for _ in 1 ... 10 {
var isDeadlocked = true
func createQueue() -> DispatchQueue {
if #available(*, macOS 10.10) {
return .global(qos: .userInitiated)
} else {
return .global(priority: .high)
}
}
createQueue().async {
_ = object.reactive.lifetime
createQueue().async {
_ = object.reactive.lifetime
isDeadlocked = false
}
}
expect(isDeadlocked).toEventually(beFalsy())
}
}
}
}
}