import Testing @testable import AudioProvider @Suite("Wer nicht in den Mixer gehört") struct MixerExclusionTests { private let own = "com.scarriffleservices.onyx" @Test("Onyx taucht in seiner eigenen Liste nicht auf") func ownProcessIsHidden() { // Der Mixer gibt den Ton der bearbeiteten Programme selbst aus und wird // dadurch zur Tonquelle. Stünde er in der eigenen Liste, ließe er sich // abgreifen — und hörte seine eigene Ausgabe wieder mit. #expect(ProcessVisibility.isExcluded(bundleID: own, ownBundleID: own)) } @Test("Fremde Programme bleiben sichtbar") func othersRemain() { for bundleID in ["com.google.Chrome", "org.mozilla.firefox", "com.spotify.client", "com.apple.Music"] { #expect(!ProcessVisibility.isExcluded(bundleID: bundleID, ownBundleID: own)) } } @Test("Systemdienste bleiben draußen") func systemServicesStayOut() { #expect(ProcessVisibility.isExcluded(bundleID: "com.apple.audio.coreaudiod", ownBundleID: own)) #expect(ProcessVisibility.isExcluded(bundleID: "com.apple.coremedia", ownBundleID: own)) } @Test("Ohne eigene Kennung wird nichts fälschlich ausgeschlossen") func missingOwnIdentifierExcludesNothingExtra() { // Im Test gibt es kein App-Bundle. Das darf nicht dazu führen, dass // plötzlich Programme mit leerer Kennung verschwinden. #expect(!ProcessVisibility.isExcluded(bundleID: "com.google.Chrome", ownBundleID: nil)) #expect(!ProcessVisibility.isExcluded(bundleID: "", ownBundleID: "")) } }