tv-anarchy/Tests/TVAnarchyCoreTests/ContentIDTests.swift

38 lines
1.8 KiB
Swift

import XCTest
@testable import TVAnarchyCore
final class ContentIDTests: XCTestCase {
/// The SAME episode in two libraries (different folder/release names, different
/// rips) normalizes to the SAME canonical id the basis for cross-library dedup.
func testSameEpisodeAcrossLibrariesShareCanonicalID() {
let a = ContentID.canonical(work: "DAN DA DAN", season: 1, episode: 3)
let b = ContentID.canonical(work: "DANDADAN", season: 1, episode: 3)
let c = ContentID.canonical(work: "Dan.Da.Dan", season: 1, episode: 3)
XCTAssertEqual(a, b)
XCTAssertEqual(b, c)
XCTAssertEqual(a, "dandadan/s1e3")
}
func testDifferentEpisodesDiffer() {
XCTAssertNotEqual(ContentID.canonical(work: "Daria", season: 2, episode: 1),
ContentID.canonical(work: "Daria", season: 3, episode: 1))
}
/// Quality is excluded by default (same content), opt-in to distinguish rips.
func testQualityIsOptIn() {
let base = ContentID.canonical(work: "Daria", season: 3, episode: 1)
XCTAssertEqual(ContentID.withQuality(base, quality: nil), base)
XCTAssertEqual(ContentID.withQuality(base, quality: "1080p"), "daria/s3e1@1080p")
XCTAssertNotEqual(ContentID.withQuality(base, quality: "1080p"),
ContentID.withQuality(base, quality: "720p"))
}
/// The digest is stable, fixed-length, and reveals no title (for k-anonymity
/// counters / the wire).
func testDigestStableAndOpaque() {
let id = ContentID.canonical(work: "Daria", season: 3, episode: 1)
XCTAssertEqual(ContentID.digest(id), ContentID.digest(id)) // stable
XCTAssertEqual(ContentID.digest(id).count, 16)
XCTAssertFalse(ContentID.digest(id).contains("daria")) // opaque
}
}