Skip to content

Commit bdd8ea0

Browse files
ronaldsmartinandersio
authored andcommitted
Fix deprecation in SignalProducerNimbleMatchers (#585)
1 parent 85ee040 commit bdd8ea0

File tree

1 file changed

+40
-30
lines changed

1 file changed

+40
-30
lines changed

Tests/ReactiveSwiftTests/SignalProducerNimbleMatchers.swift

Lines changed: 40 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -16,41 +16,51 @@ public func sendValue<T: Equatable, E: Equatable>(_ value: T?, sendError: E?, co
1616
}
1717

1818
public func sendValues<T: Equatable, E: Equatable>(_ values: [T], sendError maybeSendError: E?, complete: Bool) -> Predicate<SignalProducer<T, E>> {
19-
return NonNilMatcherFunc { actualExpression, failureMessage in
19+
return Predicate<SignalProducer<T, E>> { actualExpression in
2020
precondition(maybeSendError == nil || !complete, "Signals can't both send an error and complete")
21+
guard let signalProducer = try actualExpression.evaluate() else {
22+
let message = ExpectationMessage.fail("The SignalProducer was not created.")
23+
.appendedBeNilHint()
24+
return PredicateResult(status: .fail, message: message)
25+
}
2126

22-
failureMessage.postfixMessage = "Send values \(values). Send error \(String(describing: maybeSendError)). Complete: \(complete)"
23-
let maybeProducer = try actualExpression.evaluate()
24-
25-
if let signalProducer = maybeProducer {
26-
var sentValues: [T] = []
27-
var sentError: E?
28-
var signalCompleted = false
29-
30-
signalProducer.start { event in
31-
switch event {
32-
case let .value(value):
33-
sentValues.append(value)
34-
case .completed:
35-
signalCompleted = true
36-
case let .failed(error):
37-
sentError = error
38-
default:
39-
break
40-
}
41-
}
27+
var sentValues: [T] = []
28+
var sentError: E?
29+
var signalCompleted = false
4230

43-
if sentValues != values {
44-
return false
31+
signalProducer.start { event in
32+
switch event {
33+
case let .value(value):
34+
sentValues.append(value)
35+
case .completed:
36+
signalCompleted = true
37+
case let .failed(error):
38+
sentError = error
39+
default:
40+
break
4541
}
42+
}
4643

47-
if sentError != maybeSendError {
48-
return false
49-
}
44+
if sentValues != values {
45+
let message = ExpectationMessage.expectedCustomValueTo(
46+
"send values <\(values)>",
47+
"<\(sentValues)>"
48+
)
49+
return PredicateResult(status: .doesNotMatch, message: message)
50+
}
5051

51-
return signalCompleted == complete
52-
} else {
53-
return false
52+
if sentError != maybeSendError {
53+
let message = ExpectationMessage.expectedCustomValueTo(
54+
"send error <\(String(describing: maybeSendError))>",
55+
"<\(String(describing: sentError))>"
56+
)
57+
return PredicateResult(status: .doesNotMatch, message: message)
5458
}
55-
}.predicate
59+
60+
let completeMessage = complete ?
61+
"complete, but the producer did not complete" :
62+
"not to complete, but the producer completed"
63+
let message = ExpectationMessage.expectedTo(completeMessage)
64+
return PredicateResult(bool: signalCompleted == complete, message: message)
65+
}
5666
}

0 commit comments

Comments
 (0)