Skip to content

Commit 849caf1

Browse files
committed
wip
1 parent 60cdbed commit 849caf1

File tree

4 files changed

+50
-24
lines changed

4 files changed

+50
-24
lines changed

Sources/AtomicTransition/AtomicTransitionBuilder.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ public struct AtomicTransitionBuilder {
55
first
66
}
77

8-
public static func buildPartialBlock(accumulated: some AtomicTransitionProtocol, next: some AtomicTransitionProtocol) -> some AtomicTransitionProtocol {
8+
public static func buildPartialBlock<T1: AtomicTransitionProtocol, T2: AtomicTransitionProtocol>(accumulated: T1, next: T2) -> Combined<T1, T2> {
99
Combined(accumulated, next)
1010
}
1111
#else

Sources/AtomicTransition/Combined.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ public struct Combined<TransitionA: AtomicTransitionProtocol, TransitionB: Atomi
3434
}
3535
#else
3636
public init(@AtomicTransitionBuilder _ builder: () -> TransitionA) where TransitionB == Identity {
37-
self.init(transitionA: builder(), transitionB: Identity())
37+
self.init(builder(), Identity())
3838
}
3939
#endif
4040

Sources/TestUtils/AtomicTransition+Mocks.swift

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,28 @@ extension AtomicTransition {
1212
}
1313
}
1414

15+
public struct Spy: AtomicTransitionProtocol {
16+
public typealias Handler = (TransientView, TransitionOperation, Container) -> Void
17+
18+
private let handler: Handler
19+
20+
public init(handler: @escaping Handler) {
21+
self.handler = handler
22+
}
23+
24+
public func transition(_ view: TransientView, for operation: TransitionOperation, in container: Container) {
25+
handler(view, operation, container)
26+
}
27+
}
28+
1529
extension AtomicTransition.Operation {
1630
public static func random() -> Self {
1731
[.insertion, .removal].randomElement()!
1832
}
1933
}
34+
35+
extension AtomicTransitionOperation {
36+
public static func random() -> Self {
37+
[.insertion, .removal].randomElement()!
38+
}
39+
}

Tests/AtomicTransitionTests/CombinedTests.swift

Lines changed: 28 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -4,37 +4,43 @@ import TestUtils
44
final class CombinedTests: XCTestCase {
55
func test() {
66
let viewUsed = UnimplementedAnimatorTransientView()
7-
let operationUsed = AtomicTransition.Operation.random()
8-
let contextUsed = UnimplementedUIKitContext()
7+
let operationUsed = AtomicTransitionOperation.random()
8+
let containerUsed = UIView()
99

10-
var sequence: [Character] = []
11-
let sut = AtomicTransition
12-
.spy { view, operation, context in
10+
let expectation1 = self.expectation(description: "Transition 1")
11+
let expectation2 = self.expectation(description: "Transition 2")
12+
let expectation3 = self.expectation(description: "Transition 3")
13+
let expectation4 = self.expectation(description: "Transition 4")
14+
15+
let sut = Combined {
16+
Spy { view, operation, container in
1317
XCTAssertIdentical(view, viewUsed)
1418
XCTAssertEqual(operation, operationUsed)
15-
XCTAssertIdentical(context, contextUsed)
16-
sequence.append("a")
19+
XCTAssertIdentical(container, containerUsed)
20+
expectation1.fulfill()
1721
}
18-
.combined(with: .spy { view, operation, context in
22+
Spy { view, operation, container in
1923
XCTAssertIdentical(view, viewUsed)
2024
XCTAssertEqual(operation, operationUsed)
21-
XCTAssertIdentical(context, contextUsed)
22-
sequence.append("b")
23-
})
24-
.combined(with: .spy { view, operation, context in
25+
XCTAssertIdentical(container, containerUsed)
26+
expectation2.fulfill()
27+
}
28+
Spy { view, operation, container in
2529
XCTAssertIdentical(view, viewUsed)
2630
XCTAssertEqual(operation, operationUsed)
27-
XCTAssertIdentical(context, contextUsed)
28-
sequence.append("c")
29-
})
30-
.combined(with: .spy { view, operation, context in
31+
XCTAssertIdentical(container, containerUsed)
32+
expectation3.fulfill()
33+
}
34+
Spy { view, operation, container in
3135
XCTAssertIdentical(view, viewUsed)
3236
XCTAssertEqual(operation, operationUsed)
33-
XCTAssertIdentical(context, contextUsed)
34-
sequence.append("d")
35-
})
36-
XCTAssertEqual(sequence, [])
37-
sut.prepare(viewUsed, for: operationUsed, in: contextUsed)
38-
XCTAssertEqual(sequence, ["a", "b", "c", "d"])
37+
XCTAssertIdentical(container, containerUsed)
38+
expectation4.fulfill()
39+
}
40+
}
41+
42+
sut.transition(viewUsed, for: operationUsed, in: containerUsed)
43+
44+
wait(for: [expectation1, expectation2, expectation3, expectation4], timeout: 0, enforceOrder: true)
3945
}
4046
}

0 commit comments

Comments
 (0)