aerospace fork
Something went wrong. Try again.
3.4 kB · 89 lines
Swift
at main
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990@testable import AppBundleimport XCTest
@MainActorfinal class TreeNodeTest: XCTestCase { override func setUp() async throws { setUpWorkspacesForTests() }
func testChildParentCyclicReferenceMemoryLeak() { let workspace = Workspace.get(byName: name) // Don't cache root node let window = TestWindow.new(id: 1, parent: workspace.rootTilingContainer)
XCTAssertTrue(window.parent != nil) workspace.rootTilingContainer.unbindFromParent() XCTAssertTrue(window.parent == nil) }
func testIsEffectivelyEmpty() { let workspace = Workspace.get(byName: name)
XCTAssertTrue(workspace.isEffectivelyEmpty) weak let window: TestWindow? = .new(id: 1, parent: workspace.rootTilingContainer) XCTAssertNotEqual(window, nil) XCTAssertTrue(!workspace.isEffectivelyEmpty) window!.unbindFromParent() XCTAssertTrue(workspace.isEffectivelyEmpty)
// Don't save to local variable TestWindow.new(id: 2, parent: workspace.rootTilingContainer) XCTAssertTrue(!workspace.isEffectivelyEmpty) }
func testNormalizeContainers_dontRemoveRoot() { let workspace = Workspace.get(byName: name) weak let root = workspace.rootTilingContainer func test() { XCTAssertNotEqual(root, nil) XCTAssertTrue(root!.isEffectivelyEmpty) workspace.normalizeContainers() XCTAssertNotEqual(root, nil) } test()
config.enableNormalizationFlattenContainers = true test() }
func testNormalizeContainers_singleWindowChild() { config.enableNormalizationFlattenContainers = true let workspace = Workspace.get(byName: name) workspace.rootTilingContainer.apply { TestWindow.new(id: 0, parent: $0) TilingContainer.newHTiles(parent: $0, adaptiveWeight: 1).apply { TestWindow.new(id: 1, parent: $0) } } workspace.normalizeContainers() assertEquals( .h_tiles([.window(0), .window(1)]), workspace.rootTilingContainer.layoutDescription, ) }
func testNormalizeContainers_removeEffectivelyEmpty() { let workspace = Workspace.get(byName: name) workspace.rootTilingContainer.apply { TilingContainer.newVTiles(parent: $0, adaptiveWeight: 1).apply { _ = TilingContainer.newHTiles(parent: $0, adaptiveWeight: 1) } } assertEquals(workspace.rootTilingContainer.children.count, 1) workspace.normalizeContainers() assertEquals(workspace.rootTilingContainer.children.count, 0) }
func testNormalizeContainers_flattenContainers() { let workspace = Workspace.get(byName: name) // Don't cache root node workspace.rootTilingContainer.apply { TilingContainer.newVTiles(parent: $0, adaptiveWeight: 1).apply { TestWindow.new(id: 1, parent: $0, adaptiveWeight: 1) } } workspace.normalizeContainers() XCTAssertTrue(workspace.rootTilingContainer.children.singleOrNil() is TilingContainer)
config.enableNormalizationFlattenContainers = true workspace.normalizeContainers() XCTAssertTrue(workspace.rootTilingContainer.children.singleOrNil() is TestWindow) }}