# ============================================================================ # Music Videos 类目测试(src/lib/media/filename.sh / identify.sh) # ============================================================================ setup() { TEST_DIR="$(mktemp -d)" SOURCE_DIR="$TEST_DIR" FOLDER_MUSICVIDEOS="音乐视频" FOLDER_UNKNOWN="未知" SPECIAL_WORDS_CAT=() mapfile -t MUSICVIDEO_WORDS < <(echo "$MUSICVIDEO_WORDS_TEMPLATE" | jq -r '.[]') mapfile -t SPECIAL_WORDS < <(echo "$SPECIAL_WORDS_TEMPLATE" | jq -r '.[]') MAIN_COUNT_CACHE=() VIDEO_EXTS=(mp4 mkv) } teardown() { rm -rf "$TEST_DIR" } # detect_musicvideo:目录信号(Music Videos / MV / Live 目录 → musicvideo) test_musicvideo_dir_signal() { mkdir -p "$TEST_DIR/Music Videos/周杰伦" assert_eq "musicvideo|晴天|||||" \ "$(parse_media_filename "$TEST_DIR/Music Videos/周杰伦/晴天 [MV].mkv")" assert_eq "musicvideo|七里香|||||" \ "$(parse_media_filename "$TEST_DIR/Music Videos/周杰伦/七里香.mp4")" mkdir -p "$TEST_DIR/Live" assert_eq "musicvideo|演唱会|||||" \ "$(parse_media_filename "$TEST_DIR/Live/演唱会.mkv")" } # detect_musicvideo:文件名信号([MV] + "歌手 - 歌名" 模式 → musicvideo) test_musicvideo_filename_signal() { assert_eq "musicvideo|周杰伦 - 晴天|||||" \ "$(parse_media_filename "$TEST_DIR/周杰伦 - 晴天 [MV].mkv")" assert_eq "musicvideo|歌手 - 歌|||||" \ "$(parse_media_filename "$TEST_DIR/歌手 - 歌 [Live].mkv")" } # detect_musicvideo:双命中歧义([MV] 无 " - " → 保持特典路径) test_musicvideo_dual_hit_keeps_special() { assert_eq "tv|某动画||0|1||MV" \ "$(parse_media_filename "$TEST_DIR/某动画 [MV].mkv")" } # detect_musicvideo:目录名含词但不精确匹配 → 不误判(Muv-Luv / tmp.xxx) test_musicvideo_dir_exact_match_only() { assert_eq "tv|Muv-Luv||01|01||" \ "$(parse_media_filename "$TEST_DIR/Muv-Luv S01E01.mkv")" assert_eq "tv|Show||1|07||" \ "$(parse_media_filename "$TEST_DIR/Show [07].mkv")" } # identify_musicvideo:目录名解析 artist("歌手 - 歌名" 取首段;无分隔符整名) test_identify_musicvideo_artist_from_dir() { mkdir -p "$TEST_DIR/Music Videos/周杰伦" assert_eq "音乐视频/周杰伦/晴天|晴天.mkv" \ "$(identify_musicvideo "$TEST_DIR/Music Videos/周杰伦/晴天.mkv" "晴天" mkv)" mkdir -p "$TEST_DIR/歌手 - 歌名" assert_eq "音乐视频/歌手/x|x.mkv" \ "$(identify_musicvideo "$TEST_DIR/歌手 - 歌名/x.mkv" "x" mkv)" } # identify_musicvideo:无元数据/目录线索 → FOLDER_UNKNOWN 兜底 test_identify_musicvideo_unknown_artist() { assert_eq "音乐视频/未知/歌|歌.mkv" \ "$(identify_musicvideo "$TEST_DIR/歌.mkv" "歌" mkv)" } # fallback_naming:musicvideo 分支(Unknown 艺术家) test_fallback_naming_musicvideo() { assert_eq "音乐视频/未知/歌|歌.mkv" \ "$(fallback_naming "musicvideo" "歌" "" "" "" "" "" "mkv")" }