Fix preference tests

This commit is contained in:
Carson Katri 2022-06-30 08:11:46 -04:00
parent 510584cb15
commit 44a61d60db
2 changed files with 6 additions and 47 deletions

View File

@ -41,7 +41,9 @@ final class PreferenceTests: XCTestCase {
}
let reconciler = TestFiberRenderer(.root, size: .init(width: 500, height: 500))
.render(TestView())
reconciler.turnRunLoop()
reconciler.fiberChanged(reconciler.current)
reconciler.turnRunLoop()
}
func testOverlay() {
@ -52,25 +54,16 @@ final class PreferenceTests: XCTestCase {
.preference(key: TestKey.self, value: 3)
.overlayPreferenceValue(TestKey.self) {
Text("\($0)")
.identified(by: "overlay")
}
}
}
let reconciler = TestFiberRenderer(.root, size: .init(width: 500, height: 500))
.render(TestView())
var overlayValue: FiberReconciler<TestFiberRenderer>.Fiber? {
reconciler.current // RootView
.child? // LayoutView
.child? // ModifiedContent
.child? // _ViewModifier_Content
.child? // TestView
.child? // _DelayedPreferenceView
.child? // ModifiedContent
.child? // _OverlayLayout
.child?.sibling? // _PreferenceReadingView
.child
}
reconciler.expect(overlayValue, equals: Text("5"))
reconciler.turnRunLoop()
XCTAssertEqual(reconciler.findView(id: "overlay").view, Text("5"))
}
}

View File

@ -20,40 +20,6 @@ import XCTest
@_spi(TokamakCore) @testable import TokamakCore
import TokamakTestRenderer
extension FiberReconciler {
/// Expect a `Fiber` to represent a particular `View` type.
func expect<V>(
_ fiber: Fiber?,
represents viewType: V.Type,
_ message: String? = nil
) where V: View {
guard case let .view(view, _) = fiber?.content else {
return XCTAssert(false, "Fiber does not exit")
}
if let message = message {
XCTAssert(type(of: view) == viewType, message)
} else {
XCTAssert(type(of: view) == viewType)
}
}
/// Expect a `Fiber` to represent a `View` matching`testView`.
func expect<V>(
_ fiber: Fiber?,
equals testView: V,
_ message: String? = nil
) where V: View & Equatable {
guard case let .view(fiberView, _) = fiber?.content else {
return XCTAssert(false, "Fiber does not exit")
}
if let message = message {
XCTAssertEqual(fiberView as? V, testView, message)
} else {
XCTAssertEqual(fiberView as? V, testView)
}
}
}
final class VisitorTests: XCTestCase {
func testCounter() {
struct TestView: View {