aboutsummaryrefslogtreecommitdiffstats
path: root/packages/meshbay-node/tests/test_title_parse.py
diff options
context:
space:
mode:
Diffstat (limited to 'packages/meshbay-node/tests/test_title_parse.py')
-rw-r--r--packages/meshbay-node/tests/test_title_parse.py44
1 files changed, 44 insertions, 0 deletions
diff --git a/packages/meshbay-node/tests/test_title_parse.py b/packages/meshbay-node/tests/test_title_parse.py
index 03fb588..ac4d434 100644
--- a/packages/meshbay-node/tests/test_title_parse.py
+++ b/packages/meshbay-node/tests/test_title_parse.py
@@ -6,12 +6,14 @@ is a manual acceptance step (§11), not something this repo's corpus holds.
from meshbay_node.indexer.title_parse import (
ParsedName,
+ clean_query,
leading_episode_number,
naive_title,
parse_episode_filename,
parse_movie_filename,
season_from_folder_name,
sequel_variants,
+ year_in,
)
@@ -69,6 +71,48 @@ def test_sequel_variants_empty_when_no_trailing_digit():
assert sequel_variants("Some Movie") == []
+# ── §10.1/V10: wider sequel-index handling ──────────────────────────────────
+
+def test_sequel_variants_roman_numeral_offers_the_digit_form():
+ v = sequel_variants("Old Frontier III")
+ assert "Old Frontier" in v
+ assert "Old Frontier 3" in v
+
+
+def test_sequel_variants_strips_a_part_keyword_wrapper():
+ v = sequel_variants("Some Saga Part 2")
+ assert "Some Saga" in v
+ assert "Some Saga II" in v
+
+
+def test_sequel_variants_reads_a_spelled_out_index():
+ v = sequel_variants("Story Chapter Three")
+ assert "Story" in v
+ assert "Story 3" in v and "Story III" in v
+
+
+def test_sequel_variants_ignores_a_trailing_word_that_is_not_an_index():
+ assert sequel_variants("The Dark Knight") == []
+ assert sequel_variants("In Bruges") == []
+
+
+def test_sequel_variants_ignores_a_four_digit_year_suffix():
+ assert sequel_variants("Blade Runner 2049") == []
+
+
+def test_year_in_lifts_a_year_from_a_show_folder_name():
+ assert year_in("Some.Show.2022.S01") == 2022
+ assert year_in("Some Show") is None
+ assert year_in("Episode 100 of 2010") == 2010
+
+
+def test_clean_query_despaces_a_folder_name_without_eating_the_last_word():
+ # naive_title would rsplit on the last dot and drop ".Name"
+ assert clean_query("Some.Show.Name") == "Some Show Name"
+ assert clean_query("Some.Show.Name.S01") == "Some Show Name S01"
+ assert naive_title("Some.Show.Name") != "Some Show Name" # the trap it avoids
+
+
# ── bug 2026-08-29: guessit peels "Volume N" off the title ─────────────────
def test_movie_volume_number_is_folded_back_into_the_title():