import { describe, expect, it } from "vitest"; import { replacementCovers, replacementScope } from "./replacement.ts"; describe("one-time replacement coverage", () => { it("movies require the same Part", () => { const old = replacementScope("Movie.2020.720p.Part1.mkv", "movie"); expect(replacementCovers(old, [replacementScope("Movie.2020.1080p.Part2.mkv", "movie")])).toBe(false); expect(replacementCovers(old, [replacementScope("Movie.2020.1080p.Part1.mkv", "movie")])).toBe(true); }); it("replaces only episodes fully covered by successful files, preserving indivisible merged ranges", () => { const success = [1, 2, 3, 5, 6].map((n) => replacementScope(`Show.S01E${String(n).padStart(2, "0")}.mkv`, "tv")); expect(replacementCovers(replacementScope("Show.S01E01.mkv", "tv"), success)).toBe(true); expect(replacementCovers(replacementScope("Show.S01E04.mkv", "tv"), success)).toBe(false); expect(replacementCovers(replacementScope("Show.S01E07.mkv", "tv"), success)).toBe(false); expect(replacementCovers(replacementScope("Show.S01E01-E10.mkv", "tv"), success)).toBe(false); expect(replacementCovers(replacementScope("Show.S02E01.mkv", "tv"), success)).toBe(false); expect(replacementCovers(replacementScope("Show.Special.mkv", "tv"), success)).toBe(false); }); });