From f9bd68e9fab4c2b8f0b44f37044b0d78b04b36e9 Mon Sep 17 00:00:00 2001 From: Benjamin Date: Sat, 28 Feb 2026 20:51:37 +1000 Subject: [PATCH 1/3] fix: improve analysis heuristics with structural evidence signals Replace brittle hard-coded thresholds with multi-signal approaches that combine structural evidence from disc navigation with shape heuristics. Chapter-split detection (ordering.py): - Accept optional ig_chapter_marks from IG menu buttons - Require est_count >= 3 OR IG mark confirmation for splitting - Prevents single ~50min movies from being split into 2 episodes Digital archive detection (classify.py): - Three independent signals lower the item-count floor: 1. Item count >= 20 (strong shape, sufficient alone) 2. Title hint from disc navigation (lowers floor to 5) 3. No audio streams in play items (lowers floor to 5) - All combined with base shape checks (avg <= 0.5s, unique ratio >= 0.8) Analysis pipeline fixes (__init__.py): - Pass IG chapter marks through to order_episodes() - Compute title_hint_mpls set from hints for classify_playlists() - Fix variant collapse to check clip overlap before collapsing - Skip commentary detection on navigation pages with mixed targets - Normalize ch_start=0 to None for digital_archive dedup Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- bdpl/analyze/__init__.py | 42 ++++++++++++++++++++++-- bdpl/analyze/classify.py | 61 +++++++++++++++++++++++++++++++---- bdpl/analyze/ordering.py | 22 +++++++++++-- tests/test_digital_archive.py | 7 +++- 4 files changed, 121 insertions(+), 11 deletions(-) diff --git a/bdpl/analyze/__init__.py b/bdpl/analyze/__init__.py index 1f4dcc0..b90bcc0 100644 --- a/bdpl/analyze/__init__.py +++ b/bdpl/analyze/__init__.py @@ -310,11 +310,26 @@ def _detect_special_features( # chapter-selection / main-play page. if h.jump_title in chapter_selection_jt: continue + # Skip if this page also has buttons targeting non-episode + # playlists — the episode button is likely navigation (e.g. + # "back to movie") rather than a commentary feature. + page_has_non_ep_target = any( + title_to_mpls.get(jt_val - 1) not in ep_playlists + for jt_val in page_jt.get(h.page_id, set()) + if title_to_mpls.get(jt_val - 1) is not None + ) + if page_has_non_ep_target: + continue category = "commentary" else: category = classifications.get(mpls, "extra") ch_start = h.register_sets.get(2) + # For digital_archive playlists, ch_start=0 means "play from + # beginning" — normalise to None so it deduplicates with the + # title-hint fallback entry for the whole playlist. + if category == "digital_archive" and ch_start == 0: + ch_start = None key = (mpls, ch_start) if key in seen: continue @@ -864,6 +879,7 @@ def _maybe_collapse_variant_episodes( episodes: list[Episode], playlists: list[Playlist], variant_mpls: set[str], + all_playlists: list[Playlist] | None = None, ) -> list[Episode]: """Collapse chapter-split episodes back to one when variant dedup caused it. @@ -897,6 +913,18 @@ def _maybe_collapse_variant_episodes( if playlist is None: return episodes + # Only collapse when a removed variant actually shares clips with the + # episode playlist. Unrelated variant groups (e.g. duplicate specials) + # should not trigger a collapse. + if all_playlists and playlist.play_items: + ep_clips = {pi.clip_id for pi in playlist.play_items} + has_related_variant = any( + pl.mpls in variant_mpls and any(pi.clip_id in ep_clips for pi in pl.play_items) + for pl in all_playlists + ) + if not has_related_variant: + return episodes + segments = [ SegmentRef( key=pi.segment_key(), @@ -1075,11 +1103,20 @@ def scan_disc( label_segments(unique_playlists, segment_freq) # 5. Classify playlists - classifications = classify_playlists(unique_playlists, play_all) + title_hint_mpls: set[str] = set() + for pl_nums in hints.get("title_playlists", {}).values(): + for n in pl_nums: + title_hint_mpls.add(f"{n:05d}.mpls") + classifications = classify_playlists( + unique_playlists, play_all, title_hint_mpls=title_hint_mpls + ) analysis["classifications"] = classifications # 6. Order episodes - episodes = order_episodes(unique_playlists, play_all, classifications) + ig_marks = hints.get("ig_menu", {}).get("chapter_marks") + episodes = order_episodes( + unique_playlists, play_all, classifications, ig_chapter_marks=ig_marks + ) episodes = _maybe_keep_single_title_episode( episodes, @@ -1094,6 +1131,7 @@ def scan_disc( episodes, unique_playlists, variant_mpls, + all_playlists=playlists, ) # If episodes came from Play All decomposition, reclassify playlists diff --git a/bdpl/analyze/classify.py b/bdpl/analyze/classify.py index 5f67081..933ce85 100644 --- a/bdpl/analyze/classify.py +++ b/bdpl/analyze/classify.py @@ -12,19 +12,58 @@ _PREVIEW_MAX = 60 _BODY_MIN_S = 300 # 5 minutes _DIGITAL_ARCHIVE_MIN_ITEMS = 20 +_DIGITAL_ARCHIVE_HINT_MIN_ITEMS = 5 _DIGITAL_ARCHIVE_MAX_TOTAL_S = 300 _DIGITAL_ARCHIVE_MAX_AVG_ITEM_S = 0.5 _DIGITAL_ARCHIVE_MIN_UNIQUE_RATIO = 0.8 +_DIGITAL_ARCHIVE_NO_AUDIO_RATIO = 0.8 +_AUDIO_CODECS = frozenset( + { + "LPCM", + "AC3", + "E-AC3", + "DTS", + "DTS-HD", + "DTS-HD MA", + "TrueHD", + } +) + + +def _items_lack_audio(pl: Playlist) -> bool: + """Return True when most play items have no audio streams (still images).""" + if not pl.play_items: + return False + no_audio = sum( + 1 for pi in pl.play_items if not any(s.codec in _AUDIO_CODECS for s in pi.streams) + ) + return no_audio / len(pl.play_items) >= _DIGITAL_ARCHIVE_NO_AUDIO_RATIO -def is_digital_archive_playlist(pl: Playlist) -> bool: +def is_digital_archive_playlist( + pl: Playlist, + *, + has_title_hint: bool = False, +) -> bool: """Return True when playlist shape resembles an image archive. - Heuristic targets menu-like playlists made of many ultra-short items - (often one still image per clip) and avoids short video extras. + Three independent signals lower the item-count floor when combined + with the base shape checks (avg duration ≤ 0.5 s, unique ratio ≥ 0.8): + + 1. **Item count ≥ 20** — strong shape signal, sufficient alone. + 2. **Title hint** — disc navigation references the playlist as real + content. Lowers floor to 5 items. + 3. **No audio streams** — play items contain only video (+ IG overlay), + characteristic of still-image galleries. Lowers floor to 5 items. """ item_count = len(pl.play_items) - if item_count < _DIGITAL_ARCHIVE_MIN_ITEMS: + + # Determine minimum item threshold based on available evidence. + has_structural_evidence = has_title_hint or _items_lack_audio(pl) + min_items = ( + _DIGITAL_ARCHIVE_HINT_MIN_ITEMS if has_structural_evidence else _DIGITAL_ARCHIVE_MIN_ITEMS + ) + if item_count < min_items: return False total_s = pl.duration_seconds @@ -110,13 +149,23 @@ def label_segments(playlists: list[Playlist], segment_freq: dict[tuple, int]) -> pi.label = "UNKNOWN" -def classify_playlists(playlists: list[Playlist], play_all: list[Playlist]) -> dict[str, str]: +def classify_playlists( + playlists: list[Playlist], + play_all: list[Playlist], + title_hint_mpls: set[str] | None = None, +) -> dict[str, str]: """Return dict mpls_name -> category string. + Parameters: + title_hint_mpls: MPLS names referenced by disc title navigation + hints. Used as structural evidence for digital archive + detection when the item count is below the strict threshold. + Categories: 'episode', 'play_all', 'menu', 'extra', 'bumper', 'creditless_op', 'creditless_ed', 'digital_archive'. """ play_all_names = {pl.mpls for pl in play_all} + hint_names = title_hint_mpls or set() result: dict[str, str] = {} for pl in playlists: @@ -126,7 +175,7 @@ def classify_playlists(playlists: list[Playlist], play_all: list[Playlist]) -> d result[pl.mpls] = "play_all" continue - if is_digital_archive_playlist(pl): + if is_digital_archive_playlist(pl, has_title_hint=pl.mpls in hint_names): result[pl.mpls] = "digital_archive" continue diff --git a/bdpl/analyze/ordering.py b/bdpl/analyze/ordering.py index 7a49282..6f09d52 100644 --- a/bdpl/analyze/ordering.py +++ b/bdpl/analyze/ordering.py @@ -106,12 +106,18 @@ def _episodes_from_play_all( def _episodes_from_chapters( playlist: Playlist, + ig_chapter_marks: list[int] | None = None, ) -> list[Episode]: """Split a single long playlist into episodes using chapter marks. Used when a playlist contains one (or few) very long play item(s) with multiple episodes encoded back-to-back, distinguishable only by chapters. + When *ig_chapter_marks* are provided (from IG menu buttons), they serve as + structural confirmation that the playlist contains multiple episodes. + Without such evidence, a minimum of 3 estimated episodes is required — + an ``est_count`` of 2 is ambiguous (could be a single ~50 min movie). + Heuristic: group consecutive chapters into blocks whose total duration falls within episode range (10–45 min). When a running block exceeds the expected episode length, start a new episode at the chapter boundary. @@ -139,6 +145,13 @@ def _episodes_from_chapters( if est_count <= 1: return [] # Not worth splitting + # IG chapter marks provide structural evidence of multiple episodes. + # Without such evidence, require est_count >= 3 because est_count == 2 + # (~50 min total) is ambiguous — could be a single movie. + has_ig_confirmation = ig_chapter_marks is not None and len(ig_chapter_marks) >= 2 + if est_count <= 2 and not has_ig_confirmation: + return [] + # Target duration per episode target_dur_ms = total_dur_ms / est_count # Tolerance: 60% to 140% of target @@ -222,9 +235,14 @@ def order_episodes( playlists: list[Playlist], play_all_playlists: list[Playlist], classifications: dict[str, str] | None = None, + ig_chapter_marks: list[int] | None = None, ) -> list[Episode]: """Infer ordered episode list. + Parameters: + ig_chapter_marks: Chapter indices from IG menu buttons that confirm + episode boundaries. Passed through to chapter-splitting logic. + Strategy: 1. If there are individual episode-length playlists (>10 min, not in play_all list) with unique body segments, use those. @@ -255,7 +273,7 @@ def order_episodes( pa_episodes = _episodes_from_play_all(best_pa) # If play-all decomposition yields only 1 episode, try chapter-based if len(pa_episodes) <= 1 and best_pa.chapters: - ch_episodes = _episodes_from_chapters(best_pa) + ch_episodes = _episodes_from_chapters(best_pa, ig_chapter_marks) if len(ch_episodes) > len(pa_episodes): pa_episodes = ch_episodes @@ -285,7 +303,7 @@ def order_episodes( # it likely contains multiple episodes in a single m2ts if len(individual_eps) == 1: candidate = individual_eps[0] - ch_episodes = _episodes_from_chapters(candidate) + ch_episodes = _episodes_from_chapters(candidate, ig_chapter_marks) if len(ch_episodes) >= 2: return ch_episodes return _episodes_from_individual(individual_eps) diff --git a/tests/test_digital_archive.py b/tests/test_digital_archive.py index 805f1bb..626b912 100644 --- a/tests/test_digital_archive.py +++ b/tests/test_digital_archive.py @@ -11,6 +11,7 @@ export_digital_archive_images, get_digital_archive_dry_run, ) +from bdpl.model import StreamInfo from tests.builders import ( build_disc_analysis, build_play_item, @@ -27,8 +28,12 @@ def test_digital_archive_playlist_detected_from_structure() -> None: def test_digital_archive_playlist_rejects_low_item_count() -> None: - """Few short items should not trigger digital archive classification.""" + """Few short items with audio should not trigger digital archive classification.""" items = [build_play_item(f"{i:05d}", 0.0, 0.04) for i in range(10)] + # Add audio streams so the no-audio signal does not lower the threshold. + audio = StreamInfo(pid=0x1100, stream_type=128, codec="LPCM", lang="jpn") + for item in items: + item.streams = [audio] pl = build_playlist("00003.mpls", items) assert not is_digital_archive_playlist(pl) From 0039446a1ffab8a9982233e7edab75b44a80354d Mon Sep 17 00:00:00 2001 From: Benjamin Date: Sat, 28 Feb 2026 20:51:54 +1000 Subject: [PATCH 2/3] test: add disc15-19 metadata-only fixtures Five new Blu-ray disc fixtures covering chapter-split episodes, OVA specials, digital archives, and single-movie discs: - disc15: 4 chapter-split episodes, no specials (similar to disc14) - disc16: 4 chapter-split episodes + 4 specials (2 extras, 2 creditless EDs) - disc17: 1 OVA episode + 1 digital archive (44 still-image items) - disc18: 1 movie + 2 specials (1 extra, 1 creditless ED) - disc19: 1 OVA episode + 1 digital archive (17 items, hint-backed) Each fixture contains only structural metadata (MPLS, CLPI, index.bdmv, MovieObject.bdmv, ICS menu data, generic disc title XML). No copyrighted media content is included. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- tests/fixtures/disc15/CLIPINF/00000.clpi | Bin 0 -> 428 bytes tests/fixtures/disc15/CLIPINF/00001.clpi | Bin 0 -> 564 bytes tests/fixtures/disc15/CLIPINF/00002.clpi | Bin 0 -> 504 bytes tests/fixtures/disc15/CLIPINF/00003.clpi | Bin 0 -> 292 bytes tests/fixtures/disc15/CLIPINF/00004.clpi | Bin 0 -> 292 bytes tests/fixtures/disc15/CLIPINF/00006.clpi | Bin 0 -> 43896 bytes tests/fixtures/disc15/CLIPINF/00007.clpi | Bin 0 -> 556 bytes tests/fixtures/disc15/META/DL/bdmt_eng.xml | 6 ++++++ tests/fixtures/disc15/MovieObject.bdmv | Bin 0 -> 1046 bytes tests/fixtures/disc15/PLAYLIST/00000.mpls | Bin 0 -> 280 bytes tests/fixtures/disc15/PLAYLIST/00001.mpls | Bin 0 -> 322 bytes tests/fixtures/disc15/PLAYLIST/00002.mpls | Bin 0 -> 796 bytes tests/fixtures/disc15/ics_menu.bin | Bin 0 -> 12021 bytes tests/fixtures/disc15/index.bdmv | Bin 0 -> 120 bytes tests/fixtures/disc16/CLIPINF/00000.clpi | Bin 0 -> 428 bytes tests/fixtures/disc16/CLIPINF/00001.clpi | Bin 0 -> 564 bytes tests/fixtures/disc16/CLIPINF/00002.clpi | Bin 0 -> 504 bytes tests/fixtures/disc16/CLIPINF/00003.clpi | Bin 0 -> 292 bytes tests/fixtures/disc16/CLIPINF/00004.clpi | Bin 0 -> 292 bytes tests/fixtures/disc16/CLIPINF/00005.clpi | Bin 0 -> 44876 bytes tests/fixtures/disc16/CLIPINF/00006.clpi | Bin 0 -> 556 bytes tests/fixtures/disc16/CLIPINF/00007.clpi | Bin 0 -> 4472 bytes tests/fixtures/disc16/CLIPINF/00008.clpi | Bin 0 -> 1428 bytes tests/fixtures/disc16/CLIPINF/00009.clpi | Bin 0 -> 1076 bytes tests/fixtures/disc16/CLIPINF/00010.clpi | Bin 0 -> 1000 bytes tests/fixtures/disc16/CLIPINF/00011.clpi | Bin 0 -> 292 bytes tests/fixtures/disc16/META/DL/bdmt_eng.xml | 6 ++++++ tests/fixtures/disc16/MovieObject.bdmv | Bin 0 -> 3234 bytes tests/fixtures/disc16/PLAYLIST/00000.mpls | Bin 0 -> 280 bytes tests/fixtures/disc16/PLAYLIST/00001.mpls | Bin 0 -> 322 bytes tests/fixtures/disc16/PLAYLIST/00002.mpls | Bin 0 -> 768 bytes tests/fixtures/disc16/PLAYLIST/00003.mpls | Bin 0 -> 240 bytes tests/fixtures/disc16/PLAYLIST/00004.mpls | Bin 0 -> 240 bytes tests/fixtures/disc16/PLAYLIST/00005.mpls | Bin 0 -> 240 bytes tests/fixtures/disc16/PLAYLIST/00006.mpls | Bin 0 -> 240 bytes tests/fixtures/disc16/PLAYLIST/00007.mpls | Bin 0 -> 240 bytes tests/fixtures/disc16/PLAYLIST/00008.mpls | Bin 0 -> 240 bytes tests/fixtures/disc16/PLAYLIST/00009.mpls | Bin 0 -> 240 bytes tests/fixtures/disc16/ics_menu.bin | Bin 0 -> 11625 bytes tests/fixtures/disc16/index.bdmv | Bin 0 -> 204 bytes tests/fixtures/disc17/CLIPINF/00000.clpi | Bin 0 -> 496 bytes tests/fixtures/disc17/CLIPINF/00001.clpi | Bin 0 -> 556 bytes tests/fixtures/disc17/CLIPINF/00002.clpi | Bin 0 -> 480 bytes tests/fixtures/disc17/CLIPINF/00003.clpi | Bin 0 -> 292 bytes tests/fixtures/disc17/CLIPINF/00004.clpi | Bin 0 -> 292 bytes tests/fixtures/disc17/CLIPINF/00005.clpi | Bin 0 -> 21380 bytes tests/fixtures/disc17/CLIPINF/00006.clpi | Bin 0 -> 292 bytes tests/fixtures/disc17/CLIPINF/00007.clpi | Bin 0 -> 324 bytes tests/fixtures/disc17/CLIPINF/00008.clpi | Bin 0 -> 324 bytes tests/fixtures/disc17/CLIPINF/00009.clpi | Bin 0 -> 324 bytes tests/fixtures/disc17/CLIPINF/00010.clpi | Bin 0 -> 324 bytes tests/fixtures/disc17/CLIPINF/00011.clpi | Bin 0 -> 324 bytes tests/fixtures/disc17/CLIPINF/00012.clpi | Bin 0 -> 324 bytes tests/fixtures/disc17/CLIPINF/00013.clpi | Bin 0 -> 324 bytes tests/fixtures/disc17/CLIPINF/00014.clpi | Bin 0 -> 324 bytes tests/fixtures/disc17/CLIPINF/00015.clpi | Bin 0 -> 324 bytes tests/fixtures/disc17/CLIPINF/00016.clpi | Bin 0 -> 324 bytes tests/fixtures/disc17/CLIPINF/00017.clpi | Bin 0 -> 324 bytes tests/fixtures/disc17/CLIPINF/00018.clpi | Bin 0 -> 324 bytes tests/fixtures/disc17/CLIPINF/00019.clpi | Bin 0 -> 324 bytes tests/fixtures/disc17/CLIPINF/00020.clpi | Bin 0 -> 324 bytes tests/fixtures/disc17/CLIPINF/00021.clpi | Bin 0 -> 324 bytes tests/fixtures/disc17/CLIPINF/00022.clpi | Bin 0 -> 324 bytes tests/fixtures/disc17/CLIPINF/00023.clpi | Bin 0 -> 324 bytes tests/fixtures/disc17/CLIPINF/00024.clpi | Bin 0 -> 324 bytes tests/fixtures/disc17/CLIPINF/00025.clpi | Bin 0 -> 324 bytes tests/fixtures/disc17/CLIPINF/00026.clpi | Bin 0 -> 324 bytes tests/fixtures/disc17/CLIPINF/00027.clpi | Bin 0 -> 324 bytes tests/fixtures/disc17/CLIPINF/00028.clpi | Bin 0 -> 324 bytes tests/fixtures/disc17/CLIPINF/00029.clpi | Bin 0 -> 324 bytes tests/fixtures/disc17/CLIPINF/00030.clpi | Bin 0 -> 324 bytes tests/fixtures/disc17/CLIPINF/00031.clpi | Bin 0 -> 324 bytes tests/fixtures/disc17/CLIPINF/00032.clpi | Bin 0 -> 324 bytes tests/fixtures/disc17/CLIPINF/00033.clpi | Bin 0 -> 324 bytes tests/fixtures/disc17/CLIPINF/00034.clpi | Bin 0 -> 324 bytes tests/fixtures/disc17/CLIPINF/00035.clpi | Bin 0 -> 324 bytes tests/fixtures/disc17/CLIPINF/00036.clpi | Bin 0 -> 324 bytes tests/fixtures/disc17/CLIPINF/00037.clpi | Bin 0 -> 324 bytes tests/fixtures/disc17/CLIPINF/00038.clpi | Bin 0 -> 324 bytes tests/fixtures/disc17/CLIPINF/00039.clpi | Bin 0 -> 324 bytes tests/fixtures/disc17/CLIPINF/00040.clpi | Bin 0 -> 324 bytes tests/fixtures/disc17/CLIPINF/00041.clpi | Bin 0 -> 324 bytes tests/fixtures/disc17/CLIPINF/00042.clpi | Bin 0 -> 324 bytes tests/fixtures/disc17/CLIPINF/00043.clpi | Bin 0 -> 324 bytes tests/fixtures/disc17/CLIPINF/00044.clpi | Bin 0 -> 324 bytes tests/fixtures/disc17/CLIPINF/00045.clpi | Bin 0 -> 324 bytes tests/fixtures/disc17/CLIPINF/00046.clpi | Bin 0 -> 324 bytes tests/fixtures/disc17/CLIPINF/00047.clpi | Bin 0 -> 324 bytes tests/fixtures/disc17/CLIPINF/00048.clpi | Bin 0 -> 324 bytes tests/fixtures/disc17/CLIPINF/00049.clpi | Bin 0 -> 324 bytes tests/fixtures/disc17/CLIPINF/00050.clpi | Bin 0 -> 324 bytes tests/fixtures/disc17/META/DL/bdmt_eng.xml | 6 ++++++ tests/fixtures/disc17/MovieObject.bdmv | Bin 0 -> 1350 bytes tests/fixtures/disc17/PLAYLIST/00000.mpls | Bin 0 -> 280 bytes tests/fixtures/disc17/PLAYLIST/00001.mpls | Bin 0 -> 306 bytes tests/fixtures/disc17/PLAYLIST/00002.mpls | Bin 0 -> 404 bytes tests/fixtures/disc17/PLAYLIST/00003.mpls | Bin 0 -> 4338 bytes tests/fixtures/disc17/ics_menu.bin | Bin 0 -> 3703 bytes tests/fixtures/disc17/index.bdmv | Bin 0 -> 132 bytes tests/fixtures/disc18/CLIPINF/00000.clpi | Bin 0 -> 428 bytes tests/fixtures/disc18/CLIPINF/00001.clpi | Bin 0 -> 564 bytes tests/fixtures/disc18/CLIPINF/00002.clpi | Bin 0 -> 480 bytes tests/fixtures/disc18/CLIPINF/00003.clpi | Bin 0 -> 292 bytes tests/fixtures/disc18/CLIPINF/00004.clpi | Bin 0 -> 292 bytes tests/fixtures/disc18/CLIPINF/00005.clpi | Bin 0 -> 292 bytes tests/fixtures/disc18/CLIPINF/00006.clpi | Bin 0 -> 22788 bytes tests/fixtures/disc18/CLIPINF/00007.clpi | Bin 0 -> 548 bytes tests/fixtures/disc18/CLIPINF/00008.clpi | Bin 0 -> 2108 bytes tests/fixtures/disc18/CLIPINF/00009.clpi | Bin 0 -> 1980 bytes tests/fixtures/disc18/CLIPINF/00010.clpi | Bin 0 -> 2148 bytes tests/fixtures/disc18/CLIPINF/00011.clpi | Bin 0 -> 2216 bytes tests/fixtures/disc18/CLIPINF/00012.clpi | Bin 0 -> 1988 bytes tests/fixtures/disc18/CLIPINF/00013.clpi | Bin 0 -> 2172 bytes tests/fixtures/disc18/CLIPINF/00014.clpi | Bin 0 -> 2172 bytes tests/fixtures/disc18/CLIPINF/00015.clpi | Bin 0 -> 2076 bytes tests/fixtures/disc18/CLIPINF/00016.clpi | Bin 0 -> 1716 bytes tests/fixtures/disc18/CLIPINF/00017.clpi | Bin 0 -> 1960 bytes tests/fixtures/disc18/CLIPINF/00018.clpi | Bin 0 -> 1240 bytes tests/fixtures/disc18/CLIPINF/00019.clpi | Bin 0 -> 292 bytes tests/fixtures/disc18/META/DL/bdmt_eng.xml | 6 ++++++ tests/fixtures/disc18/MovieObject.bdmv | Bin 0 -> 1862 bytes tests/fixtures/disc18/PLAYLIST/00000.mpls | Bin 0 -> 280 bytes tests/fixtures/disc18/PLAYLIST/00001.mpls | Bin 0 -> 306 bytes tests/fixtures/disc18/PLAYLIST/00002.mpls | Bin 0 -> 792 bytes tests/fixtures/disc18/PLAYLIST/00003.mpls | Bin 0 -> 1248 bytes tests/fixtures/disc18/PLAYLIST/00004.mpls | Bin 0 -> 1408 bytes tests/fixtures/disc18/PLAYLIST/00005.mpls | Bin 0 -> 240 bytes tests/fixtures/disc18/ics_menu.bin | Bin 0 -> 8905 bytes tests/fixtures/disc18/index.bdmv | Bin 0 -> 156 bytes tests/fixtures/disc19/CLIPINF/00000.clpi | Bin 0 -> 496 bytes tests/fixtures/disc19/CLIPINF/00001.clpi | Bin 0 -> 556 bytes tests/fixtures/disc19/CLIPINF/00002.clpi | Bin 0 -> 480 bytes tests/fixtures/disc19/CLIPINF/00003.clpi | Bin 0 -> 292 bytes tests/fixtures/disc19/CLIPINF/00004.clpi | Bin 0 -> 292 bytes tests/fixtures/disc19/CLIPINF/00005.clpi | Bin 0 -> 21380 bytes tests/fixtures/disc19/CLIPINF/00006.clpi | Bin 0 -> 292 bytes tests/fixtures/disc19/CLIPINF/00007.clpi | Bin 0 -> 324 bytes tests/fixtures/disc19/CLIPINF/00008.clpi | Bin 0 -> 324 bytes tests/fixtures/disc19/CLIPINF/00009.clpi | Bin 0 -> 324 bytes tests/fixtures/disc19/CLIPINF/00010.clpi | Bin 0 -> 324 bytes tests/fixtures/disc19/CLIPINF/00011.clpi | Bin 0 -> 324 bytes tests/fixtures/disc19/CLIPINF/00012.clpi | Bin 0 -> 324 bytes tests/fixtures/disc19/CLIPINF/00013.clpi | Bin 0 -> 324 bytes tests/fixtures/disc19/CLIPINF/00014.clpi | Bin 0 -> 324 bytes tests/fixtures/disc19/CLIPINF/00015.clpi | Bin 0 -> 324 bytes tests/fixtures/disc19/CLIPINF/00016.clpi | Bin 0 -> 324 bytes tests/fixtures/disc19/CLIPINF/00017.clpi | Bin 0 -> 324 bytes tests/fixtures/disc19/CLIPINF/00018.clpi | Bin 0 -> 324 bytes tests/fixtures/disc19/CLIPINF/00019.clpi | Bin 0 -> 324 bytes tests/fixtures/disc19/CLIPINF/00020.clpi | Bin 0 -> 324 bytes tests/fixtures/disc19/CLIPINF/00021.clpi | Bin 0 -> 324 bytes tests/fixtures/disc19/CLIPINF/00022.clpi | Bin 0 -> 324 bytes tests/fixtures/disc19/CLIPINF/00023.clpi | Bin 0 -> 324 bytes tests/fixtures/disc19/META/DL/bdmt_eng.xml | 6 ++++++ tests/fixtures/disc19/MovieObject.bdmv | Bin 0 -> 1350 bytes tests/fixtures/disc19/PLAYLIST/00000.mpls | Bin 0 -> 280 bytes tests/fixtures/disc19/PLAYLIST/00001.mpls | Bin 0 -> 306 bytes tests/fixtures/disc19/PLAYLIST/00002.mpls | Bin 0 -> 404 bytes tests/fixtures/disc19/PLAYLIST/00003.mpls | Bin 0 -> 1746 bytes tests/fixtures/disc19/ics_menu.bin | Bin 0 -> 3703 bytes tests/fixtures/disc19/index.bdmv | Bin 0 -> 132 bytes 161 files changed, 30 insertions(+) create mode 100644 tests/fixtures/disc15/CLIPINF/00000.clpi create mode 100644 tests/fixtures/disc15/CLIPINF/00001.clpi create mode 100644 tests/fixtures/disc15/CLIPINF/00002.clpi create mode 100644 tests/fixtures/disc15/CLIPINF/00003.clpi create mode 100644 tests/fixtures/disc15/CLIPINF/00004.clpi create mode 100644 tests/fixtures/disc15/CLIPINF/00006.clpi create mode 100644 tests/fixtures/disc15/CLIPINF/00007.clpi create mode 100644 tests/fixtures/disc15/META/DL/bdmt_eng.xml create mode 100644 tests/fixtures/disc15/MovieObject.bdmv create mode 100644 tests/fixtures/disc15/PLAYLIST/00000.mpls create mode 100644 tests/fixtures/disc15/PLAYLIST/00001.mpls create mode 100644 tests/fixtures/disc15/PLAYLIST/00002.mpls create mode 100644 tests/fixtures/disc15/ics_menu.bin create mode 100644 tests/fixtures/disc15/index.bdmv create mode 100644 tests/fixtures/disc16/CLIPINF/00000.clpi create mode 100644 tests/fixtures/disc16/CLIPINF/00001.clpi create mode 100644 tests/fixtures/disc16/CLIPINF/00002.clpi create mode 100644 tests/fixtures/disc16/CLIPINF/00003.clpi create mode 100644 tests/fixtures/disc16/CLIPINF/00004.clpi create mode 100644 tests/fixtures/disc16/CLIPINF/00005.clpi create mode 100644 tests/fixtures/disc16/CLIPINF/00006.clpi create mode 100644 tests/fixtures/disc16/CLIPINF/00007.clpi create mode 100644 tests/fixtures/disc16/CLIPINF/00008.clpi create mode 100644 tests/fixtures/disc16/CLIPINF/00009.clpi create mode 100644 tests/fixtures/disc16/CLIPINF/00010.clpi create mode 100644 tests/fixtures/disc16/CLIPINF/00011.clpi create mode 100644 tests/fixtures/disc16/META/DL/bdmt_eng.xml create mode 100644 tests/fixtures/disc16/MovieObject.bdmv create mode 100644 tests/fixtures/disc16/PLAYLIST/00000.mpls create mode 100644 tests/fixtures/disc16/PLAYLIST/00001.mpls create mode 100644 tests/fixtures/disc16/PLAYLIST/00002.mpls create mode 100644 tests/fixtures/disc16/PLAYLIST/00003.mpls create mode 100644 tests/fixtures/disc16/PLAYLIST/00004.mpls create mode 100644 tests/fixtures/disc16/PLAYLIST/00005.mpls create mode 100644 tests/fixtures/disc16/PLAYLIST/00006.mpls create mode 100644 tests/fixtures/disc16/PLAYLIST/00007.mpls create mode 100644 tests/fixtures/disc16/PLAYLIST/00008.mpls create mode 100644 tests/fixtures/disc16/PLAYLIST/00009.mpls create mode 100644 tests/fixtures/disc16/ics_menu.bin create mode 100644 tests/fixtures/disc16/index.bdmv create mode 100644 tests/fixtures/disc17/CLIPINF/00000.clpi create mode 100644 tests/fixtures/disc17/CLIPINF/00001.clpi create mode 100644 tests/fixtures/disc17/CLIPINF/00002.clpi create mode 100644 tests/fixtures/disc17/CLIPINF/00003.clpi create mode 100644 tests/fixtures/disc17/CLIPINF/00004.clpi create mode 100644 tests/fixtures/disc17/CLIPINF/00005.clpi create mode 100644 tests/fixtures/disc17/CLIPINF/00006.clpi create mode 100644 tests/fixtures/disc17/CLIPINF/00007.clpi create mode 100644 tests/fixtures/disc17/CLIPINF/00008.clpi create mode 100644 tests/fixtures/disc17/CLIPINF/00009.clpi create mode 100644 tests/fixtures/disc17/CLIPINF/00010.clpi create mode 100644 tests/fixtures/disc17/CLIPINF/00011.clpi create mode 100644 tests/fixtures/disc17/CLIPINF/00012.clpi create mode 100644 tests/fixtures/disc17/CLIPINF/00013.clpi create mode 100644 tests/fixtures/disc17/CLIPINF/00014.clpi create mode 100644 tests/fixtures/disc17/CLIPINF/00015.clpi create mode 100644 tests/fixtures/disc17/CLIPINF/00016.clpi create mode 100644 tests/fixtures/disc17/CLIPINF/00017.clpi create mode 100644 tests/fixtures/disc17/CLIPINF/00018.clpi create mode 100644 tests/fixtures/disc17/CLIPINF/00019.clpi create mode 100644 tests/fixtures/disc17/CLIPINF/00020.clpi create mode 100644 tests/fixtures/disc17/CLIPINF/00021.clpi create mode 100644 tests/fixtures/disc17/CLIPINF/00022.clpi create mode 100644 tests/fixtures/disc17/CLIPINF/00023.clpi create mode 100644 tests/fixtures/disc17/CLIPINF/00024.clpi create mode 100644 tests/fixtures/disc17/CLIPINF/00025.clpi create mode 100644 tests/fixtures/disc17/CLIPINF/00026.clpi create mode 100644 tests/fixtures/disc17/CLIPINF/00027.clpi create mode 100644 tests/fixtures/disc17/CLIPINF/00028.clpi create mode 100644 tests/fixtures/disc17/CLIPINF/00029.clpi create mode 100644 tests/fixtures/disc17/CLIPINF/00030.clpi create mode 100644 tests/fixtures/disc17/CLIPINF/00031.clpi create mode 100644 tests/fixtures/disc17/CLIPINF/00032.clpi create mode 100644 tests/fixtures/disc17/CLIPINF/00033.clpi create mode 100644 tests/fixtures/disc17/CLIPINF/00034.clpi create mode 100644 tests/fixtures/disc17/CLIPINF/00035.clpi create mode 100644 tests/fixtures/disc17/CLIPINF/00036.clpi create mode 100644 tests/fixtures/disc17/CLIPINF/00037.clpi create mode 100644 tests/fixtures/disc17/CLIPINF/00038.clpi create mode 100644 tests/fixtures/disc17/CLIPINF/00039.clpi create mode 100644 tests/fixtures/disc17/CLIPINF/00040.clpi create mode 100644 tests/fixtures/disc17/CLIPINF/00041.clpi create mode 100644 tests/fixtures/disc17/CLIPINF/00042.clpi create mode 100644 tests/fixtures/disc17/CLIPINF/00043.clpi create mode 100644 tests/fixtures/disc17/CLIPINF/00044.clpi create mode 100644 tests/fixtures/disc17/CLIPINF/00045.clpi create mode 100644 tests/fixtures/disc17/CLIPINF/00046.clpi create mode 100644 tests/fixtures/disc17/CLIPINF/00047.clpi create mode 100644 tests/fixtures/disc17/CLIPINF/00048.clpi create mode 100644 tests/fixtures/disc17/CLIPINF/00049.clpi create mode 100644 tests/fixtures/disc17/CLIPINF/00050.clpi create mode 100644 tests/fixtures/disc17/META/DL/bdmt_eng.xml create mode 100644 tests/fixtures/disc17/MovieObject.bdmv create mode 100644 tests/fixtures/disc17/PLAYLIST/00000.mpls create mode 100644 tests/fixtures/disc17/PLAYLIST/00001.mpls create mode 100644 tests/fixtures/disc17/PLAYLIST/00002.mpls create mode 100644 tests/fixtures/disc17/PLAYLIST/00003.mpls create mode 100644 tests/fixtures/disc17/ics_menu.bin create mode 100644 tests/fixtures/disc17/index.bdmv create mode 100644 tests/fixtures/disc18/CLIPINF/00000.clpi create mode 100644 tests/fixtures/disc18/CLIPINF/00001.clpi create mode 100644 tests/fixtures/disc18/CLIPINF/00002.clpi create mode 100644 tests/fixtures/disc18/CLIPINF/00003.clpi create mode 100644 tests/fixtures/disc18/CLIPINF/00004.clpi create mode 100644 tests/fixtures/disc18/CLIPINF/00005.clpi create mode 100644 tests/fixtures/disc18/CLIPINF/00006.clpi create mode 100644 tests/fixtures/disc18/CLIPINF/00007.clpi create mode 100644 tests/fixtures/disc18/CLIPINF/00008.clpi create mode 100644 tests/fixtures/disc18/CLIPINF/00009.clpi create mode 100644 tests/fixtures/disc18/CLIPINF/00010.clpi create mode 100644 tests/fixtures/disc18/CLIPINF/00011.clpi create mode 100644 tests/fixtures/disc18/CLIPINF/00012.clpi create mode 100644 tests/fixtures/disc18/CLIPINF/00013.clpi create mode 100644 tests/fixtures/disc18/CLIPINF/00014.clpi create mode 100644 tests/fixtures/disc18/CLIPINF/00015.clpi create mode 100644 tests/fixtures/disc18/CLIPINF/00016.clpi create mode 100644 tests/fixtures/disc18/CLIPINF/00017.clpi create mode 100644 tests/fixtures/disc18/CLIPINF/00018.clpi create mode 100644 tests/fixtures/disc18/CLIPINF/00019.clpi create mode 100644 tests/fixtures/disc18/META/DL/bdmt_eng.xml create mode 100644 tests/fixtures/disc18/MovieObject.bdmv create mode 100644 tests/fixtures/disc18/PLAYLIST/00000.mpls create mode 100644 tests/fixtures/disc18/PLAYLIST/00001.mpls create mode 100644 tests/fixtures/disc18/PLAYLIST/00002.mpls create mode 100644 tests/fixtures/disc18/PLAYLIST/00003.mpls create mode 100644 tests/fixtures/disc18/PLAYLIST/00004.mpls create mode 100644 tests/fixtures/disc18/PLAYLIST/00005.mpls create mode 100644 tests/fixtures/disc18/ics_menu.bin create mode 100644 tests/fixtures/disc18/index.bdmv create mode 100644 tests/fixtures/disc19/CLIPINF/00000.clpi create mode 100644 tests/fixtures/disc19/CLIPINF/00001.clpi create mode 100644 tests/fixtures/disc19/CLIPINF/00002.clpi create mode 100644 tests/fixtures/disc19/CLIPINF/00003.clpi create mode 100644 tests/fixtures/disc19/CLIPINF/00004.clpi create mode 100644 tests/fixtures/disc19/CLIPINF/00005.clpi create mode 100644 tests/fixtures/disc19/CLIPINF/00006.clpi create mode 100644 tests/fixtures/disc19/CLIPINF/00007.clpi create mode 100644 tests/fixtures/disc19/CLIPINF/00008.clpi create mode 100644 tests/fixtures/disc19/CLIPINF/00009.clpi create mode 100644 tests/fixtures/disc19/CLIPINF/00010.clpi create mode 100644 tests/fixtures/disc19/CLIPINF/00011.clpi create mode 100644 tests/fixtures/disc19/CLIPINF/00012.clpi create mode 100644 tests/fixtures/disc19/CLIPINF/00013.clpi create mode 100644 tests/fixtures/disc19/CLIPINF/00014.clpi create mode 100644 tests/fixtures/disc19/CLIPINF/00015.clpi create mode 100644 tests/fixtures/disc19/CLIPINF/00016.clpi create mode 100644 tests/fixtures/disc19/CLIPINF/00017.clpi create mode 100644 tests/fixtures/disc19/CLIPINF/00018.clpi create mode 100644 tests/fixtures/disc19/CLIPINF/00019.clpi create mode 100644 tests/fixtures/disc19/CLIPINF/00020.clpi create mode 100644 tests/fixtures/disc19/CLIPINF/00021.clpi create mode 100644 tests/fixtures/disc19/CLIPINF/00022.clpi create mode 100644 tests/fixtures/disc19/CLIPINF/00023.clpi create mode 100644 tests/fixtures/disc19/META/DL/bdmt_eng.xml create mode 100644 tests/fixtures/disc19/MovieObject.bdmv create mode 100644 tests/fixtures/disc19/PLAYLIST/00000.mpls create mode 100644 tests/fixtures/disc19/PLAYLIST/00001.mpls create mode 100644 tests/fixtures/disc19/PLAYLIST/00002.mpls create mode 100644 tests/fixtures/disc19/PLAYLIST/00003.mpls create mode 100644 tests/fixtures/disc19/ics_menu.bin create mode 100644 tests/fixtures/disc19/index.bdmv diff --git a/tests/fixtures/disc15/CLIPINF/00000.clpi b/tests/fixtures/disc15/CLIPINF/00000.clpi new file mode 100644 index 0000000000000000000000000000000000000000..271ec5f9cc5439d8f09c3b74b9bc19ca830b718d GIT binary patch literal 428 zcmeZp@eMODGB99ZV7LRs-xwGeO@Md>kc|#D0L2->g3-MV46H2)=nCl0muv6OI^0B$`mpidaAU@}Y$0)nE_iNFvrKms5`1sOye46_RIkc2_u1Of#> z-HZZ)3@i)+4E#Vo9}ufBFfg42(ku*&O{W-`Jl-=f9XiFpqW^}0ndvkG%fvv5WehA* zN{Jt&(+&sQJXSeq=iH`lzxa8VAyBPR(y9>S!`%B!m2;KNn$LBZKhl3==`=CWYSE`X M(yOhtf#xy*0DcZMV*mgE literal 0 HcmV?d00001 diff --git a/tests/fixtures/disc15/CLIPINF/00001.clpi b/tests/fixtures/disc15/CLIPINF/00001.clpi new file mode 100644 index 0000000000000000000000000000000000000000..45f295d836088e3cf960350b1dbbee0199185ce6 GIT binary patch literal 564 zcmeZp@eMODGB99ZV7LRs-xwGeO&A!MKzwwt0Vu}^7L4v~VBlG`09^sy`Em^&K} z83hCxSQvB|lz~e5fH(#iZl{4X3j?Fm83x82Z3f0eXBe17o-r^pon>I&`kH~+=_~__ zvLORY(>VqALe~zs$5`g)_keme3?p&#J(yEDY-l5 t+OutYb$-vcmy2S!D!(Rau^`V8HlbYAT;bboH$<&p*of75E(ZFK0RZ4AV$=Wt literal 0 HcmV?d00001 diff --git a/tests/fixtures/disc15/CLIPINF/00002.clpi b/tests/fixtures/disc15/CLIPINF/00002.clpi new file mode 100644 index 0000000000000000000000000000000000000000..347328678d8ca4ccb4f4636bea7ef564e9262be0 GIT binary patch literal 504 zcmeZp@eMODGB99ZV7LRs-xwGej{xx(AR8TQ0E#n$1*3Z#7#Ip3pevv|U#`Ie=zM(E ziZOs)%*Y@Bp=bX&z&K~kR-l$sFc}U80YOpeL|_OQAOVn}f()V!hFJx9NW!3SVi05$ zZBE1@F2o=@0Vs@Nju4~hgw(urOmQaB2~`>SnBvSh#96S51D&J;^bMncAOi~n2Llt3 f&j-XJK%54|EDQ_|=?n}3kJNuKuy_J#pcn%H+&ebT literal 0 HcmV?d00001 diff --git a/tests/fixtures/disc15/CLIPINF/00003.clpi b/tests/fixtures/disc15/CLIPINF/00003.clpi new file mode 100644 index 0000000000000000000000000000000000000000..8a176940bdc9ede02eb06e7944206a09caa0d336 GIT binary patch literal 292 zcmeZp@eMODGB99ZV7LRs-xwGeWq?=#$VLYnfa0uR!RX!w1_n-adHVC^8a#l`$7in? o10zV9kwE}L&;E0OaSn?JP)G?T!^j}QAUZLtAdkTS2_PE^06K~flK=n! literal 0 HcmV?d00001 diff --git a/tests/fixtures/disc15/CLIPINF/00004.clpi b/tests/fixtures/disc15/CLIPINF/00004.clpi new file mode 100644 index 0000000000000000000000000000000000000000..319f0a8f235d71d8d8e322534f325ba3f1e9eb0c GIT binary patch literal 292 zcmeZp@eMODGB99ZV7LRs-xwGeWq?=#$VLYnfa0uR!RX!w1_lmvdHVC^8a#l`$7in? o10zV9kwE}L&;E0OaSn?JP)G?T!^j}QAUZLtAdkTS2_PE^06Cx!k^lez literal 0 HcmV?d00001 diff --git a/tests/fixtures/disc15/CLIPINF/00006.clpi b/tests/fixtures/disc15/CLIPINF/00006.clpi new file mode 100644 index 0000000000000000000000000000000000000000..844e126eb753d818c8b03569ea694881f85b4dea GIT binary patch literal 43896 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 literal 0 HcmV?d00001 diff --git a/tests/fixtures/disc15/CLIPINF/00007.clpi b/tests/fixtures/disc15/CLIPINF/00007.clpi new file mode 100644 index 0000000000000000000000000000000000000000..f851f705ad6d2ac4566f690b6f67af7da7b0fdaf GIT binary patch literal 556 zcmeZp@eMODGB99ZV7LRs-xwGek1#MWX#m;iU;|K&5iA(p+rYrM(E(in-T8729zf^g zvsR1&>|#a+0WdAC@8TkDVZ0Tn;WHC?Lqd!ob78 z3*_?wu?zzP+i4)p!oc8mhJnG{mVxouSq6r;5^^03EDkK@wt*?}WkE-(--f8n& + + +TEST DISC 15 + + diff --git a/tests/fixtures/disc15/MovieObject.bdmv b/tests/fixtures/disc15/MovieObject.bdmv new file mode 100644 index 0000000000000000000000000000000000000000..f9fc9fc144a3811f6da45d47d592f4161a5cf4ac GIT binary patch literal 1046 zcmd5*yH3ME5Zv?m2%!lD1tp}Qi)4@xt(7W5LL`5XPr2kv_>_DPKauQ=ccY~U2_0+6 z9?#C)?cU?#bN=4Fbe)`y{7p$-i{xc5$qm!$NaS%t%-mY!ZP7QLOb7eI^)@G&r=Nv#6%nSeOJ00exELV|%xxK)A!xb?g?*zEuN z-vOpUkAZ;^NjE2>fFMMQRXP#K;ADhy8CV+(vkLMcCK|#_)bmi`c7At~ft>;q85ndJ bm_a@Ox$pmfuHMgvBbI2xM?FLb(jA4Tf0-c|bl?Eo*Zkm@fp? z$vOeZ1*#W<$xlelO9$~mwg3U^gsO~u5T6;1&w|1SsulqYuucS-2Lvh%ARUYhG9bSg dgZ;t)bUMU0ED*&YbpjwS0u=&%`Tsvi000c~Cy)RD literal 0 HcmV?d00001 diff --git a/tests/fixtures/disc15/PLAYLIST/00002.mpls b/tests/fixtures/disc15/PLAYLIST/00002.mpls new file mode 100644 index 0000000000000000000000000000000000000000..3e0b22d4401d9596e32d36cfb54ea61265d9e8dc GIT binary patch literal 796 zcmeYb@Ci0BGB99ZV6b9fVEh22aRELCMxYc6LYi?Ckj(@XJzxL?X1+!t!9WhTQ|AV0 z<_kfTGq6qo za)IiFVDb}E^U^_lCa8H6sxtCHd}cI0)ZMHQd7x?$umaYJAoCzTFo*g;THnP*+QN7% z2Sf?Ppuz3~1_l)dke?YDWI(ZD0`?0ydS?GQz&M8m?iWT422r3Ya6JA05B400*LZXf zg2yW-`W3+*N&)U8{mZdJM4 zoyNm6KxY@%|FsLC#jo=49uE5FeJB5o=Rw&kpVx0}w?ImhEO&Dkwa)ofW%4S@Tl?g7 zl(+ZE8&N*8Pu`63QOS`V*;=j0kqvbwZ%4Uo$mJtZE*oSfdZ>82Z|v4xT?%aA&@6-0)F3RJ@|`6T5=HC8H)NB0L{g6Kc}ZXu=ECON_S#e$8@! zjWUkL2#;}MjC)S|+1@<7n&%z;TpV#98z-KRh!D@mvh#`Td`jo}k*qUWGnv+;X-%3o zL3m6O9#h2enbxY%qIK>GI<7_QW-y0o!t-o~pR+`6ostrrw%f~bd6FE&aUoH(lWFZ} z+8oXEm?u0X3&&{MNQDtvSN)uh8=)n$v}uv>SRy=@iQI9@+H#zw_dHT!WaW;_qwlB@ zXKw|JCeucvX)9QvQLBV!N?$uh)5a={(YpE%bleynHpkC(!s7(tagxX#r`MVsSLaUC z`KvfCkG{ifReNn>Jef9brj6qi;c=Sq*dUJ2w22B6v<@%S*SIy;m_inDhVa-VJkAoi zb$aj1aTZy*^N!%SJoC&`mY!Mz;2#>48@tHQ`Fr#MdPxzg^ z4){vQ+OW`)P4}v5vx?QlO4%YPlc&mhzr60jZ}gBibGbP+endyxgN)~4H_STB^3L4P z@Ed!@@io_VXYC{0Sywk3S4*{q9(Q=9%{k0*&VoFc5($`-+K<*==nDlCPRsC#y-3D$9q@VHKRyoOkh6{+IW^@_HkjMGTK&E{%T#2ztJd@$&$Z?`E`-Dh zhZBm5mpCm`n=_jPLb7ko-B1Y!lOi~>$JmZve<3h zvF=A5(3^;owc)U#6@ScTZX@C`JhqQ@#^DTE)l+1tV-em=l)5$@Hpy~JWT~SO-a?eD zvkqs;VllsC9gn)6w-P1moWnV>97}#RBEmLNvd%l4mt7sEG&L&1+lZ2N!Qlc~^u&%e zGHPZXCrZ{uhl^Tqo-3-k5Z+FdtV<4;$ZGA>lh%Bw0eJ^evMxJZ4l7PtbD{?2okYpn za@Y#2Us=zfzTsU&$-3fjMJxWf`la<0>MPz&l&q@`SA(vXt>;kRaf2vX*Bq`Hi@H?H z2=5_E)^&&LVu38xI>LL2f@O6EIeUlq)k)iDywnEIDmpYs*3oq zr*UKl&+!Tkz=fNH$A<`y4-@H%@Yjr{gQkS;pS(hM-arcri?Ny6h( zgvY0e!)Y3EHZ0?&y+s{rg+}oi!sD}q$LEN{X&QAl+iG5=Cbcyq^uXr{k1r4&UnCBv zY0TLiiaO}c07YmKrXl)_!jExh;~~buZ5t?SsQe|O2y9HaFs6BqEX{d^Zq}r;i3#uH zw#|Vx3;r@u>Y8#kxv2iZSk;_Z_zF?7rkxEDEbVJ{D|Dy*(9DOlui38fRie}t8e_%b zozxiPYedNkO)TpF@F~P57GEbyR%kd;KSGv9wn8^6G>52uNLFkP@eQKX6&g9&bvre3 zc#0@lOYF1w2pfN=E{$P@ZxSVI*}-~-Uz4RVt?(_PWUV->cbh*YOVd-~+eFD)bylvm z{#$R^bX619?+_&`lp0_@csZ3C_%2bhLg^sZRw^CvJ)&gAQh-~3Yp)dOS}~-86uA8E zeSP9SNv}+%M@+93`bn?yq4{y(^m?$Sb|2~WU`_p`*Ml|nlU@(jG)$IZ+XBO6nLKf? zljYNRx}RhjM#4q1Y}_x&vU%iWSr3#f2d_m_Iw>^`k}OM2gCxsR(;&&R)HF<%DMbvE zW%9(mPL|K$nSPRG@wWiwOz)fbOS0sDB06Ga*%&BUj{V;%%Tm)I$+FZmNU|(74U#NN YO~YiFQp7M>CQsb!Wce(f?I&6O5A54lpa1{> literal 0 HcmV?d00001 diff --git a/tests/fixtures/disc15/index.bdmv b/tests/fixtures/disc15/index.bdmv new file mode 100644 index 0000000000000000000000000000000000000000..9ebd6bd470e1c16306c4d1e779314854eb9ca687 GIT binary patch literal 120 ucmebDbBQo8GB99ZVDJNCd_W1GBwS9-0nTJ#0I`9X5iGkc|#D0L2->g3-MV46H2)=nCl0muv6OI^0B$`mpidaAU@}Y$0)nE_iNFvrKms5`1sOye46_RIkc2_u1Of#> z-HZZ)3@i)+4E#Vo9}ufBFfg42(ku*&O{W-`Jl-=f9XiFpqW^}0ndvkG%fvv5WehA* zN{Jt&(+&sQJXSeq=iH`lzxa8VAyBPR(y9>S!`%B!m2;KNn$LBZKhl3==`=CWYSE`X M(yOhtf#xy*0DcZMV*mgE literal 0 HcmV?d00001 diff --git a/tests/fixtures/disc16/CLIPINF/00001.clpi b/tests/fixtures/disc16/CLIPINF/00001.clpi new file mode 100644 index 0000000000000000000000000000000000000000..45f295d836088e3cf960350b1dbbee0199185ce6 GIT binary patch literal 564 zcmeZp@eMODGB99ZV7LRs-xwGeO&A!MKzwwt0Vu}^7L4v~VBlG`09^sy`Em^&K} z83hCxSQvB|lz~e5fH(#iZl{4X3j?Fm83x82Z3f0eXBe17o-r^pon>I&`kH~+=_~__ zvLORY(>VqALe~zs$5`g)_keme3?p&#J(yEDY-l5 t+OutYb$-vcmy2S!D!(Rau^`V8HlbYAT;bboH$<&p*of75E(ZFK0RZ4AV$=Wt literal 0 HcmV?d00001 diff --git a/tests/fixtures/disc16/CLIPINF/00002.clpi b/tests/fixtures/disc16/CLIPINF/00002.clpi new file mode 100644 index 0000000000000000000000000000000000000000..347328678d8ca4ccb4f4636bea7ef564e9262be0 GIT binary patch literal 504 zcmeZp@eMODGB99ZV7LRs-xwGej{xx(AR8TQ0E#n$1*3Z#7#Ip3pevv|U#`Ie=zM(E ziZOs)%*Y@Bp=bX&z&K~kR-l$sFc}U80YOpeL|_OQAOVn}f()V!hFJx9NW!3SVi05$ zZBE1@F2o=@0Vs@Nju4~hgw(urOmQaB2~`>SnBvSh#96S51D&J;^bMncAOi~n2Llt3 f&j-XJK%54|EDQ_|=?n}3kJNuKuy_J#pcn%H+&ebT literal 0 HcmV?d00001 diff --git a/tests/fixtures/disc16/CLIPINF/00003.clpi b/tests/fixtures/disc16/CLIPINF/00003.clpi new file mode 100644 index 0000000000000000000000000000000000000000..278aa335c99f5a3b28b92fa321197e5d21263f0a GIT binary patch literal 292 zcmeZp@eMODGB99ZV7LRs-xwGeWq?=#$VLYnfa0uR!RX!w1_s^*=nCl0muv62!rUvtb#lS10;ZKC;-pW5H|n- literal 0 HcmV?d00001 diff --git a/tests/fixtures/disc16/CLIPINF/00004.clpi b/tests/fixtures/disc16/CLIPINF/00004.clpi new file mode 100644 index 0000000000000000000000000000000000000000..ef717228606efff64f49ac63c57b0dd1aeec027c GIT binary patch literal 292 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 literal 0 HcmV?d00001 diff --git a/tests/fixtures/disc16/CLIPINF/00006.clpi b/tests/fixtures/disc16/CLIPINF/00006.clpi new file mode 100644 index 0000000000000000000000000000000000000000..ea669d9295758466ea255b1bda529ec5e08a2913 GIT binary patch literal 556 zcmeZp@eMODGB99ZV7LRs-xwGek1#MWX#m;iU;|K&5iA(p+rYrM(E(in-T8729zf^g zvsR1&>|#a+0Wd9HTxlX*ld%-2;WHC?Lqd!ob78 z3*_?wu?zzP8z@d$7#Q5{GBB9iGB6&y$H4GbLhKU*i$|WhZREN5vS_{Pw=sP)v|`_F mNsITpa5Z4vTZtfk&d}g|)fpk@otWM94s3=jR2BXnupUk{7&ph+a`{#RR&V0`KopaCm&6#`W%v_mBoy=r2 znE(d#^&McK0?bSG?f))&^vn3-EU=IKv>`5)!qi<-l_iZ!#i@IS);J|~zPSd)4GOB^us(ywY@ zW)4FdMlID(H3h~P0yH~)TQ6Y`m`sKN<$zHhXFwwyLCZ4&jdFyc@;exkP8hv|4MWNa zV;n0nhUSE^^hFp$IAd(fSs2lrF&HWy7|`-vp0r?asu#dZFV`m&UKA5ioOAFdnTXcjh7ZX?%-zxOp;(C3wt-G#fp4$Rkzj-0 zU;;nA!l(iG(?UQL9ELv?0ud`1fwWLaoZf;#hC&un4+a$mS(7<}X<<-EcO#ezhce|R zm_#^K;0 za*;aA2OKI2sRP-F)SGU72V5!|8FTFrMMNVr-2l-<46;5xM>H9O?6`2mP%+3A4|P2C;_G)`v8&Nnc4Fpri7Ta zBp(t&hyvmkqy&LNlc|uA1d83mA*YE@{N5FEN`#UG9TcP(bBl+eq=`}Lvjr+rg0lP? zXlN3Y&yzw!NKxKf3$5OYkZ%!3$WVEz6>+2tU$FZSPsy>6y%7n7998rIBv1-e_0B+| z-X(s0NFtRWYsMp)ro>XQ3@M}v%U+&93Z=qwmJVt9{t9&_(kL}nblgL_-Wtt1WRM!v z3JxHX(4fv@C9)_jzBV6&98!ywQyq{)#bIU7Bjl2CSZ(TpJTe|@vP>|E7LP`E3X@44 znmlG>3Z+A{$q1$r325H`HS+at$kt*Sk%(_{3NVdI#6~d#GiXU@VOwG*k%TQyvoMoN z#+HY5n5B0sjlgVL3R+imVm6tAZA@nrQmJU0(TO6x?JQLO2~BVrq97#Dg%3hhf%6`uVFXl5t-Qg{0hqS?kkyuGAau{W~E|2k%dmXXDBDL zalk(r3#e=yDr`mtEeD6X15iQb;0QcWN#&xeE)`$Ua&Z(F@gsQp3SVI{Z8A=07-0!91!qJLL6TF@qc#9ZO+`<45tfouan92c z%ZPlOC%0i4m5&RB_pqFrhKnCd@fB?vE*11)h2AUrZ)F8B9aj!VqlPvESKmHD4KV|K z_UWi4W}>g{2Fi~}}OWw`(PG&a%7Fle0v zC)jdfXt%*+GS_Z;T0r@Lm($P8CKtcuD_pB@7n!~DIAf6<{iEdpU7Xcl`Jckm7jPnO z3@wk0$TQ-uyPg^KPWhcP=hREhL6$hqb_YAY%&}5;V^v0Cgwf=r;Ed8_$9)YcP4q>n z?^@2Lr&x7m9IV-!WrHi4viY9c8!yJj`(<;5S(nR*TjF{#r|XGiJ*!K)W|=@%bZbyP zptVvex~o;2LLREGZjaPz9E12RwG2Vu$4nx=#81@m+hYl`u1R&5M6$KKQiWybVr7Z{ zDplXNCYlhN_1a~1d-<$MVk;T$J90 zewmCb%~|b|z?`v1jpJsp`SD$?5xQZ^(}@K&(xme+ObM8GBeizuQrbY~u+r?3jcSo# zmHPLCm$k8s^0?itcLkrV6Nr#yJ)({e4&pOu#^INK?B%HarIGeUA@bfIuPVd6sOXt% z`_)ekN$tdGMNHe?7lPHiGU4m}>qHSgSH%mO-6U^J1v1GZFL}jF3&s2VLglL?WvUCN z1{%eZecJE-S|OM)_qE`+qpyVf#&r|B6Z%6dHn)ZuU+E7!X6zaMph(Lh?mv((O>R=W zKDAxt8z}j%NNE>dAcWiwu+u}`>0T0%IFf-Z3`k&UmQ;ii$0pP{d>9OmUEZPp?ZOQ#b0L? z$7VGuYdh%bF+QQ{!O|+taf-{2;hYor))@*d?`|ckw6{f_CqGG85p1b*?R1&Z-O=(? zZJVO~e$CO&Or!WETN7EauM>sG zW-5t;Ck;fatpdc&)5Xb4yY{D?bxD_9u4+nqbS*@2(s#3RV*xulvqO@#+37;;`Z@Nz zWBnglrZF9C_V(0}R+|%|o8&D?!u$KuZL@qhw+6DgNxIS~>vfx>`fvM3FR{K8Q!ph| z^X!+|+OuA3;?~Z!)0saxn=mQeAhhYcQTXU+kuCsh8rEOdlp5YBBKiLe>=l^Fyd;hd^iqA(vy zRf;qLs`QQ?_2kiCXtb&Q+Q?0_wND3E3H0}`u&`qnkv8rx(b-CfKRmCOMkl(-ijRGe zud^MkSX>O{=ijQ;+1c|of$e|r#*Vb|b}}279ZT{Bi~8Di&xuyn*$A8r1x`%7a$%Xtk?_GsSMUlk*fj45S1f8U`S1v7bu9Yc^ zha=BEZsL~tY>D#8f2V4?WuZPVZ`a)4v`c&Jm63pxUn3aVWh^}K(wOLod?fm^+FktN z^I2*7JgF?Pw>FaH9L!CcH($v+b6T||GDus6y}m+#z%>6%Iy#F zY+W7l`SAkL9=|?`f6H2FtyP+AsAjxE`T4WbPArS+sa_Bx`eYmPmeZ(NH~+GBYDWWe z^ve^>K9-L4q=CUM=vqw-`Rxk*CO^L9JWEzISkuEXZL={k92YZRTU- zQ&Nh#9^Y(>@_%+W+9-A-BWn8%jqmVW?bfLd{2M)w;(upeNSM`jD6z%VMcg^BP;#`_ zEMlj#w`^LLi9CMSZN(*bO1W`5rApt|93wXPGd3$(qm}M@#P9Z)EqFriWPf_rCn8en z#A$m2CAlUe(&>549Nqq}BPrif#oOixRpf`57=E@^TS>L_zI@IKjeFa&<+9^!%L?P8-`Y@?6bB?t#H?qrDT>tCyYm6kF#si#NSkz<>C# zPH-y7mA$xpC}h@g<4^}05!w>`Qy4R^LVRyyyEMn5RCZ!Tr~L51Pm0w{XVs{0y<;LQ zrfas7#W_E}SstG}qf>X_Zd;;lQcu#no|VbhVg^$Nnl{UNevec{O!+>8cc@Y2FkzXR znKNHwyzid2mOjKEYUvRieDGeEPoI7OjL+7d%dHE$BFUoul-J5nqyD{PkKb_dASRyP&BHRUQgJk%Zu zjp|QrG1}PZDf$MVE8p{Ws|_~I z){GnK)Li2}VCwdMC1~}uAS~CLi%KRk#C_y5DSKqMY)#=S`5%vrm2nwHs=b%SYiOdi znyb|v+J?&^0%OrbVZo7PBE_UiB*>d3K5^4a>Y_G~E$l9m-;H>s{T$IEP65&kU z;b@l9VveMcad%yHpY2Mme|6s+moyh*nt|&d&{&IDtWAGuKQ^Ui_&cjBXuKd6uvptE87N%v( zEpuBOt&U$%+XQ`(_%^Ty>32(%{=6Ty1pM&q8pAX&JE*YG(e=W%vF3sOVvlibuK8?!?dkg|*3B=w`ilRB{>ngx`E|ykB_la5c zgYT~MQ|%}G9qurbaPXeVPxd*t^aI`h zjDuh8=m!5GNnfC{^1kz~J=a_(TwP!`C{c)#&k|k1~@X&(; ztU=25W-GvbG~om%YZP355Ztw+;PH=u+Z6<_k_&>RK;Z^2>oEiabHQKx7{bI_2(rc? za@>QUYYgHjB|^H!5!${6Lhd-iVto)XfMlcuA`crWoj|CEEl9(Ggsnv3x&?`c3&p{5 zNLfy%??Xlqh!C%Y%ts*7J_xyohbhh_2xoYRlK7!u_=s+)fx^SbRPk|4CIom+QH%&* z2x7}zm_mdgE@U5~2qEI`*b&WgM${0ZeIh7Jf|$yPkRTBv#v?}J^%2DQ#F%Lt!!#lk zNqqrKV?vRfrbetM45@|+O!tLhme`9pMuJ&aPavLUM#g!}Af(8+`v#OON!uAHeKM#@ z`jEiLKq-5X=#xWzC4iZP92%wrNlZ9&R3nl-;h=59NcJf}dsRqbX|!}Bm6-&SU^UW+ zNie6?$Crag^_TiJx}Wc8w`&Bt2hBI>W&B{u$x0?I^4y5|1MMl-?dIa5Z2l43o=R>O zuRm9vXWy(j+S;g#RJiqZt2a7(2Il6SO?fwee~sLxBemso2Ft9jMB>DoE+ zisK$-I%HRRqm)|V+wbVgZ(PegU67iW(!M5tL#%Jk;0B?~`KPOJ=fZ78hg<8&og*cx z{B%O~sPtFr-HprD1t(8wen|RKJO1G+o#(q`eZ+MRJzv8yZ2DMgl(t_pl`7)R^((BI zqR&Px#P3bkD%UNt?O?fTNIIk}tCwkxUie8TpzrG!wB*pI#4C+Sm2T7P{VnEx`=G_K zf2y_c;mf4KxkMGQiKb+JP=1MDeYb3V&f+sS9Ovm-bbL#Vp+S7y*jocL)jyC~Yg%Ms zR{dsu(f1OWr6^X(9pkER8x-oeo6x+FcT>Cli_^M}pqZx2Tn1ZPt}&gMY-+8zXx{z( z=b6nR`z&VtSxe_DPV2F6gyfz(cGc1u#i|E|Z>g(~_GTZ68geA8t;=0Ee8PFJB$z+% zc!sG!A~a{ahh1&HCd;K5r**u}t9tYL2<5kpX|N-xjl56mrkfnP(Z)L27aapNbV(Hd*eRav86s$IGspvKh O^mwPuOsk*xUH$={@sO1O literal 0 HcmV?d00001 diff --git a/tests/fixtures/disc16/CLIPINF/00009.clpi b/tests/fixtures/disc16/CLIPINF/00009.clpi new file mode 100644 index 0000000000000000000000000000000000000000..e2b1cf5b2df9fcb3259618f172d23f81ce3b5187 GIT binary patch literal 1076 zcmeZp@eMODGB99ZV7LRs-xwGeeHa*6Kzwwt0Vu}^7L4v~V9>H#fUbbp!4xr zE5-nJF(ZQjnC5nRIEA~ZbQVxc5KM-dK|oMcIuYn&10(=4RFFZm!7!^J4@nptE`p4r z&52mV85o!z08M2S5M*FsXkaJ?8o>t)GZvuu1t1$pAG*lE$Q8-J*mRMBDeEW$6VoLI z=1?65rlv~_EUf1kSePy|u;t!jV0F68z#*`lf%VW829C$<3~WG}EBOWkd(%}0?&=H% z4yLONJp79oI1gQ8;7eY|z|C}xLBOJzf!paigTPuQ1|A?SB$dO!+jN6Lc)tz<@1YwE zA|}BM{7g3)#8|8u1e$I#NJwxp2r}Jbka+ozLGaKm1}TGM3_?w}8KnCzF$f*H%^<_P zl0n4j4uc$LDud{uI}8dQt_)&KcNrA+GBJod-DOa6(PNNsy2qfrVKRe6(>(?i@h%1_ zr~3?Q=5-9xP4^izqQn`b4?SSeIJZUg5CeoBaFaq86VXVQ#%a(f#+&2Fr-tTUHz^>b*`p`r=)w z_|E3}40F8@f#v>N+87-6JZ5)1YWLUa^|U9>SKry01|{DxD?4Us-ml~5QCXeg*?47> zmjVAGYm3a;Hb#3++w!y8`-#RLw%b0b(f{XzwK?dpRGpyXtDc#n$!j=i6>; zEQ&p3)-rikE57h*uKZ+Od$GZ$Oe)9LBw54HW>=8EInx9GuU_vRi}&joT`~zaF<4pR zs?Fr#rW)yE?z!uwg$awbC4+CV<%Z5l)(Za;ZOlV2*($EBv`doUw13bWWbp0fKf{l% z^NsU&<(Ql^IA*4|l*hbZir?aG-z6^t=9S(S(bhgOdw%-vHC*7gy|u}I@{!{XPMoQM zHgW5WTy}OlefqM%q%h~W>*gC(X3soaEmHO}S;h;*X;~*dvsT@(%SQeev&|hBJ=+ys zes*_WoVLI2nq?@tVX~2rc$c$9jI{E%rHrn;OqOoODa`JSi$0m}f6i`k%)HKXQfsTX nz@L>qg@p~iho7GCSBesMm~d{3<431VqqE%`g}X0hgYpFct$rkz literal 0 HcmV?d00001 diff --git a/tests/fixtures/disc16/CLIPINF/00010.clpi b/tests/fixtures/disc16/CLIPINF/00010.clpi new file mode 100644 index 0000000000000000000000000000000000000000..7eb347bba7e0983a23e1b1dd556e199c9657b82b GIT binary patch literal 1000 zcmchVYe?nD+z_@P-w!h{ILFItJ%g|51pWtOY#Vvj-)5`FBz!|y!*b9oMjht=Eilxvhq z0FTKD0z4}a@{0Hi?FNbQ=EcH>YOIJXUYPLT?+Mi`8UJ6;$}vAN58`b?8R{*dSP1PM=8v;8kRK%F36d149psD+cHipb6) ziT;}SeDJ6@;5j+)Ja0g;0Z^V%@D*hU@r{CZR)SBBfgYFv-#3Qv^t%XU{1C_#pea8h zD#W0D0SNoAA&d$jlHm|eD3a$RoEe9xJ`@5%aj_Z#-&;s5vxs2cA|_J}Au|Cf?M0;L z9pv^_L=na&(GXGZu{cTuk?%d?N}CbwnM8cw2%>$HSfWjZm@q*a4GHxD2}iylhA^?H z4Kbc6EX#Fa5jBORX}=W*TY1n)n>>GtLNK z+T#vhbd-)2YWkfVqaM7ZYi0xbnOlX%!i;uP*9EINPElqltyT;ygd)SpSh57W+AMx~s@8oQ yoZs5BcWt?!?XL~ZEty)c>@4Y76Z_P)wr-PKKYD*+ohpaUDr$Dc<^^l!{_HQgEeON_ literal 0 HcmV?d00001 diff --git a/tests/fixtures/disc16/CLIPINF/00011.clpi b/tests/fixtures/disc16/CLIPINF/00011.clpi new file mode 100644 index 0000000000000000000000000000000000000000..36f86dbbb23774d8ac4f16a5f27f6c5de855d6f9 GIT binary patch literal 292 zcmeZp@eMODGB99ZV7LRs-xwGeWq?=#$VLYnfa0uR!RX!wAngEV4^}z>=dg$Xg_K}2j0_?Sq7$*Gi literal 0 HcmV?d00001 diff --git a/tests/fixtures/disc16/META/DL/bdmt_eng.xml b/tests/fixtures/disc16/META/DL/bdmt_eng.xml new file mode 100644 index 0000000..2768744 --- /dev/null +++ b/tests/fixtures/disc16/META/DL/bdmt_eng.xml @@ -0,0 +1,6 @@ + + + +TEST DISC 16 + + diff --git a/tests/fixtures/disc16/MovieObject.bdmv b/tests/fixtures/disc16/MovieObject.bdmv new file mode 100644 index 0000000000000000000000000000000000000000..494e38310ee3a87b0628e5e4e3dfe7fb8248da6f GIT binary patch literal 3234 zcmeHJyH3ME5Zv=4fd~l-3Pc4ds6aAEh}KFKMM5Nhkb-ZZKKPP+N=p6;Zr5|UIi!%# zA;lXh8PCqzd*eOF&o7f%^UyT1Gfv)2GFpn1^Hy9e82gAsuHOw?ZYlCKZHt(6S6%K* z395I%Rs(EBz$NMHfTMmu{E+YwX-34KD_*R{`S4MUe(n|T6VujO(b~9{o8Ri@K^OA1 z?|wH@@Wa3tVU5Qj5%B33)@$p6Z>r(-I^wlf&#(G|_;_!WFNv>6UlCsuU+?1y^yV|p zV?CqxE?hT@Md;JlYu1?O9q;u#f4&!EZny()!T` zcLnCjd69~>;B{!@tk}Mqe3(kH<~D)7YsV{*%R}&Jv-lqX^OgCd63mg#-7A;$-X%BS zT{erF-P5~+*qh0%9Kk#NpUa}3uVe>28YHGeG+&>b>%B{Ez&m?iN^G__d+*p7!tl=C aSBR$Pn!9DbpS$D+ywi8xEYhCc?%g**Y?RCZ literal 0 HcmV?d00001 diff --git a/tests/fixtures/disc16/PLAYLIST/00000.mpls b/tests/fixtures/disc16/PLAYLIST/00000.mpls new file mode 100644 index 0000000000000000000000000000000000000000..cbf16f4b01a8f8c5532dd69103d0e40ad75fa695 GIT binary patch literal 280 zcmeYb@Ci0BGB99ZV6Xz>7eI^)@G&r=Nv#6%nSeOJ00exELV|%xxK)A!xb?g?*zEuN z-vOpUkAZ;^NjE2>fFMMQRXP#K;ADhy8CV+(vkLMcCK|#_)bmi`c7At~ft>;q85ndJ bm_a@Ox$pmfuHMgvBbI2xM?FLb(jA4Tf0-c|bl?Eo*Zkm@fp? z$vOeZ1*#W<$xlelO9$~mwg3U^gsO~u5T6;1&w|1SsulqYuucS-2Lvh%ARUYhG9bSg dgZ;t)bUMU0ED*&YbpjwS0u=&%`Tsvi000c~Cy)RD literal 0 HcmV?d00001 diff --git a/tests/fixtures/disc16/PLAYLIST/00002.mpls b/tests/fixtures/disc16/PLAYLIST/00002.mpls new file mode 100644 index 0000000000000000000000000000000000000000..e0c9b6e235632bd7045d99dd992515cefde16cd9 GIT binary patch literal 768 zcmeYb@Ci0BGB99ZV6b9fVEh22aRELCMxYc6LYi?Ckj(@XJzxL?roKiY!9WhTQ|AWh z@_Bv;bwJiUpxI2UApKy#$tWNQVX;al0vVi)P%Z;&gJD)d9*_@J%i5d><_kfTGq6qo za)IiFVDb}E^U^_lCa8H6sxtCHd}cI0)ZMHQd7x?$umaYJAoCzTFoXI)y13Frx+Y^O z2Sf?Ppuz3~1_l)dke?YDWI(ZD0`?0ydS?GQz&M8m?iWTL24SEoa6JA05B400*LZXf zg2!tUB8cGeySRA5c!GLGuMs?<=i5UOJYm(>MMykrD_JC7 x)gmb3lv>@G&p~rC5-pCji-uK$u_v1m?a*A;CZnPx9OuypOL= zMpDPXU^}z>=deH&gVf1^1R21t`2Qay0OIjJR-Fgo0RV)o90>pb literal 0 HcmV?d00001 diff --git a/tests/fixtures/disc16/PLAYLIST/00004.mpls b/tests/fixtures/disc16/PLAYLIST/00004.mpls new file mode 100644 index 0000000000000000000000000000000000000000..c3f1ae9f62c2e4406a7d6a99d4d8f08a0e752a9f GIT binary patch literal 240 zcmeYb@Ci0BGB99ZV6Xz>b3lv>@G&p~rC5-pCji-uK$u_v1m?a*A;CZnPx9OuypOL= zMpDPXUb3lv>@G&p~rC5-pCji-uK$u_v1QxzVA;CZn_lqqDc>J9~ zY7xK=s1T$Q3OE@B1R+dT=|mudlM%{gU~MqWD#+txVqg#fD`1@nb3lv>@G&p~rC5-pCji-uK$u_v1eU%=A;CZnx6{KZ+)bsk zkkm0S*Z~!SR6+qKqktfU$ts-)WN literal 0 HcmV?d00001 diff --git a/tests/fixtures/disc16/PLAYLIST/00007.mpls b/tests/fixtures/disc16/PLAYLIST/00007.mpls new file mode 100644 index 0000000000000000000000000000000000000000..b4d76cf9396937080ea2a69673a963d3de5cbfe1 GIT binary patch literal 240 zcmeYb@Ci0BGB99ZV6Xz>b3lv>@G&p~rC5-pCji-uK$u_v1eU%=A;CZnx6{KZ+)bsk zkkm0S*Z~!SR6+qKqktfU$ts-)WNb3lv>@G&p~rC5-pCji-uK$u`)U|?wAYZMX;CsXa70CIEMwI7^F@PB**}E#sB{x0Wj~1wm*ai04moS^#A|> literal 0 HcmV?d00001 diff --git a/tests/fixtures/disc16/PLAYLIST/00009.mpls b/tests/fixtures/disc16/PLAYLIST/00009.mpls new file mode 100644 index 0000000000000000000000000000000000000000..086e939080ad6516ded237dbfb1e144af41ae54c GIT binary patch literal 240 zcmeYb@Ci0BGB99ZV6Xz>b3lv>@G&p~rC5-pCji-uK$u`)U|?wAYZMX;SivRyX0$|=1ZGQ+406qH~DF6Tf literal 0 HcmV?d00001 diff --git a/tests/fixtures/disc16/ics_menu.bin b/tests/fixtures/disc16/ics_menu.bin new file mode 100644 index 0000000000000000000000000000000000000000..528ed014b5eeb67ab5cd836be745861b32dbd537 GIT binary patch literal 11625 zcmeHNNo-|T5k2<}fABnyJ-FSoyWOOLfD<~zKm#2h;D!*!FpptO7z2cSr;{KdMM5G% zEFqg-5eWqWVu38NfejJ}v1^G10*N58fMul1sk-;N@BQ!p_V*8sCGb1#-_Paq>ej1Q zw_a7*^;WSq2DG-Ydfyg+8o$!RS{TSbYg_S8EDy@Af393wuYr`3EOU7axt#MWi{zP? z*V^Q{m)G0mg_k$ls&Uid!O@wdQ0`Av1kxJ(G~324qW{szPt?d`oY0RwQ0tmvb+lZW}0hROR}ZA3}AoO&&sZxJ@2HbyVcRZE_A{V7Q0!ALZAu zKp*5jlx4#iSbmqm9J!)g_d!=@yrOtYui#I~$O(!F%dJugR&FS7i6<6~Z;# z<27>Yghhkc-?-jg(Wd#o*tjS%6pRi$n?1+)nc~+t_e+y;F+f-h5(C^rvOo3B!1(2P zOTJGIzb}>J&l^JU=L6CCP;@>b=kby3k2086(zKGM4G|W@gvAK4cc#@c)M%Z#n~tl| zx-m>(l(0M-+o#8%B{J;6f%t?gvBypag>OyllQndP9rOJ-VPBLJ1&mCZaGft z1PsTf4b!w^gvD{f;smjGrj2A6p>@UWblfB(ZHgK9Bw=xiusBV`)=8lwj;qv+eL7B~ zFMa^jpSQp)E5~SR+9*~Ci!+49Sz_-@8#5S_X6d*1rM?dMN{HGd*D{TEt5Ty1)cDF* zBPf!GO1WL0ci|UZZr}_`?Xnm0W-0g;OgK^%O`2l{euQG zHRN%-SK5TZ1Xs@fh+i=EDf(JD_^#W^x{JLP?wv4cFv*pRzu_5ugYqrf*UI7PbX!?- zhF{qw)hUB1@%FO$4mY2oua(2|@3yjTG{3UTO4A0@a?iJ#7E_XPKQsvPLE5VvwF>J z?B-dz`4+d?l)_;)Ytodpy<}=QtM<2Mi8KR6NJ&m$XTO+Xzt|hS$JB zgM<7w|2?Qa5GiZPU`bZ|E}OX} zj|;fa#yVnfgskj-vZP}X+(D$emJOE4GBadJM$JgXx8kriC(@w2mPlDE1}l#B6YUwKZ+IP%vd$Qs zkrjWJ{aAYn=__7Oq^z?BXPvI+wdat&;}VgwRt;8_MO{+M2<{?M);WW7!U9=R>j>UJ zBrL5n$k{%u%?|25Xaf6=-fkQsZ2l znzBDolN4Yj8;^Go7Vji1-bM7Lscs+xxcpnxB+W~WgRXZI7VjY}-b?hRsbO?j#!b6P z9nuOlaUWsvKEmStL~oj!MrT{)S!$BDra=#UfUx)=VeuiNH%$XZ=TOu^Z#qbXCSmHL zPbvHuG&&w)99-3bvJ90!OeBGgA>+n0Pm(2bUO|;LY;i?8e@E%NLj9lMgDg_ z1>eNt6GX~#4JY#3$dZw*pvrR1A+m3i<(or%l1O#AMo#Ry8X7s=Po%6F_E~&{#h<84 z#;}4<5h-idKzoLtktJhV!KaCoHD|QmEx%8eOiu-$AyU@7(Q>W!&wNFvt1@BzERnKY zsR8DL=R>K1&k-rhl@7vM38e!*Poykg3UKSMY?lI+6U8Gm} zrFPa=dKDk4A75~K?X0QZM|$n7sh{-PSyMmhwX>%EWa+jou%9f0CvJAKd;kyhlPujx zI7yZT+b+KRrTURSYWQ!~q7ULh)-hioEWSvDIYU;HX?W`#z%crQx)uK7RL|A;8u=onmUO{%&bQ4lsCUuw8f`YFS z>AT<8gIei@dazpQ`FcqN>5 zDeik@?N|@;9G^sPQp5SdKE6SucKLd+yo0Pz4?c{C+gQFH z)EX|-gO!R3z8=&XF4Tk78qTLUt>L5=6nv9N?F#jv)Nu0KctK@F*VH9xsocA?^q*~! z`R6*jsNtkVF1FLs8XsmzOON0YZrK)Lu}O5>xXn&ATz-L?cAJ(`O?6+x{ezlzo0d{d zAuT;kO(8Aq)FOwplxn&eX-OK;kd~?qX#Z)c+FFLRv=*hMNAYOe1`28E9(pUJrD|&# z($Wvf+Bq%#i>%P5Ucr^N6+>EDi_+3#c&v@pDJ?yY$JM1S#8%4DKr~m)} literal 0 HcmV?d00001 diff --git a/tests/fixtures/disc16/index.bdmv b/tests/fixtures/disc16/index.bdmv new file mode 100644 index 0000000000000000000000000000000000000000..e168cf53a7bb09090ee8f8a8406132dfee95cbed GIT binary patch literal 204 zcmaLMyAgme3IZSB;8%EC!aY3rA{wLuWa2LZ3Xu_ e!~aTNHKT;UBq1g3-MV44fw(pevv|U#`Ie=zM(E ziZOs)%*Y@BriB`+1%xIiJ_Ks9g2^y32ndQwCjvvj011E$6=V=?Fw82*LlOps69{Yp z>Sh!WWME;CV2}aw`G6Q0ZY&FcGz$Y`%R&Yw#WxI0M;0+KzZ7C%W?96*;vx&giy7E> zPBO3_S;D}f_f6m%1B*~t^giJ&+YW~s3)~5toc%cb^RbtaL5gppHr0HO5xV|Aw%C|8 z?s6YbfbmPAz)3E$PM_whikSRfFFG}RmAUZ7rxpb~CoM0eU$izjblqm6>>b;W6%XwL fFTXR`p!dy4p!1J$!BZBKiw+!O!m~wzZesudS|n6F literal 0 HcmV?d00001 diff --git a/tests/fixtures/disc17/CLIPINF/00001.clpi b/tests/fixtures/disc17/CLIPINF/00001.clpi new file mode 100644 index 0000000000000000000000000000000000000000..a90358d2247518fb78cd19071239d5e119c66bdf GIT binary patch literal 556 zcmeZp@eMODGB99ZV7LRs-xwGeO&A!MG=OY$umLE?2o{X)ZD8Q(bU;@?cfMSM2hjQW ztQBJbyO@zd089%_j^zx8JGmGF)+0(V_^E&z`*RX zjDbZ{kAa0{IRk6?8wQq^Se|`;#9Al3+NS5Ywe4H8GxolVtqs;N&NaN?=PmSN-Zl}BUmI1A shAvQ7-LONVg?pdmwX|c>W(Uv8OqaPO$69eiKK1flfn|D6fc|0t0RFvX^#A|> literal 0 HcmV?d00001 diff --git a/tests/fixtures/disc17/CLIPINF/00002.clpi b/tests/fixtures/disc17/CLIPINF/00002.clpi new file mode 100644 index 0000000000000000000000000000000000000000..3097df828b4a88ed8a8c9a49ebefccc295b61723 GIT binary patch literal 480 zcmeZp@eMODGB99ZV7LRs-xwGe*8nkyjSe;d#TmhZ(Y*}}4A}?J70{h8*WdwkK0a&3 z7{D%OWDtPRv;Q1moU>*tP|GHm3_F8>pr~{rFa!*c0LV~52GIt?tb#lwVNf_R2r-CG z019KM7h)8hkeZi{Db6H1p(-OEQ=A!xI16@hpw&7+S2GF-GO#dkFfal6d_XJ$#A!gx X!oc8=&cF~b#ry{Yizko2!rUvtb#lS10;ZKC;$Vy5O4qh literal 0 HcmV?d00001 diff --git a/tests/fixtures/disc17/CLIPINF/00004.clpi b/tests/fixtures/disc17/CLIPINF/00004.clpi new file mode 100644 index 0000000000000000000000000000000000000000..1898dda0e09d8ff478cb1cdba8c67e65beb7ee77 GIT binary patch literal 292 zcmeZp@eMODGB99ZV7LRs-xwGeWq?=#$VLYnfa0uR!RX!w1_o9IbOm(h%QbiaosZ92 pF$PAEG$Vrmgr5E90OK4M5ulI~Ooov`gh6y-RzV(v0TMtq6aZ8L53c|K literal 0 HcmV?d00001 diff --git a/tests/fixtures/disc17/CLIPINF/00005.clpi b/tests/fixtures/disc17/CLIPINF/00005.clpi new file mode 100644 index 0000000000000000000000000000000000000000..50041ef65ec46a2a9645bc67bd45531c34b5562a GIT binary patch literal 21380 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 literal 0 HcmV?d00001 diff --git a/tests/fixtures/disc17/CLIPINF/00006.clpi b/tests/fixtures/disc17/CLIPINF/00006.clpi new file mode 100644 index 0000000000000000000000000000000000000000..6d63c6867a82dc5ec8c54c23b49ad0b87158c1c7 GIT binary patch literal 292 zcmeZp@eMODGB99ZV7LRs-xwGeWq?=#$VLYnfa0uR!RX!wAgusq4^}z>=dg$Xg_K}2j0_?Sq7$&=t^~FW2A!bUr?7 z#TXbt(u@oO5PJ5X1B`Q6M1Vp{Fd3knpr~{rFa!*c0Mt+gpejZIK?W8e1ew4G#5_Qp N2E;7tKY*e@003$d5XS%j literal 0 HcmV?d00001 diff --git a/tests/fixtures/disc17/CLIPINF/00014.clpi b/tests/fixtures/disc17/CLIPINF/00014.clpi new file mode 100644 index 0000000000000000000000000000000000000000..1514c97747a7a7024d2be9c0c46360e5856ac226 GIT binary patch literal 324 zcmeZp@eMODGB99ZV7LRs-xwGeWq{ZL$VLYnfa1(xL76!g3=Av@=nCl0muv6??C@P%@3;_cq05wzrsEScQkbwmVK_>74F%J-@ N0WpjD51=Rz002sS5V!yU literal 0 HcmV?d00001 diff --git a/tests/fixtures/disc17/CLIPINF/00023.clpi b/tests/fixtures/disc17/CLIPINF/00023.clpi new file mode 100644 index 0000000000000000000000000000000000000000..cbfb31827d7e1a2cb8df72c84a3cd86490ec7556 GIT binary patch literal 324 zcmeZp@eMODGB99ZV7LRs-xwGeWq{ZL$VLYnfa1(xL76!g3=C`w&=t^~FW2A!bUr?7 z#TXbt(u@oO5PJ5X1B`Q6M1Vp{Fd3knpr~{rFa!*c0Mt+gpejZIK?W8e1ew4G#5_Qp N2E;7pKY*e@002vd5V-&V literal 0 HcmV?d00001 diff --git a/tests/fixtures/disc17/CLIPINF/00024.clpi b/tests/fixtures/disc17/CLIPINF/00024.clpi new file mode 100644 index 0000000000000000000000000000000000000000..1514c97747a7a7024d2be9c0c46360e5856ac226 GIT binary patch literal 324 zcmeZp@eMODGB99ZV7LRs-xwGeWq{ZL$VLYnfa1(xL76!g3=Av@=nCl0muv6U5ZV9$ literal 0 HcmV?d00001 diff --git a/tests/fixtures/disc17/CLIPINF/00028.clpi b/tests/fixtures/disc17/CLIPINF/00028.clpi new file mode 100644 index 0000000000000000000000000000000000000000..cbfb31827d7e1a2cb8df72c84a3cd86490ec7556 GIT binary patch literal 324 zcmeZp@eMODGB99ZV7LRs-xwGeWq{ZL$VLYnfa1(xL76!g3=C`w&=t^~FW2A!bUr?7 z#TXbt(u@oO5PJ5X1B`Q6M1Vp{Fd3knpr~{rFa!*c0Mt+gpejZIK?W8e1ew4G#5_Qp N2E;7pKY*e@002vd5V-&V literal 0 HcmV?d00001 diff --git a/tests/fixtures/disc17/CLIPINF/00029.clpi b/tests/fixtures/disc17/CLIPINF/00029.clpi new file mode 100644 index 0000000000000000000000000000000000000000..6b033b30da9c397c6b41be93cf2f3bbc8c8a502f GIT binary patch literal 324 zcmeZp@eMODGB99ZV7LRs-xwGeWq{ZL$VLYnfa1(xL76!g3=FIa=nCl0muv6kI!B) z21bxHBZB~hp8e+l;~W+dppX(w1}G;eDxC-n0RtoeHBSpePUk0HjS22mk;8 literal 0 HcmV?d00001 diff --git a/tests/fixtures/disc17/CLIPINF/00037.clpi b/tests/fixtures/disc17/CLIPINF/00037.clpi new file mode 100644 index 0000000000000000000000000000000000000000..97c72c19f9dbb69e1b5663c98eb435c4f31ab0ff GIT binary patch literal 324 zcmeZp@eMODGB99ZV7LRs-xwGeWq{ZL$VLYnfa1(xL76!g3=FIX&=t^~FW2A!bUr?7 z#TXbt(u@oO5PJ5X1B`Q6M1Vp{Fd3knpr~{rFa!*c0Mt+gpejZIK?W8e1ew4G#5_Qp N2E;7pKY*e@003*85ZC|! literal 0 HcmV?d00001 diff --git a/tests/fixtures/disc17/CLIPINF/00038.clpi b/tests/fixtures/disc17/CLIPINF/00038.clpi new file mode 100644 index 0000000000000000000000000000000000000000..cda122787600db35cfcd0006788cbb2a8b6f6066 GIT binary patch literal 324 zcmeZp@eMODGB99ZV7LRs-xwGeWq{ZL$VLYnfa1(xL76!g3=Av_&=t^~FW2A!bUr?7 z#TXbt(u@oO5PJ5X1B`Q6M1Vp{Fd3knpr~{rFa!*c0Mt+gpejZIK?W8e1ew4G#5_Qp N2E;7tKY*e@002nx5T^hD literal 0 HcmV?d00001 diff --git a/tests/fixtures/disc17/CLIPINF/00039.clpi b/tests/fixtures/disc17/CLIPINF/00039.clpi new file mode 100644 index 0000000000000000000000000000000000000000..c9e9ddff245d3ea43c79831fe3e17790fe75cd97 GIT binary patch literal 324 zcmeZp@eMODGB99ZV7LRs-xwGeWq{ZL$VLYnfa1(xL76!g3=Av|=nCl0muv6 + + +TEST DISC 17 + + diff --git a/tests/fixtures/disc17/MovieObject.bdmv b/tests/fixtures/disc17/MovieObject.bdmv new file mode 100644 index 0000000000000000000000000000000000000000..46f30df56d9c57fe97fd97b9ac9d27d5b9169b9a GIT binary patch literal 1350 zcmeHG%WlFj5FF>xKraXhDz&E;i5rKgsyIiS5E26ZAfMv?Nk4@@E1u16yHrAf8;3el zG8xaVcgOa2x7yV2b&cLpzKEn~fqdT}SimeA0^UAhKfs;fN5^L#(x3;R4mbx{q;=26A=McN zN3RiYJ3cbc&7RMqEaCU-LzoLMtyyNjfM>0n|F&oMd={lP7TY)UY=sCEeOk_|k3SdF VV*cFSf4|fi^-C_idBv~y>jcvwL7xBs literal 0 HcmV?d00001 diff --git a/tests/fixtures/disc17/PLAYLIST/00000.mpls b/tests/fixtures/disc17/PLAYLIST/00000.mpls new file mode 100644 index 0000000000000000000000000000000000000000..9541ca8ed3b356138af16b7ec2aa1b7bec67272b GIT binary patch literal 280 zcmeYb@Ci0BGB99ZV6Xz>7eI^)@G&r=Nv#6%nSeOJ00exELV|%xgc_;^geE6GwAugn zzXMEz9s>g-l5S2$0YQiqt8^le!N~~aGO#unW)T z2&$KLLTX+*hz~Lq2v{dnW#ohS%xHWT6h2V32v~r1BFH=-P+|NlV(VBV6;h6o;SoYz|fkI&-VOazbLu#*Rg_hCssf+sln Ol_i2F6jgo!!UF(Ej5_WB literal 0 HcmV?d00001 diff --git a/tests/fixtures/disc17/PLAYLIST/00003.mpls b/tests/fixtures/disc17/PLAYLIST/00003.mpls new file mode 100644 index 0000000000000000000000000000000000000000..7fe4a23720a2a30947f68fb5a703c6764f0167a2 GIT binary patch literal 4338 zcmb`~%SyvQ6vpv0X`{wVY_(on@AWP+IWzT!pet7v3iSotb|F55FW_1q#f1+h)JYzde%}Kc0vtgZg^`ReN z-o8G~d$lnd6NTNW zPoLPKPduYfr2oUS3;JiIH>31sl-`Wen^Af*N^eH#%_zMYr8lGWW|ZEHqc`K|%{Y29 zj^2!;H{CJe0GoIdzr#Iv2&3JkKh=EJZk^| literal 0 HcmV?d00001 diff --git a/tests/fixtures/disc17/ics_menu.bin b/tests/fixtures/disc17/ics_menu.bin new file mode 100644 index 0000000000000000000000000000000000000000..879f2454a4209fbc8b936d86486514d309da463c GIT binary patch literal 3703 zcmc(iNp2)X7=_=TnKih|uDLwVW~PB|Xa*sKdIMsEWLB)$_5vsIj-P6n(PgBm$1vIDBW*AU?Quv3(?^e@Q0LTTd;WXU zpH*`F{iO?Mt`U3AA5h*?s(fLX?T#omtSjvLsq%xhM5BY%VcL?M{aq^ zpm0ZV9`E2+7&)K|1a*K-neSisS8(mF`n06_x~ zGz51it(&QfI{O&ox~Q9IrcDsE1%gH(Rp$#2)2`Z#bMtDm{)=(tV(8V#V6(R%%>ap=++VxbwA9OWUZV zEwx0{HVE1Q=`;O*r42F-P?!INaRXG%xbA|WJrJ}HQgwcGxp8^Ay^>YdW?Z`Zo@T4Y zqfx_J+AvBR>Hq{Cf}kUCchWX9ZK94d?i<#>u}POY20@yp`DL zmvQ=W1ttAiOMl+dU$pdh(*7qH9UmkQ)nC-g-7qyxnVEgZ%sfZHt(o=y#mwS~{e;T( zyM|XTBW-4yQ91jA%AOZst;)4`ZI$CLuI5~3!rU~ca`8KrJ)^){mFuU|Rym#-Rps(f zU9jhT&iAtSV=j`7YgMkFe_Q3a(W=VjskAgLsoeRL${vAWt;+QZYpWbrc2&9D*4w6S zc6R<5Z@nJ7j+cO!um6OQc1%0v{=bf~?9u!(XtH)qyRbOpIxro;vTazNfR5KdlXYl1gjE;^t0$!6K4`LzOh>S~ zm-*wEpq`=+K$CTBI)=p@AIDVlWP2SnStq8GlJ!GOJx{(jK$CT9I`xV_=R-2F#6vy2 u!8$XYm1F%D!^#8eP0$?c+;m>DhB3@M(B1+~)`jW9S)!tco#SoLVEqZ(A7Y#U literal 0 HcmV?d00001 diff --git a/tests/fixtures/disc17/index.bdmv b/tests/fixtures/disc17/index.bdmv new file mode 100644 index 0000000000000000000000000000000000000000..cee9035c41e13403bc7e79957f6ae45736b20289 GIT binary patch literal 132 zcmebDbBQo8GB99ZVDJNCd_W1GBwWtO0nTJ#0I`9X5iG<6WPtz^h;RTA3=GU50svo! B1Kkc|#D0L2->g3-MV46L)!<>}9tYw!R%AD_Kq z3}6>CG6;ZaZk6BwZapucPZ+FVGE58tf}+xizz{G%0w6;L8AKZlvkLN%ghAm10tG5_zV|)yZbf_ae+6Ir>;SEpfD3%x)*W KI$$}_Tm}HX7BSlZ literal 0 HcmV?d00001 diff --git a/tests/fixtures/disc18/CLIPINF/00001.clpi b/tests/fixtures/disc18/CLIPINF/00001.clpi new file mode 100644 index 0000000000000000000000000000000000000000..c8fc749426c6562bbfadfb7ecbb6b8eb3f09fc38 GIT binary patch literal 564 zcmeZp@eMODGB99ZV7LRs-xwGeO&A!MKzwwt0Vu}^7L4v~VBop^09^sy`Em^&K} z83hCxSQvB|lz~e5fH(#iZl{4X3j?Fm83x9}9Sn?z&M+{^Tw!2lI?KR(_&fu%(^&=< zqs0s?P3IWc5-J#251nJ+aOPlOV>-{kG0Ta89Y}Mj8#1srU0~pPyM%$m=>h|fSdYvE z1{T>FjtA{hny=V995l24$fRtTU%12Q`~zp>I+-gbdXWvPYAeo|`TV|Y?jB-ovGwqI zDXKQ&+G%ptLFmXnm+ vKW6RO2`_biAO0;DrEVy{rfZ`h&)X$JxdF3*tP|GHm3_F8>pr~{rFa!*c0LV~52GIt?tb#lwVNf_R2r-CG z019KM7h)8hkeZi{Db6H1p(-OEQ=A!xI16@hpw&7+S2GF-GO#dkFfal6d_XJ$#A!gx X!oc8=&cF~bRs9D8izko^}z>=dg$Xg_K}2j0_?Sq7$*Gi literal 0 HcmV?d00001 diff --git a/tests/fixtures/disc18/CLIPINF/00006.clpi b/tests/fixtures/disc18/CLIPINF/00006.clpi new file mode 100644 index 0000000000000000000000000000000000000000..f11087e077b9d10efd5848f572e4f2497554d607 GIT binary patch literal 22788 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%0DOA^V>jV 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 E|7V1daR2}S literal 0 HcmV?d00001 diff --git a/tests/fixtures/disc18/CLIPINF/00007.clpi b/tests/fixtures/disc18/CLIPINF/00007.clpi new file mode 100644 index 0000000000000000000000000000000000000000..57eb58f21724cca74b799e506777ed17833643fd GIT binary patch literal 548 zcmeZp@eMODGB99ZV7LRs-xwGe*Dx?JDFE5%U;|K&5iA(p+rYr;{QzA7-T8729zf^g zvsR1&>|#a+0WdAx!jT}{^Zg=F%O;o%JA;6rsB|JQ1PqV>$WTEB(FVh;f;=Q)P&hFN zF^En83S+1jVicW_nwO3#&LldaDkC3LoEe8W3wCj!)dfITGYSYYurP=)@B;aKK&->S z!154CvoJ8aJY-q*;XX8JJlfGq5~fCn3PV;@OkQ;q~UCw~w!7 upYPg*=lyxOq#bgK;vCQ1n(wUZ^w_0$wVLZ2;e2P-@TkJkasWdH!ZT}g%j literal 0 HcmV?d00001 diff --git a/tests/fixtures/disc18/CLIPINF/00008.clpi b/tests/fixtures/disc18/CLIPINF/00008.clpi new file mode 100644 index 0000000000000000000000000000000000000000..00f9a0d6eaae89b3c7c94349a2cc308f2654c984 GIT binary patch literal 2108 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 literal 0 HcmV?d00001 diff --git a/tests/fixtures/disc18/CLIPINF/00010.clpi b/tests/fixtures/disc18/CLIPINF/00010.clpi new file mode 100644 index 0000000000000000000000000000000000000000..5f21ca0cc0fee82dc436791adf77ca796ef732c0 GIT binary patch literal 2148 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 literal 0 HcmV?d00001 diff --git a/tests/fixtures/disc18/CLIPINF/00013.clpi b/tests/fixtures/disc18/CLIPINF/00013.clpi new file mode 100644 index 0000000000000000000000000000000000000000..34fc0cbb2686db1c60ab2c67fe2e8d471aa545d1 GIT binary patch literal 2172 zcmchYX;4&G7ROK1Ew(HzTeFM(-s{)>dU?I_=!K>`+899*Ta6+Sqbv?e5RGF*8BwGe zacgj4F@T~h%A#T{L=r*8)=`7vs078JKmYN}G1s`)sl>elbvbN=_- zQ|ErT5#h5IC{zjs0QAsn7=RH4z+O-Lf3%Zyj`1P5$d(1OFD(6|;Qzi4%8H=d|6kX7 z!-tL;;P!zW;)a%UjLW2t%>7S>32yG(fN**Oir?A$qVB-WQl_j<`(60`oWKLPyXo+M z=>f(QbXA6%JFplmhMAUf032KZm^)~n1q|~}aPZCm2m4N71!M!0xeHji@xU_g0>?<2 zb{jYjdBZrG?8tU-wC2Ht@Z&JvoCi)Z^s_MY!MVT!Y->KaBnx4JbvJOhvEXdp18zx0 z;6l^Ga|m4Qd%O-7wK!06zUHaAOvLuO$WC&4u6} zM}Y^;!0{>IVK0Kfo<{Jr7D13_D|nfUVRB3wc-f1Ahm8T(z8{b?ZQ#w^59s7N@G*Y{ zd}#+=0Q*~Mu2B62UR%+2+iQ=Q-CrL0VS*k)P4v;5=#NI9tKUR z8Zi4|&^itS&a41E(g6Z<1sF6o5Lhe0P$2{%O(WF@1hWcEoJ1h(Rq)YVHi)d%Fhz76 z#O7+4n(!7#`w=kPd_itL0^zQmKrxTPwAXn+nUBK9Zfppp8R4k|gSiGGR=C3yW(~|> zu)%Dtg&B9NU^=rFqF4?v!(Ioo!npm#5GIE^9_4U;(%=4j@)?U;R{D>X6zV0_Q+v;_Nx_wHIebcwWaym zk|A&L_{CZY((ugS^EQ)IM7GNWrFY~9#;Fv`!jB`m?QGOGI8!|u1JuH{%8+jef!43U zqDy}x(03&Z4I#HqgcXNn8%JutP%PlaDx0=US5;i;RBxI1C^$Vf5H}V6Nl^dRSL>8i zq)Yj`Lf>w1G>B?gVcR^1jL$cBC?W>xln3U$L!Y&%`EhtI-jd%Y4E)ysk(qp2^x*c0 z#9-`}mesr_$2^wH7jL3?t^F!A(2}Cwc!tY=fISl6+jPSC!Fb|&93|FXsg!)Bek^@e z{!|t3pV5wQh2q`rOuYl=zp0Av-_gX$Gzh>t;}+`ntm>4bGg+VV`G&8Qc4=D2O?y zl-pWAR`rYegCh$IsTxL*hMn4}UEWRUu7zLFZ^$T0q|TU@gW zxoS~o1sj7q54DC+E;X9+_4~B%dVBSsSnh?e1yx?(tKT%0@*&$xJ zJt56)^R<4W<9;g(%l!M^Op{6z-by#6ua{ohwUl%^oI%DlHIh~BFUg-Cr^*z=4`t~t zGi9yFHrXqUUOqFbNxmmRCcm40h&RdR%S)`V@#>phc|$igBAO?|NakoVa?!ODb;9PO z7HuEAGz8!DFy@_yJuC{xtfY zK#~+8_+rCF!I^xuV63WMX#N%#ZogS7yw&GJ_`J>|;@sFo1-^xNu74|1SpF^fl?z%Nw68PhHl7u(YCAIG7Btt?{sxeebGv`i{+LLYMgpFh5 z?7b_=;-kIfgVq=scKfPq#q)4k!`OM*u%}LLAWq7&jfDK_yfPkVg*$J-rlY*F0)+RZ zwge&0bC9&oY^14w40-cz9cuO(Lbr>P(3_@i%xC@_Y;npJtTHPM>o5F7e4p!oUξkSBh3leJ*NP7$^GY%1&{pb%xlw|GfCx3AJRR{itMqcYvhyMZV+- z%Rx%`ZIq_TMx~A6f0e$DeMnAS6-{o-X(l^Lf@EF|i)Ei)IwGsMua!N2xmGS`b;!T; zca@)&FX1u6yLgeGdhzmCMf1MTX-5J|Oh|mgS)}$dg}l6f45bFSXvR1jdLaNXwqgSo zJ*^KbSo9fofAxJnZ|gk%^3oRmiLX`s-~M(R*Y_;Pvxe^B*BnoAM*<_g+hg0_|D*o~ Di>1EU literal 0 HcmV?d00001 diff --git a/tests/fixtures/disc18/CLIPINF/00014.clpi b/tests/fixtures/disc18/CLIPINF/00014.clpi new file mode 100644 index 0000000000000000000000000000000000000000..1e975bc52b8852896aa7576123be7e00db769ebe GIT binary patch literal 2172 zcmchYc~Dd57Qj!utg?h9pg_c%+~npa_humwNCF8g}UR?qM`*A#THznL2UJ* zD8oaswJxoqPn4pTeKUXx0)kkz?jTZdp%wLkfWE6Uo$2(=yg%QW`Q~@NbIy0pnKNhR z(}zaSl*wf>0Juw^Hvo(%0IPIb|GN~^KE_Amylex+7NLI+_`lyh4SKr$|5er%K6cCi zhmW*x-CxF>{?JH2nenFw0S8AHk5GC7vcJfOq>kWX@LI8Y5iCt*V1wNQD`OehE=>Y!T{+klo&jrPIoPubzy_%R=J-vp z(N%!M(qgcs>EtpKY>k!RWXK0Qnk+sA_DB`5#(KcsR0XaoXJ8tuVbYiJ;DA)auU+F zri*~3^}rh7#l$})CFu^BT#D>@%r~L#n=RrI4kfpUIJNXTvn)Iz%-VLX_z`#8@tX=|~sEhVSx_ff<#v%t<`fStCu*mY~(A zR&d!az1YUB9lXPLzTjW-S%9BN?-tBD)2*y??+~F`*<{*tZ|cz;Ts-(=fuwhMDmqcG z;n)@=%jJWwu@kX+Vu~PvIHW3s!-Dj3F~%e%k?Y94A`KoD(Ctk@p!I zJbu&b@X}&$=ydj3ta+oTKe^Hmb(yI&81hvQpDp(fj;{{bR8_3`jZaDSIm2k-SP$1a z=`OastA$ska^?>oaTBE4SP&gw#*4fjwU9Z{Db(-fY)KfGA^j=4o#QxC$z7ee2`g(F z?~@Wr`P{OU)VRp_D=k>RS`|B<&&6MW!__Oy8k3aNpd+7JiY6HMTQLcWF2o-G}^otczxAF z?Ct3lzK9O;pIi3tfJ*)}Epx9@x@z1-_G?nVTz$jb`(V%?ywTH(_}_Q;;W6wqzlyIz zRPIAv>J1B<{O`0J)u{cNwFSp&14o%(dCgn@US8Qp`MAefDbj0|_-!&q(3h?z?lljH z^uBAz!tcj4*0$D~_p?OWr-zrLGi^1T^XY)Gdb)Y*rcdPGsLT}5`%E0(Q!j$iQgZRq z$5egisFtP5kft5kDZ62JimS-@0n6*=`n-zH$Mq%e{IyyzX5f181OkM+7L5R=QF_@{g$-h1n%_HAgZ zY;JLx*I74?GqTN}wV~gFe=)WeXC-R!`RNbvquCAkt7BFIb(yEY(0W18)DuJ44>u5> z+Rr8SU>(FGWvNgQ!xgUj{E+ZMhM915_i9n_vDcy<<;kM=l@EnQwA3v0eyDEGn?(GL9i+U|2$KP(2JZHX^D)`CL4eD-b z{q%U$a!DH+y+M!W<|cm%A=fR9Uh#bC%ZYXN8fVQjw`tae1O{&Fdwu1DC8wqb9g14xxBZ(G5JB`S^OPNL;O}E1$Wl;HbQvlW>l`Ia$JdS0ri z?o=OXQTI6+b>lX4E{l%i=kNvayiZe1}go{C-SmXJICc z^Vlpr;AJj+5H1z*=hcZ)QnjLUS?5F}-%82ApYqA=P4CFoyXlnkAAQtp%LUXS_D$-s zJWMQ#xFBAWK#I%O92CF%+DQ`n-A>8Qa~_h;%O|Ci@1xQMLmQ`NTRS@}4&U|RAN>!? CvCvci literal 0 HcmV?d00001 diff --git a/tests/fixtures/disc18/CLIPINF/00015.clpi b/tests/fixtures/disc18/CLIPINF/00015.clpi new file mode 100644 index 0000000000000000000000000000000000000000..1cad91efeb111ddda213b2567e63d8e64e6aedee GIT binary patch literal 2076 zcmchYdr(tX9>;$%$U~4oOhN!P$-TKZFLLuD?*~XCLa{{=1dED`x?-8CMX(i7sS$}< zE8wC`6l;s9C@ZB_D=+OfT7%XVt*k{66j4DQq9PFs<3?w8rqi9-Kle9t=5x;Pb$;`m zGjn1r@6VUYrBVQBcdrou(rf^4rhETq`_>&Jy>q7S%7@rX`F~FMzn`b)$GFG;U)M6= z-NYmact=XsG7Y8QuiRad@Sg}70s`rw7PkV@KiJ!*fk4lfeY9rPAKY(s0xHmp-0uI% z2k>;dyOII|!2^a#3U{i%TeE%u@>^{^033ILWZDQM^Ie!ge+CoG9YFq!2@@P0;1N6w z9^_7#=(2!^xf47sDd0)I2i|es;AOoBljf1Y%W)qjH5G!ln|{jxe9T=iSyur*jxO-0 z=72Bx0Z@uv;A?#V0ZXrgpS2sP)Fhbf=mr|@1ODWPKr5;QikpncMxa<9K@g1w0p>@* zOwvJs<1qw_Y!GOD3?Z3HpqhIiw5AfM)*hG|QUX&Py)YeN0iE0nY=Qu~`3bP?6~J&4 zu`~h0(FZ6k1A?r5z)fxdrnw(5y9=1se!#u5AlNYg{NTSqD0u*cSUH562SHf81E#te z7TF9_txqAW`Uy;PlUVo|rjv(2B1(bjjvTWgUfRN+v{`U&E|9Hi)sl zhM2%jG$(lA{1sGQ$&FV23)4p7yyG;{cl2js>gNVRb9;{@O;N%&e#T@EoMg&Vf``$w z1)Z2*e<8j;WdpD9@FD(2mqoDGk|O+K&nywMu|V&9o+DN+UQ5K+q7gISoMkVL^X4Sl zbC4?}C%PvpDSXAY+gL;YR5d=2q}kR~sJ+AW)6d#{$xu0(V)9r95zGF0T6$4eA;*sF zQf#H>gm-URqHMV^tg4wzQdcHj;D21~612Te*K3wuHUEskuAxO_BICZf^gJ2x*=^!0Tp z-%HY|j-PAR_=;@W%zat9^KVWWJTsNXtXo%2znbf%ikeDUNl1zOc>!<}2F@wZC(h-u z8d#b-<%ieZj#V)&P3l$E)tVEu z3|&zE8ojmerr}<4gDKKc7xA?uK}NE>O!wnElQDTb5F=C9*&{wklJwhlDW#`zxb(rRYRJUhZ?m`-~D=iPN~7xX*2e| zmlhFwI$U~;l`Hq&zFCnmYzuE*9HbIl3Rc@>37Q`JL|yEJ3Vqc_ZAPC~t|`OV8sV(U zl?mu+^6j7BSM>IzDq|9H)v@!P>Ty9-?26L#ke^A6(Ej;H#GW%uV4*_I-Rn@~hRKjg=L$Gfz%o*E)8xUB8WUjDtCxt>jM5 z<=|)}fN&u5EwRXf1y_;o)fQB^^%T0s&PC7E>_^8gvbdJp`?x!vj&ZMh6kPz?;~TkL*GOB$Wc$Sz_p z+~LLk=Bpfb&-Yy%;_`=_b)Bu8#+PvjdD72FEL)H4R-Q&~#Yxd=ORCVN>!zVqJ4?~0 zUk7s4XRO?fSH`)H``MV!NDuab-y&=;rv+_S7{Toh%hn}?HO4!|6PC{q$K*DOzbslHzFApDgw#JJ(p%mqjy>E) z489(aC<8Ji8?a*%hn~gunPX$eFK=U)Zb)F?Df$-&J)-5TY&gWJxlZG}e6$_WkCBiq zftwH~K8pGqve3l2J*a&}I@*=j!sVAlb5|X0;(p&G;J&_b5R2?#V7Bos*tIDXoX$Ut Tr6vw{{Ki<2`?y`$4yWsA!%kHx5`{h1ZN`BHRpeYF&`Jgh;EG03}9$@}t z#E}G=L_w!4k{**GiD5d;sJ}u}l+YP0pO}z}nu?XNto75GW*nR8&(6%9&$-`w&bepK z+_`=-ufSw6nE;$&*6#o-7YJ`>{6~$^SgZ$PQC&5rHqC!D;D6sISNoav|LfX#Jm{DO z-UG&7A3Mcca%m5fGUK0r^pM>z%7>`hylCmm56SoE1OY_#jQp>7AZ$KU zmBr(OV6oA|gmQrpDG(Z9d;&N)29~c9tgJDFh%O*xbr7LD?jYn~5Jci2h^%`E_XiMm z@E#&3I}jfF7b2T(AtLK9MCac_1P#O}uON~F*b6ccMY6zY>qQjB0ypk!#1J8f4agBg zhJaVx3^qdnM+7z%3PEKM9EL(!H8?Z@VNDRR1c7)z8?jUv#w9%k9vOy&q9FK0IK&l& z;8Wp9RJTGvM?f+-gg7Ds(&>E=l95O@>mZ^cA2ru6YoXF-VnmAdzB2qaTHYW+TnXft27Ntxkv}l7sZDLL|{#=o7n;OmSf- z*pKmKER1VwF`kZvX|@w||a!YA(v-MDq-L7?s9JSkK zIxllXE`Mdv{qdz=yivIa^pkcS_3e{Y%cM0y`Rg~56=w?@Q}(u$*;b#au#fuL>Zf-$ zYxX8Rl@?l?seA3_ob*#gLBoXZV&i6OzHCKBp*&~r7Rv#3t4&cq({{CIlf8|b=}cO2 zXu=zVL)tUb`#j#RfOo6nUHyAy-x%Jd-6pnKXI{Kjtmuh~R_e=NP}QBUO1+k|Nt4@Q zbA6t0RmWKqo&M6bh5DoU`wWfshmBKvcgeb)K8yPOVrvcCtQ@Mio0@&G*4dWpaYb~^ zb5E3Z=-yn_?7e!e-Ip^gp+kb*NveT zPtlA;#QGOw+5H~cE_ z+?*}WAP;Qy?bM$(@i!kaFAcR@x=QM;caDE+8x~gCznsvMAVA=N6SI!+#pO_M&wRV=IHOjhmx7WM%GyZ5b z?3~vqt!&rybR)OSASgaf4?s;Tgk2e zzn%?&mm7P5@Fj&+ed)r5mZMxt%6~IHAPf{qT$}>hAK3Rp13^@#+w$weAB4Zx34%aW z!G(WP58#{1P4yB60uRQ#WL)V|PBRvOr{a7bfExiA;DeV70q>Al@aCc5W2ggf76o4T zEcmb(ENXZPJQoJO2?t;ii-RASfbYg(aq11=vuaq}Q3-w=1-T92&m%x^%LM)`0ZT{2;39|h2pS;r6HIYga955A#pkgaA_cDLf8AtQMqk*I*f|gNW&92x_EfJz<$ zDH{z`+a-wLs9946%XwzdTxKAWqc*)0BHb3yq5DDRvVcC@0&<=eqH3fdcU!?A%mR!T z1IF=rz}zul5_SR2(Hv9^8kY^sDMJv&(Fz;D=(dBkvl1*WJJ@{kz{Wbj&eVd_LLU;pq`#eZm1U^^lYt`!vl~F^kdjZ;(uA%L$nP zOmg(+dlk}Jjk3n)9Ybb(0m69t(LK|m=;_oOmRCC}t$#$twt%X5d(rc1#}~N`TFot! zuG~TBry4^INunplrd`9P_WnGqMX4|sWD3>BKUj#9FG_5%iMD4C9CCCz3$^mIR$W;r zt{>auYj8|&G1jE9rqL^R%_+p7rSpS^| z3-=!&b;fe^P+3d#!eoslFTK>-!KT^>ZIXTGu}Q~2_|sZv;c?yB+gANT+%?1crYlHC zSUeWFcdhyN)6td(87|V%gHr24$Lz0dVI19e{I#n1%{q5;n0`F0*pT49XFN62Y5F#6 zg?VG&sHNM`7ZY{@v*r5**e@1+<)lXLXv-5{=%!lfs3d8#;l#UsCc*6W=z?sC`STmB zl`^)H@10DsO$k16ByaC_p1W7AeY{Gn*R~WYKNi;_{-saR%@Y*Xmpr7#+b$9NrTOIj zJ>m4K2kDxR)|AQoE;I7YkqUjUr^J9gvKu|=ou;olddw@({gyLTmty$ODr`B~7JGA7 zN~DkGP2q2Ar1Gx0+lpXemLf~_P|DmyRb_Qs7jp}b6ox2YD7KwmXruDsUfl}mJ+8=?I9-H=Sf3Ke{0ITw&y&4Kyl(?jwqfg%1@cgC&Xyb*++ihA6kC z9#np^`cZ!*;LV-JZkTDd2#KeyyN^@1;6{R zisX?TMfJ?6V%XQBTrN4R+^C&bHYNT_`6#nPW!{RYc6wH+*kc|(1I#f zSkHQs%=$LL#spxU1ZPJpIL1kEqszfHPQh)W9bD@a25q1Q5SHa(CN3h#D_*)kcZ16yUZULcm zHv)-8Z00v&6Uzcc34#a*wwU4&WOYE8my2Lx31M~vf^|y>7upfZ=8-Xr2sJJvvO@p? zv5c1tSrAyA*ecJ&7NZl<%p8O|7h=k1A+)-%Ek6Wd))mA)NkcfXg1E%{h|sM-lx{(U z@i9adX2~fK(v>4K^1Z*OD{k&+rHf8YDnqX4s7%r2%u-#0M&;S8wH&`pZJKBogE}Z4 zJlPh%_y;X5G|;m0*7IBI-E4}wWOw@g+8fGwPQ9vKQ^aJK45+t%7olF^7Hf**vb2Mr zStzb+EZjR~G@iO*koed(O2ZkabhYxZY-ISb+~VJ(D9h@nvoGFFI_BJ^>OU~DJ*cNs zLxoASN6U7TKRZm+Qu>&9t_iw*KDE-CIicc%qcznwPzqk%N@8>z`-8RC(E{3dx_ zQ6g1-XqN4Nz>~MXc3M$rilf82>ggeeNJZx5GP$?SDPN29sh_<2xpr5ZgWPO4kZnRc zHCmh$;rXC2Vl2W_ay2_4>SlXw!jTDcqAX@nKAt1j+d2gFU1yH6SNoQ#u_Bp?y0%BX zVfB*QX~@!iaXRzmdw+dHI^>yD(f%f}V{k!|z|2XnT{$mvz1XKXR6a}p>T<>g=7%uc z4wJf2a8)yOHkH&qNu#zU-hXAO`o_*YZnv)YJ!^t=bRhB5bc + + +TEST DISC 18 + + diff --git a/tests/fixtures/disc18/MovieObject.bdmv b/tests/fixtures/disc18/MovieObject.bdmv new file mode 100644 index 0000000000000000000000000000000000000000..c55806e603eb2bc9cfc5f4b6d23d4fa27b3ff641 GIT binary patch literal 1862 zcmeHG%WlFz4D{wfXfIqUQT0^lt%oW?{eXxQLaGXXz@Zy;ui)=6LfReD3(d)fbL09baB@cCDwMx(+pK?{nI>6YHci4)?x> z-nM+iI=}XO8o7o4Uo$diUaFbdoyb^q7eI^)@G&r=Nv#6%nSeOJ00exELV|%xxK)A!xb?g?*zEuN z-vOpUkAZ;^NjE2>fFMMQRXP#K;ADhy8CV+(vkLMcCK|#_)bmi`c7At~ft>;q85ndJ bm_a@Ox$pmfuT z2&$KLLTX+*hz~Lq2v{dnW#ohS%xHWT6h2V32v~r1BFH=-P+oclPDUY!Gz04dAQvbv1l7wr zAvG@@#Akx)pHP*N58^YU@uBWyg~$U{i+~ldP6U|;aj`kn#lkHd3Bojw*SG71PnR2V=p%g7)D%-n{MyvM-6#K1WF&jH3cOo$Mh z!@v#7*`R#?|3BCbz?{wv%%gA~6DU8ydCZ`+59hJ)0@Ep+#|lbQa2^{UF#h2@c2Hcw Wc^v$}aE0?YL1BQz`^UHh!UF&q&75lh literal 0 HcmV?d00001 diff --git a/tests/fixtures/disc18/PLAYLIST/00004.mpls b/tests/fixtures/disc18/PLAYLIST/00004.mpls new file mode 100644 index 0000000000000000000000000000000000000000..e913bf0382b3957ff9dc6ff781ae9deddc75918a GIT binary patch literal 1408 zcmeYb@Ci0BGB99ZV6b9fV0i$faRELCMxYc614u0xuq*;nTtLwR10b;QH3|s^a=4u> zE4U8?E`ut9P<{*yj6eVr<75;Ngs@qqU4RTuMktqowZSl}Adiz#2&$BI0+7qV$;7}Q z0v2JN2;xI*w1nCCg5?KK1n+mK76?TP8x0MhHu5CTox$_y=u+C-Xb82Dmm^bxxA(vy z+S_OZvvIA-3_jVnJ+!yc7-}P*##sx#HKNS4x6uS<b3lv>@G&p~rC5-pCji-uK$u`)U|?wBYZMX;95(;} literal 0 HcmV?d00001 diff --git a/tests/fixtures/disc18/ics_menu.bin b/tests/fixtures/disc18/ics_menu.bin new file mode 100644 index 0000000000000000000000000000000000000000..1365edc36486194d7aeedc34d39549a0802668ad GIT binary patch literal 8905 zcmeI1S&&^t8OQ&9&fR8TGTB4+6+yubM8Q#s#sv*7;5sg7Oc({(M8IWY6cWXCi2D*z zfdrBe5)=fiJo>0U`7%~%S-kkSmdZ`b0D81K~L%^2^g#al7nTZ^}2yssAT#CU%#-V@^kwRmrg57y#+F+Nm__s6*P zLtg5Kff%=bD8~n5-1?y$ABu77hjM&4#;qU9@sSv}ekjLBW8C_o9A6OQ)(_?QSd3dg zl;aCy-1?y$Ulilk59u=vV}S9~&_z1+^4_iLYFG_!4>EPKhMwJDj;AvFYVkDm25Rv%^oA@RAJ>LFEju~pM1C}%(HJu(S13w0fgJA{ zxHWr%ws^~&GVW;X4|nia6gdzA&s1v4jqqHv_vEDIj_jInhiRQ!;L)^s@4)jDQF?wN zo(v1{X%kV6Obtemj^|q$V`Kb`FsFJLJH6o52ffTQW-Q~17h|03Df_+hx_F9vqb6Q= zOc1YoOV|CS>p{CNzbbR6nM!L?T9eZH!D|4#2I1V5*2>hPI(HQv*P^;%jcN!ySHrxI zK)E_wi0HJFb9G#>+W$kx6^lbVmDY}>jZ&W10`Nq}&S7btOdYDr?x*8AR5C(M3&Cp< zcrAu<$Jt749apTLrJ)i#tK4y6gwAus1t(BXDy=7$wnR%PYAJXvgL79}Z>CX?>xzKCJ|=Rp7N6&RuE! znfj@YHSQj!reg_Ns5RiV7QEI$xjOTD>$oto%AI!>9amoO=33*zUP1%q(grAPJ$P*Z zuZ?i-N*l~HNOg_N=(q)R$rvl{Ch*z}UR$7Coo$A!{ zvMZQ;fqAu@KL5E|4ihc5T&zk9ofgt^^IBRqcZPYjoJQDOEr*dETP~*cBBw>n?CkHH zX>3PeTnN^D`ienX?6jC)^WUSg9fR>gsH&DYEwNSNFe)>0<3&(aEp=Lo3V)ahMsH?+ z5mZ&noR(RO)7Y^nOQEV->9i76YkR&Uc&_>G%b==S<+KVF&$uIavib7Mp{iQ#w7O6o#IXx5(Iqw2 z8mBeZ;ve$9;G^cHmqInyTBo%|u73xgHLraIR8{Mo))lJ0;KSy{mqAsv-f6w5M2lvR z#w($sI&FjKeYQnrNZgv+5U{~!$Ld#s*X7`K1yqmWt~j_i?hAKtJ9oSqyvD)nHBdc< z$Af#eJKSLhd+D{{^*Zpn64DnDnzDSw!F{UrPX>S;+l{T@^?E4Y(;ZFj$QcE8P@B?N z_FI+6G>4ggh?Qw#=Gc+9GfJ#pc?=!;8IR zi*FTZD(jG`#jdl-lKdv{dNX*v1-i@BcCw>M{wFfE*@(3`0$c@NZw0TnL3f!tE*vA8 zE6LR1JlN(5w}aQ!;PrOsE>n*SyM9gbSu`0V9iH$V;Pp=MdKYw;sn>-adbX5IEi(0R zc)kX_t_81mLwA|_T(P0fLZ%@q>eqX~>%HLhKIkq}Kl@#JoITuD`e=xX2K0XL`T%%M zKzEr2T-d8NkC3TDrhcCAgW&Zc@cJ-xmub+2eI-4kYc0 zrb^a&3{|q$8+Bt%6|L3%1y!=v(^b)0Tf0%2ts0+#YF*J<8Cg4Lt@S3|R8vK3ZFCra z$y#sL%{5iD)@%k(WwvVE2G#1LwKo1t^=7Na zr=hA^?Fwt1M726{yKb+k))dy-+)G_%tHx)bnk!lBWWHh6TJO*uHC3|K$^6i)wce>a zYpQ6itrvpdo}FNk3fQw$9;j;I$?_+1`);;ikM{5cUxMO2Z4&I8-Au{yr*r$if*$T^ z>C51CH+bCx_2tm|(0*EHvV6CdOv&>1YA-qVf!9}{yG+UQN66G>kv7Z!DtO%sUSEUm zG9}Bul1v@!$1MNr;Pnmg`X+RjDOtYl<(t@#S^l@c>)YTp4c%o*mVcB?Eo{sz|32{A z4_@Da?lL9I-%lnpYP0-*4MrfB)C%gJO$ZI=H7@cJQm{Rq0t6fIxV(WuSx ze+*tf0k5AzcbTH)yL~0gKcEBT_!)TJ58Y*omY>~ACOa_?@`OJJuU~-IFQL0k(egEs zpR)W1^gv}sDp@`%`wxhM2lZf0b#|8j$CBkgq=#y`&Sd!qb+D#NmOovx{6jiaQ$@>f zcBnpC{=<5>rizx&hNU@c`H$$4nkrfTGE~X(Pgf<&pG1``|F90%az)E$jGnUmBRW!3 zMa$3kqe_;4R7Y#7Wcjx--jn4&sz+<8X!+T7jGJ_tKBi+eRkVCJfht-4V|uKnik6>` zQ&+P5<2qhbCCi^il`Q{+PSjLu3d_%TQGK%f$Mtwk6)nG&qq38<@hhmYpQ7Z?LlnX?B4hdR9j4zKf%TzS^iUc es-{YoKT)#$r}cDAwZ&;m+8Edu(8e=RY4N{bg(J!U literal 0 HcmV?d00001 diff --git a/tests/fixtures/disc18/index.bdmv b/tests/fixtures/disc18/index.bdmv new file mode 100644 index 0000000000000000000000000000000000000000..5796e0167e2cfe5c52c5ee16a46b995b530b858a GIT binary patch literal 156 zcmebDbBQo8GB99ZVDJNCd_W1GBwWtR0nTJ#0I`9X5iG<4;sF5@h;RTA3=GU5!U04u PFtC6K2N1!)zzQM&%}xY^ literal 0 HcmV?d00001 diff --git a/tests/fixtures/disc19/CLIPINF/00000.clpi b/tests/fixtures/disc19/CLIPINF/00000.clpi new file mode 100644 index 0000000000000000000000000000000000000000..12b474d060874d75f5ca569517e3af940982c368 GIT binary patch literal 496 zcmeZp@eMODGB99ZV7LRs-xwGeO@R0fkc|#D0L2->g3-MV44fw(pevv|U#`Ie=zM(E ziZOs)%*Y@BriB`+1%xIiJ_Ks9g2^y32ndQwCjvvj011E$6=V=?Fw82*LlOps69{Yp z>Sh!WWME;CV2}aw`G6Q0ZY&FcGz$Y`%R&Yw#WxI0M;0+KzZ7C%W?96*;vx&giy7E> zPBO3_S;D}f_f6m%1B*~t^giJ&+YW~s3)~5toc%cb^RbtaL5gppHr0HO5xV|Aw%C|8 z?s6YbfbmPAz)3E$PM_whikSRfFFG}RmAUZ7rxpb~CoM0eU$izjblqm6>>b;W6%XwL fFTXR`p!dy4p!1J$!BZBKiw+!O!m~wzZesudS|n6F literal 0 HcmV?d00001 diff --git a/tests/fixtures/disc19/CLIPINF/00001.clpi b/tests/fixtures/disc19/CLIPINF/00001.clpi new file mode 100644 index 0000000000000000000000000000000000000000..a90358d2247518fb78cd19071239d5e119c66bdf GIT binary patch literal 556 zcmeZp@eMODGB99ZV7LRs-xwGeO&A!MG=OY$umLE?2o{X)ZD8Q(bU;@?cfMSM2hjQW ztQBJbyO@zd089%_j^zx8JGmGF)+0(V_^E&z`*RX zjDbZ{kAa0{IRk6?8wQq^Se|`;#9Al3+NS5Ywe4H8GxolVtqs;N&NaN?=PmSN-Zl}BUmI1A shAvQ7-LONVg?pdmwX|c>W(Uv8OqaPO$69eiKK1flfn|D6fc|0t0RFvX^#A|> literal 0 HcmV?d00001 diff --git a/tests/fixtures/disc19/CLIPINF/00002.clpi b/tests/fixtures/disc19/CLIPINF/00002.clpi new file mode 100644 index 0000000000000000000000000000000000000000..89b52c15bcc59032e9fd94bcc76cbff558a23150 GIT binary patch literal 480 zcmeZp@eMODGB99ZV7LRs-xwGe*8nkyjSe;d#TmhZ(Y*}}4A}?J70{h8*WdwkK0a&3 z7{D%OWDtPRv;Q1moU>*tP|GHm3_F8>pr~{rFa!*c0LV~52GIt?tb#lwVNf_R2r-CG z019KM7h)8hkeZi{Db6H1p(-OEQ=A!xI16@hpw&7+S2GF-GO#dkFfal6d_XJ$#A!gx X!oc8=&cF~bRs9D8izko2!rUvtb#lS10;ZKC;$Vy5O4qh literal 0 HcmV?d00001 diff --git a/tests/fixtures/disc19/CLIPINF/00004.clpi b/tests/fixtures/disc19/CLIPINF/00004.clpi new file mode 100644 index 0000000000000000000000000000000000000000..1898dda0e09d8ff478cb1cdba8c67e65beb7ee77 GIT binary patch literal 292 zcmeZp@eMODGB99ZV7LRs-xwGeWq?=#$VLYnfa0uR!RX!w1_o9IbOm(h%QbiaosZ92 pF$PAEG$Vrmgr5E90OK4M5ulI~Ooov`gh6y-RzV(v0TMtq6aZ8L53c|K literal 0 HcmV?d00001 diff --git a/tests/fixtures/disc19/CLIPINF/00005.clpi b/tests/fixtures/disc19/CLIPINF/00005.clpi new file mode 100644 index 0000000000000000000000000000000000000000..e5e83edbce02a766f04f9228610fa60d6927ee3d GIT binary patch literal 21380 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 literal 0 HcmV?d00001 diff --git a/tests/fixtures/disc19/CLIPINF/00006.clpi b/tests/fixtures/disc19/CLIPINF/00006.clpi new file mode 100644 index 0000000000000000000000000000000000000000..6d63c6867a82dc5ec8c54c23b49ad0b87158c1c7 GIT binary patch literal 292 zcmeZp@eMODGB99ZV7LRs-xwGeWq?=#$VLYnfa0uR!RX!wAgusq4^}z>=dg$Xg_K}2j0_?Sq7$kI!B) z21bxHBZB~hp8e+l;~W+dppX(w1}G;eDxC-n0RtoeHBSpePUk0HjS22mk;8 literal 0 HcmV?d00001 diff --git a/tests/fixtures/disc19/CLIPINF/00015.clpi b/tests/fixtures/disc19/CLIPINF/00015.clpi new file mode 100644 index 0000000000000000000000000000000000000000..c9e9ddff245d3ea43c79831fe3e17790fe75cd97 GIT binary patch literal 324 zcmeZp@eMODGB99ZV7LRs-xwGeWq{ZL$VLYnfa1(xL76!g3=Av|=nCl0muv6 + + +TEST DISC 19 + + diff --git a/tests/fixtures/disc19/MovieObject.bdmv b/tests/fixtures/disc19/MovieObject.bdmv new file mode 100644 index 0000000000000000000000000000000000000000..46f30df56d9c57fe97fd97b9ac9d27d5b9169b9a GIT binary patch literal 1350 zcmeHG%WlFj5FF>xKraXhDz&E;i5rKgsyIiS5E26ZAfMv?Nk4@@E1u16yHrAf8;3el zG8xaVcgOa2x7yV2b&cLpzKEn~fqdT}SimeA0^UAhKfs;fN5^L#(x3;R4mbx{q;=26A=McN zN3RiYJ3cbc&7RMqEaCU-LzoLMtyyNjfM>0n|F&oMd={lP7TY)UY=sCEeOk_|k3SdF VV*cFSf4|fi^-C_idBv~y>jcvwL7xBs literal 0 HcmV?d00001 diff --git a/tests/fixtures/disc19/PLAYLIST/00000.mpls b/tests/fixtures/disc19/PLAYLIST/00000.mpls new file mode 100644 index 0000000000000000000000000000000000000000..9541ca8ed3b356138af16b7ec2aa1b7bec67272b GIT binary patch literal 280 zcmeYb@Ci0BGB99ZV6Xz>7eI^)@G&r=Nv#6%nSeOJ00exELV|%xgc_;^geE6GwAugn zzXMEz9s>g-l5S2$0YQiqt8^le!N~~aGO#unW)T z2&$KLLTX+*hz~Lq2v{dnW#ohS%xHWT6h2V32v~r1BFH=-P+|NlV(VBV6;h6o;SoYz|fkI&-VOazbLu#*Rg_hCssf+sln Ol_i2F6jgo!!UF(Ej5_WB literal 0 HcmV?d00001 diff --git a/tests/fixtures/disc19/PLAYLIST/00003.mpls b/tests/fixtures/disc19/PLAYLIST/00003.mpls new file mode 100644 index 0000000000000000000000000000000000000000..3df0a91ab24a22717abe89f33aba32d66e48af81 GIT binary patch literal 1746 zcmb`HO$x#=5QQggqt>6=f;(NhmL&d*pa-x}s26bSLcEG=U3d@|p2RbF0HIEsq7340 zhCt>EGjEmm;$)L5qZ9xv0OSMje-(fLSl;AnT~5d=HW9ui3TqmhZHgeyue-Q-opK1k z!EONgG9FvL2qW9c?hYFtXY7JJ?T-hriZgb_Ik%!#?24LQamcPXVplZmieq-g3A-Y@ zXEeKKG`nXEyJrl$XAJv)G^{QJ=!1*FDWI2Uul<>M)c&OJvqsIj-P6n(PgBm$1vIDBW*AU?Quv3(?^e@Q0LTTd;WXU zpH*`F{iO?Mt`U3AA5h*?s(fLX?T#omtSjvLsq%xhM5BY%VcL?M{aq^ zpm0ZV9`E2+7&)K|1a*K-neSisS8(mF`n06_x~ zGz51it(&QfI{O&ox~Q9IrcDsE1%gH(Rp$#2)2`Z#bMtDm{)=(tV(8V#V6(R%%>ap=++VxbwA9OWUZV zEwx0{HVE1Q=`;O*r42F-P?!INaRXG%xbA|WJrJ}HQgwcGxp8^Ay^>YdW?Z`Zo@T4Y zqfx_J+AvBR>Hq{Cf}kUCchWX9ZK94d?i<#>u}POY20@yp`DL zmvQ=W1ttAiOMl+dU$pdh(*7qH9UmkQ)nC-g-7qyxnVEgZ%sfZHt(o=y#mwS~{e;T( zyM|XTBW-4yQ91jA%AOZst;)4`ZI$CLuI5~3!rU~ca`8KrJ)^){mFuU|Rym#-Rps(f zU9jhT&iAtSV=j`7YgMkFe_Q3a(W=VjskAgLsoeRL${vAWt;+QZYpWbrc2&9D*4w6S zc6R<5Z@nJ7j+cO!um6OQc1%0v{=bf~?9u!(XtH)qyRbOpIxro;vTazNfR5KdlXYl1gjE;^t0$!6K4`LzOh>S~ zm-*wEpq`=+K$CTBI)=p@AIDVlWP2SnStq8GlJ!GOJx{(jK$CT9I`xV_=R-2F#6vy2 u!8$XYm1F%D!^#8eP0$?c+;m>DhB3@M(B1+~)`jW9S)!tco#SoLVEqZ(A7Y#U literal 0 HcmV?d00001 diff --git a/tests/fixtures/disc19/index.bdmv b/tests/fixtures/disc19/index.bdmv new file mode 100644 index 0000000000000000000000000000000000000000..cee9035c41e13403bc7e79957f6ae45736b20289 GIT binary patch literal 132 zcmebDbBQo8GB99ZVDJNCd_W1GBwWtO0nTJ#0I`9X5iG<6WPtz^h;RTA3=GU50svo! B1K Date: Sat, 28 Feb 2026 20:52:06 +1000 Subject: [PATCH 3/3] test: add disc15-19 integration tests and update matrix Per-disc integration tests for each new fixture: - test_disc15_scan.py: chapter-split, 4 episodes, no specials - test_disc16_scan.py: chapter-split, 4 episodes, 4 specials - test_disc17_scan.py: single OVA + digital archive (44 items) - test_disc18_scan.py: single movie + 2 specials - test_disc19_scan.py: single OVA + hint-backed digital archive (17 items) Updated conftest.py with session-scoped path and analysis fixtures. Updated all 6 parametrizations in test_disc_matrix.py. Test count: 307 -> 321, all passing. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- tests/conftest.py | 60 +++++++++++++++++++++++++++++++++++++++ tests/test_disc15_scan.py | 45 +++++++++++++++++++++++++++++ tests/test_disc16_scan.py | 56 ++++++++++++++++++++++++++++++++++++ tests/test_disc17_scan.py | 39 +++++++++++++++++++++++++ tests/test_disc18_scan.py | 43 ++++++++++++++++++++++++++++ tests/test_disc19_scan.py | 59 ++++++++++++++++++++++++++++++++++++++ tests/test_disc_matrix.py | 30 ++++++++++++++++++++ 7 files changed, 332 insertions(+) create mode 100644 tests/test_disc15_scan.py create mode 100644 tests/test_disc16_scan.py create mode 100644 tests/test_disc17_scan.py create mode 100644 tests/test_disc18_scan.py create mode 100644 tests/test_disc19_scan.py diff --git a/tests/conftest.py b/tests/conftest.py index 2d373dd..6a3ef83 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -208,6 +208,66 @@ def disc13_analysis(disc13_path): return _analyze_fixture(disc13_path) +@pytest.fixture(scope="session") +def disc15_path() -> Path: + """Return path to bundled disc15 fixture.""" + return _fixture_path("disc15") + + +@pytest.fixture(scope="session") +def disc15_analysis(disc15_path): + """Run and cache full analysis for the bundled disc15 fixture.""" + return _analyze_fixture(disc15_path) + + +@pytest.fixture(scope="session") +def disc16_path() -> Path: + """Return path to bundled disc16 fixture.""" + return _fixture_path("disc16") + + +@pytest.fixture(scope="session") +def disc16_analysis(disc16_path): + """Run and cache full analysis for the bundled disc16 fixture.""" + return _analyze_fixture(disc16_path) + + +@pytest.fixture(scope="session") +def disc17_path() -> Path: + """Return path to bundled disc17 fixture.""" + return _fixture_path("disc17") + + +@pytest.fixture(scope="session") +def disc17_analysis(disc17_path): + """Run and cache full analysis for the bundled disc17 fixture.""" + return _analyze_fixture(disc17_path) + + +@pytest.fixture(scope="session") +def disc18_path() -> Path: + """Return path to bundled disc18 fixture.""" + return _fixture_path("disc18") + + +@pytest.fixture(scope="session") +def disc18_analysis(disc18_path): + """Run and cache full analysis for the bundled disc18 fixture.""" + return _analyze_fixture(disc18_path) + + +@pytest.fixture(scope="session") +def disc19_path() -> Path: + """Return path to bundled disc19 fixture.""" + return _fixture_path("disc19") + + +@pytest.fixture(scope="session") +def disc19_analysis(disc19_path): + """Run and cache full analysis for the bundled disc19 fixture.""" + return _analyze_fixture(disc19_path) + + @pytest.fixture def cli_runner() -> Callable[..., subprocess.CompletedProcess[str]]: """Return helper to invoke `python -m bdpl.cli` consistently in tests.""" diff --git a/tests/test_disc15_scan.py b/tests/test_disc15_scan.py new file mode 100644 index 0000000..5ce2f02 --- /dev/null +++ b/tests/test_disc15_scan.py @@ -0,0 +1,45 @@ +"""Tests for disc15 fixture — chapter-split disc with 4 episodes, no specials.""" + +from __future__ import annotations + +import pytest + +from bdpl.model import DiscAnalysis + +pytestmark = pytest.mark.integration + + +class TestDisc15Episodes: + def test_episode_count(self, disc15_analysis: DiscAnalysis) -> None: + assert len(disc15_analysis.episodes) == 4 + + def test_episodes_are_ordered(self, disc15_analysis: DiscAnalysis) -> None: + nums = [ep.episode for ep in disc15_analysis.episodes] + assert nums == [1, 2, 3, 4] + + def test_episode_durations_reasonable(self, disc15_analysis: DiscAnalysis) -> None: + for ep in disc15_analysis.episodes: + dur_min = ep.duration_ms / 60000 + assert 15 < dur_min < 35, f"Ep {ep.episode} duration {dur_min:.1f}min out of range" + + def test_all_episodes_from_same_playlist(self, disc15_analysis: DiscAnalysis) -> None: + for ep in disc15_analysis.episodes: + assert ep.playlist == "00002.mpls" + + def test_episode_segments_dont_overlap(self, disc15_analysis: DiscAnalysis) -> None: + for i in range(len(disc15_analysis.episodes) - 1): + seg_a = disc15_analysis.episodes[i].segments[0] + seg_b = disc15_analysis.episodes[i + 1].segments[0] + assert seg_a.out_ms <= seg_b.in_ms, ( + f"Ep {i + 1} end {seg_a.out_ms} overlaps Ep {i + 2} start {seg_b.in_ms}" + ) + + +class TestDisc15Specials: + def test_no_special_features(self, disc15_analysis: DiscAnalysis) -> None: + assert len(disc15_analysis.special_features) == 0 + + +class TestDisc15Metadata: + def test_disc_title(self, disc15_analysis: DiscAnalysis) -> None: + assert disc15_analysis.disc_title == "TEST DISC 15" diff --git a/tests/test_disc16_scan.py b/tests/test_disc16_scan.py new file mode 100644 index 0000000..fb69a80 --- /dev/null +++ b/tests/test_disc16_scan.py @@ -0,0 +1,56 @@ +"""Tests for disc16 fixture — chapter-split disc with 4 episodes and 4 specials.""" + +from __future__ import annotations + +from collections import Counter + +import pytest + +from bdpl.model import DiscAnalysis + +pytestmark = pytest.mark.integration + + +class TestDisc16Episodes: + def test_episode_count(self, disc16_analysis: DiscAnalysis) -> None: + assert len(disc16_analysis.episodes) == 4 + + def test_episodes_are_ordered(self, disc16_analysis: DiscAnalysis) -> None: + nums = [ep.episode for ep in disc16_analysis.episodes] + assert nums == [1, 2, 3, 4] + + def test_episode_durations_reasonable(self, disc16_analysis: DiscAnalysis) -> None: + for ep in disc16_analysis.episodes: + dur_min = ep.duration_ms / 60000 + assert 15 < dur_min < 35, f"Ep {ep.episode} duration {dur_min:.1f}min out of range" + + def test_all_episodes_from_same_playlist(self, disc16_analysis: DiscAnalysis) -> None: + for ep in disc16_analysis.episodes: + assert ep.playlist == "00002.mpls" + + def test_episode_segments_dont_overlap(self, disc16_analysis: DiscAnalysis) -> None: + for i in range(len(disc16_analysis.episodes) - 1): + seg_a = disc16_analysis.episodes[i].segments[0] + seg_b = disc16_analysis.episodes[i + 1].segments[0] + assert seg_a.out_ms <= seg_b.in_ms, ( + f"Ep {i + 1} end {seg_a.out_ms} overlaps Ep {i + 2} start {seg_b.in_ms}" + ) + + +class TestDisc16Specials: + def test_special_feature_count(self, disc16_analysis: DiscAnalysis) -> None: + assert len(disc16_analysis.special_features) == 4 + + def test_special_categories(self, disc16_analysis: DiscAnalysis) -> None: + cats = Counter(sf.category for sf in disc16_analysis.special_features) + assert cats["extra"] == 2 + assert cats["creditless_ed"] == 2 + + def test_all_specials_visible(self, disc16_analysis: DiscAnalysis) -> None: + for sf in disc16_analysis.special_features: + assert sf.menu_visible + + +class TestDisc16Metadata: + def test_disc_title(self, disc16_analysis: DiscAnalysis) -> None: + assert disc16_analysis.disc_title == "TEST DISC 16" diff --git a/tests/test_disc17_scan.py b/tests/test_disc17_scan.py new file mode 100644 index 0000000..3ba1e62 --- /dev/null +++ b/tests/test_disc17_scan.py @@ -0,0 +1,39 @@ +"""Tests for disc17 fixture — single OVA episode with digital archive.""" + +from __future__ import annotations + +import pytest + +from bdpl.model import DiscAnalysis + +pytestmark = pytest.mark.integration + + +class TestDisc17Episodes: + def test_episode_count(self, disc17_analysis: DiscAnalysis) -> None: + assert len(disc17_analysis.episodes) == 1 + + def test_episode_playlist(self, disc17_analysis: DiscAnalysis) -> None: + assert disc17_analysis.episodes[0].playlist == "00002.mpls" + + def test_episode_duration_reasonable(self, disc17_analysis: DiscAnalysis) -> None: + dur_min = disc17_analysis.episodes[0].duration_ms / 60000 + assert 30 < dur_min < 60, f"Episode duration {dur_min:.1f}min out of range" + + +class TestDisc17Specials: + def test_special_feature_count(self, disc17_analysis: DiscAnalysis) -> None: + assert len(disc17_analysis.special_features) == 1 + + def test_digital_archive_detected(self, disc17_analysis: DiscAnalysis) -> None: + sf = disc17_analysis.special_features[0] + assert sf.category == "digital_archive" + assert sf.playlist == "00003.mpls" + + def test_digital_archive_visible(self, disc17_analysis: DiscAnalysis) -> None: + assert disc17_analysis.special_features[0].menu_visible + + +class TestDisc17Metadata: + def test_disc_title(self, disc17_analysis: DiscAnalysis) -> None: + assert disc17_analysis.disc_title == "TEST DISC 17" diff --git a/tests/test_disc18_scan.py b/tests/test_disc18_scan.py new file mode 100644 index 0000000..0b7636f --- /dev/null +++ b/tests/test_disc18_scan.py @@ -0,0 +1,43 @@ +"""Tests for disc18 fixture — single movie with 2 specials.""" + +from __future__ import annotations + +from collections import Counter + +import pytest + +from bdpl.model import DiscAnalysis + +pytestmark = pytest.mark.integration + + +class TestDisc18Episodes: + def test_episode_count(self, disc18_analysis: DiscAnalysis) -> None: + """Single movie should not be chapter-split.""" + assert len(disc18_analysis.episodes) == 1 + + def test_episode_playlist(self, disc18_analysis: DiscAnalysis) -> None: + assert disc18_analysis.episodes[0].playlist == "00002.mpls" + + def test_episode_duration_reasonable(self, disc18_analysis: DiscAnalysis) -> None: + dur_min = disc18_analysis.episodes[0].duration_ms / 60000 + assert 40 < dur_min < 65, f"Movie duration {dur_min:.1f}min out of range" + + +class TestDisc18Specials: + def test_special_feature_count(self, disc18_analysis: DiscAnalysis) -> None: + assert len(disc18_analysis.special_features) == 2 + + def test_special_categories(self, disc18_analysis: DiscAnalysis) -> None: + cats = Counter(sf.category for sf in disc18_analysis.special_features) + assert cats["extra"] == 1 + assert cats["creditless_ed"] == 1 + + def test_all_specials_visible(self, disc18_analysis: DiscAnalysis) -> None: + for sf in disc18_analysis.special_features: + assert sf.menu_visible + + +class TestDisc18Metadata: + def test_disc_title(self, disc18_analysis: DiscAnalysis) -> None: + assert disc18_analysis.disc_title == "TEST DISC 18" diff --git a/tests/test_disc19_scan.py b/tests/test_disc19_scan.py new file mode 100644 index 0000000..0018a6e --- /dev/null +++ b/tests/test_disc19_scan.py @@ -0,0 +1,59 @@ +"""Tests for disc19 fixture — single OVA episode with digital archive (hint-backed).""" + +from __future__ import annotations + +import pytest + +from bdpl.model import DiscAnalysis + +pytestmark = pytest.mark.integration + + +class TestDisc19Episodes: + def test_episode_count(self, disc19_analysis: DiscAnalysis) -> None: + assert len(disc19_analysis.episodes) == 1 + + def test_episode_playlist(self, disc19_analysis: DiscAnalysis) -> None: + assert disc19_analysis.episodes[0].playlist == "00002.mpls" + + def test_episode_duration_reasonable(self, disc19_analysis: DiscAnalysis) -> None: + dur_min = disc19_analysis.episodes[0].duration_ms / 60000 + assert 30 < dur_min < 60, f"Episode duration {dur_min:.1f}min out of range" + + +class TestDisc19Specials: + def test_special_feature_count(self, disc19_analysis: DiscAnalysis) -> None: + assert len(disc19_analysis.special_features) == 1 + + def test_digital_archive_detected(self, disc19_analysis: DiscAnalysis) -> None: + sf = disc19_analysis.special_features[0] + assert sf.category == "digital_archive" + assert sf.playlist == "00003.mpls" + + def test_digital_archive_visible(self, disc19_analysis: DiscAnalysis) -> None: + assert disc19_analysis.special_features[0].menu_visible + + def test_digital_archive_hint_backed(self, disc19_analysis: DiscAnalysis) -> None: + """Disc19 has only 17 archive items — below strict 20-item threshold. + + Detection succeeds via two structural signals: title hints from + disc navigation and the absence of audio streams in play items. + """ + from pathlib import Path + + from bdpl.analyze.classify import is_digital_archive_playlist + from bdpl.bdmv.mpls import parse_mpls_dir + + pl_dir = Path(__file__).parent / "fixtures" / "disc19" / "PLAYLIST" + playlists = parse_mpls_dir(pl_dir) + archive_pl = next(p for p in playlists if p.mpls == "00003.mpls") + assert len(archive_pl.play_items) < 20, "Below strict item threshold" + # Title hint alone is sufficient + assert is_digital_archive_playlist(archive_pl, has_title_hint=True) + # No-audio signal alone is also sufficient (items have no audio streams) + assert is_digital_archive_playlist(archive_pl, has_title_hint=False) + + +class TestDisc19Metadata: + def test_disc_title(self, disc19_analysis: DiscAnalysis) -> None: + assert disc19_analysis.disc_title == "TEST DISC 19" diff --git a/tests/test_disc_matrix.py b/tests/test_disc_matrix.py index 4ee585c..8ed2b8a 100644 --- a/tests/test_disc_matrix.py +++ b/tests/test_disc_matrix.py @@ -25,6 +25,11 @@ ("disc11_analysis", 6, ["00002.mpls"] * 6), ("disc12_analysis", 5, ["00002.mpls"] * 5), ("disc13_analysis", 6, ["00002.mpls"] * 6), + ("disc15_analysis", 4, ["00002.mpls"] * 4), + ("disc16_analysis", 4, ["00002.mpls"] * 4), + ("disc17_analysis", 1, ["00002.mpls"]), + ("disc18_analysis", 1, ["00002.mpls"]), + ("disc19_analysis", 1, ["00002.mpls"]), ], ) def test_disc_episode_expectation_matrix( @@ -55,6 +60,11 @@ def test_disc_episode_expectation_matrix( ("disc11_analysis", 1, 1), # 1 short extra ("disc12_analysis", 3, 3), # 3 commentaries (play_all-only episodes) ("disc13_analysis", 9, 9), # 2 commentary + 5 creditless + 2 extra + ("disc15_analysis", 0, 0), # chapter-split disc with no extras + ("disc16_analysis", 4, 4), # 2 extras + 2 creditless EDs + ("disc17_analysis", 1, 1), # 1 digital archive + ("disc18_analysis", 2, 2), # 1 extra + 1 creditless ED + ("disc19_analysis", 1, 1), # 1 digital archive (hint-backed) ], ) def test_disc_special_visibility_expectation_matrix( @@ -89,6 +99,11 @@ def test_disc_special_visibility_expectation_matrix( "disc11_analysis", "disc12_analysis", "disc13_analysis", + "disc15_analysis", + "disc16_analysis", + "disc17_analysis", + "disc18_analysis", + "disc19_analysis", ], ) def test_disc_episode_segment_boundaries_matrix( @@ -127,6 +142,11 @@ def test_disc_episode_segment_boundaries_matrix( "disc11_analysis", "disc12_analysis", "disc13_analysis", + "disc15_analysis", + "disc16_analysis", + "disc17_analysis", + "disc18_analysis", + "disc19_analysis", ], ) def test_disc_special_boundary_semantics_matrix( @@ -172,6 +192,11 @@ def test_disc_special_boundary_semantics_matrix( ("disc11_analysis", 0), ("disc12_analysis", 0), ("disc13_analysis", 0), + ("disc15_analysis", 0), + ("disc16_analysis", 0), + ("disc17_analysis", 0), + ("disc18_analysis", 0), + ("disc19_analysis", 0), ], ) def test_disc_special_chapter_split_expectation_matrix( @@ -200,6 +225,11 @@ def test_disc_special_chapter_split_expectation_matrix( ("disc11_analysis", "TEST DISC 11"), ("disc12_analysis", "TEST DISC 12"), ("disc13_analysis", "TEST DISC 13"), + ("disc15_analysis", "TEST DISC 15"), + ("disc16_analysis", "TEST DISC 16"), + ("disc17_analysis", "TEST DISC 17"), + ("disc18_analysis", "TEST DISC 18"), + ("disc19_analysis", "TEST DISC 19"), ], ) def test_disc_title_extraction_matrix(