broken changes
This commit is contained in:
@@ -2127,7 +2127,7 @@ extension KJamsCloneTests {
|
||||
let suite = "KJMix.XMLDetect.\(UUID())",defaults = try XCTUnwrap(UserDefaults(suiteName:suite))
|
||||
defer { defaults.removePersistentDomain(forName:suite) }
|
||||
let profile = try xmlMapping([["keyPath":"turntable1.playPause","midiMessageType":1,"midiChannel":0,"midiData":1]],endpoint:endpoint)
|
||||
let midi = DJMIDI(defaults:defaults);midi.addXMLProfiles([profile])
|
||||
let midi = DJMIDI(defaults:defaults,catalog:[profile]);midi.addXMLProfiles([profile])
|
||||
var uid: Int32 = 0;MIDIObjectGetIntegerProperty(source,kMIDIPropertyUniqueID,&uid)
|
||||
XCTAssertEqual(midi.sourceID,uid);XCTAssertEqual(midi.activeXML?.id,profile.id)
|
||||
MIDIEndpointDispose(source);source = 0;midi.refreshSources();XCTAssertEqual(midi.sourceID,0)
|
||||
@@ -2139,4 +2139,37 @@ extension KJamsCloneTests {
|
||||
midi.select(0);midi.refreshSources();XCTAssertEqual(midi.sourceID,0);XCTAssertFalse(midi.autoDetect)
|
||||
XCTAssertFalse(DJMIDI(defaults:defaults,connect:false).autoDetect)
|
||||
}
|
||||
@MainActor func testWorkspaceTabsSwitchWhileBothPlayersContinue() async throws {
|
||||
let root = FileManager.default.temporaryDirectory.appendingPathComponent(UUID().uuidString)
|
||||
defer { try? FileManager.default.removeItem(at:root) }
|
||||
let model = AppModel(storageURL:root)
|
||||
defer { model.player.stop();model.dj.a.player.stop() }
|
||||
let audio = try XCTUnwrap(Bundle(for:Self.self).resourceURL?.appendingPathComponent("Fixtures/Demo.mp3"))
|
||||
let library = try XCTUnwrap(model.library)
|
||||
let id = try library.add(title:"Tab Playback",audio:audio.path,cdg:nil)
|
||||
let song = try XCTUnwrap(try library.songs().first{$0.id == id})
|
||||
try model.player.load(song);model.dj.load(song,into:"A");model.dj.a.player.toggle()
|
||||
let host = NSHostingView(rootView:LibraryView(model:model).frame(width:1320,height:1000).preferredColorScheme(.dark))
|
||||
host.frame = NSRect(x:0,y:0,width:1320,height:1000)
|
||||
let window = NSWindow(contentRect:host.frame,styleMask:[.borderless],backing:.buffered,defer:false)
|
||||
window.contentView = host;window.setFrameOrigin(NSPoint(x:-10000,y:-10000));window.orderFront(nil);window.makeKey()
|
||||
defer { window.orderOut(nil);window.contentView = nil }
|
||||
try await Task.sleep(nanoseconds:200_000_000);host.layoutSubtreeIfNeeded()
|
||||
func descendants(_ view: NSView) -> [NSView] { [view]+view.subviews.flatMap{descendants($0)} }
|
||||
let tabs = try XCTUnwrap(descendants(host).compactMap{$0 as? NSSegmentedControl}.first{$0.segmentCount == 2})
|
||||
func selectTab(_ index: Int) async throws {
|
||||
let point = tabs.convert(NSPoint(x:tabs.bounds.width*(index == 0 ? 0.25 : 0.75),y:tabs.bounds.midY),to:nil)
|
||||
for type in [NSEvent.EventType.leftMouseDown,.leftMouseUp] {
|
||||
let event = try XCTUnwrap(NSEvent.mouseEvent(with:type,location:point,modifierFlags:[],timestamp:ProcessInfo.processInfo.systemUptime,windowNumber:window.windowNumber,context:nil,eventNumber:0,clickCount:1,pressure:type == .leftMouseDown ? 1 : 0));NSApp.sendEvent(event)
|
||||
}
|
||||
try await Task.sleep(nanoseconds:100_000_000);host.layoutSubtreeIfNeeded()
|
||||
XCTAssertEqual(tabs.selectedSegment,index)
|
||||
XCTAssertTrue(model.player.playing);XCTAssertTrue(model.dj.a.player.playing)
|
||||
XCTAssertEqual(model.player.currentSongID,id);XCTAssertEqual(model.dj.a.player.currentSongID,id)
|
||||
}
|
||||
try await selectTab(1)
|
||||
if let rep = host.bitmapImageRepForCachingDisplay(in:host.bounds) { host.cacheDisplay(in:host.bounds,to:rep);try XCTUnwrap(rep.representation(using:.png,properties:[:])).write(to:URL(fileURLWithPath:"/private/tmp/kjmix-xml-mappings/dj-tab.png")) }
|
||||
try await selectTab(0)
|
||||
if let rep = host.bitmapImageRepForCachingDisplay(in:host.bounds) { host.cacheDisplay(in:host.bounds,to:rep);try XCTUnwrap(rep.representation(using:.png,properties:[:])).write(to:URL(fileURLWithPath:"/private/tmp/kjmix-xml-mappings/karaoke-tab.png")) }
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user