39 lines
1.9 KiB
Swift
39 lines
1.9 KiB
Swift
import XCTest
|
|
@testable import TVAnarchyCore
|
|
|
|
final class MediaPathsTests: XCTestCase {
|
|
private var home: String { FileManager.default.homeDirectoryForCurrentUser.path }
|
|
|
|
func testPlumMountsTranslateToBlack() {
|
|
// ~/_/bigdisk/_/media/... and ~/media/... both map to /bigdisk/_/media/...
|
|
XCTAssertEqual(MediaPaths.toRemote(home + "/_/bigdisk/_/media/tv/Psych/e.mkv"),
|
|
"/bigdisk/_/media/tv/Psych/e.mkv")
|
|
XCTAssertEqual(MediaPaths.toRemote(home + "/media/anime/Frieren/e.mkv"),
|
|
"/bigdisk/_/media/anime/Frieren/e.mkv")
|
|
// the broader ~/_/bigdisk mount maps to /bigdisk
|
|
XCTAssertEqual(MediaPaths.toRemote(home + "/_/bigdisk/other/x"), "/bigdisk/other/x")
|
|
}
|
|
|
|
func testFileURIStrippedAndPassthrough() {
|
|
XCTAssertEqual(MediaPaths.toRemote("file://" + home + "/media/tv/x.mkv"),
|
|
"/bigdisk/_/media/tv/x.mkv")
|
|
// an already-remote / unknown path is returned unchanged
|
|
XCTAssertEqual(MediaPaths.toRemote("/bigdisk/_/media/tv/x.mkv"), "/bigdisk/_/media/tv/x.mkv")
|
|
XCTAssertEqual(MediaPaths.toRemote("/some/other/path.mkv"), "/some/other/path.mkv")
|
|
}
|
|
|
|
func testStreamURLPassesThroughResolvedURLs() {
|
|
for u in ["file:///x.mkv", "http://h/x.mkv", "https://h/x.mkv", "sftp://u@h/x.mkv"] {
|
|
XCTAssertEqual(MediaPaths.toStreamURL(u), u)
|
|
}
|
|
}
|
|
|
|
func testStreamURLWrapsUndownloadedPathAsFileURL() {
|
|
// VLC can only open a local file (no NFS, no working sftp). A path with no
|
|
// downloaded copy becomes a best-effort file:// URL — PlayerController's
|
|
// reroute-to-black guard catches the not-local case before it reaches VLC.
|
|
// Uses a basename that can't exist in the real downloads dir.
|
|
let p = "/bigdisk/_/media/tv/Psych/__tva_undownloaded_\(ProcessInfo.processInfo.globallyUniqueString).mkv"
|
|
XCTAssertEqual(MediaPaths.toStreamURL(p), "file://" + p)
|
|
}
|
|
}
|