import XCTest #if canImport(cmux_DEV) @testable import cmux_DEV #elseif canImport(cmux) @testable import cmux #endif @MainActor final class TabManagerSessionSnapshotTests: XCTestCase { func testSessionSnapshotSerializesWorkspacesAndRestoreRebuildsSelection() { let manager = TabManager() guard let firstWorkspace = manager.selectedWorkspace else { XCTFail("Expected initial workspace") return } firstWorkspace.setCustomTitle("First") let secondWorkspace = manager.addWorkspace(select: true) secondWorkspace.setCustomTitle("Second") XCTAssertEqual(manager.tabs.count, 2) XCTAssertEqual(manager.selectedTabId, secondWorkspace.id) let snapshot = manager.sessionSnapshot(includeScrollback: false) XCTAssertEqual(snapshot.workspaces.count, 2) XCTAssertEqual(snapshot.selectedWorkspaceIndex, 1) let restored = TabManager() restored.restoreSessionSnapshot(snapshot) XCTAssertEqual(restored.tabs.count, 2) XCTAssertEqual(restored.selectedTabId, restored.tabs[1].id) XCTAssertEqual(restored.tabs[0].customTitle, "First") XCTAssertEqual(restored.tabs[1].customTitle, "Second") } func testRestoreSessionSnapshotWithNoWorkspacesKeepsSingleFallbackWorkspace() { let manager = TabManager() let emptySnapshot = SessionTabManagerSnapshot( selectedWorkspaceIndex: nil, workspaces: [] ) manager.restoreSessionSnapshot(emptySnapshot) XCTAssertEqual(manager.tabs.count, 1) XCTAssertNotNil(manager.selectedTabId) } }