import { detectMediaType, parseMovieFilename, parseMovieFromPath, parseSeriesFilename, parseSeriesFromPath, } from "./filename-parser"; function assert(condition: unknown, message: string): asserts condition { if (!condition) throw new Error(message); } function run() { const movie = parseMovieFilename( "The.Matrix.1999.2160p.UHD.BluRay.REMUX.HEVC.TrueHD.Atmos.mkv" ); assert(movie, "movie parse failed"); assert(movie.title === "The Matrix", `title=${movie.title}`); assert(movie.year === 1999, `year=${movie.year}`); assert(movie.resolution === "2160p", `resolution=${movie.resolution}`); const series = parseSeriesFilename("Breaking.Bad.S03E04.1080p.BluRay.mkv"); assert(series, "series parse failed"); assert(series.title === "Breaking Bad", `title=${series.title}`); assert(series.season === 3, `season=${series.season}`); assert(series.episode === 4, `episode=${series.episode}`); const alt = parseSeriesFilename("Show.Name.1x02.720p.mkv"); assert(alt?.season === 1 && alt.episode === 2, "1x02 pattern failed"); assert(detectMediaType("Movie.2020.mkv") === "movie", "detect movie"); assert(detectMediaType("Show.S01E01.mkv") === "episode", "detect episode"); assert(detectMediaType("readme.txt") === null, "detect non-video"); const folderMovie = parseMovieFromPath("/media/movies/Inception (2010)/Inception.mkv"); assert(folderMovie?.title === "Inception" && folderMovie.year === 2010, "folder movie"); const folderSeries = parseSeriesFromPath( "/media/series/Breaking Bad/Season 01/Breaking.Bad.S01E01.mkv" ); assert( folderSeries?.title === "Breaking Bad" && folderSeries.season === 1 && folderSeries.episode === 1, "folder series" ); console.log("filename-parser tests passed"); } run();