clipforge / humeo-core /tests /test_select_clips.py
moonlantern1's picture
Deploy ClipForge Docker Space
eda316b verified
from humeo_core.primitives.select_clips import select_clips_heuristic
from humeo_core.schemas import TranscriptWord
def _words(start: float, end: float, n: int) -> list[TranscriptWord]:
step = (end - start) / max(1, n)
return [
TranscriptWord(word=f"w{i}", start_time=start + i * step, end_time=start + (i + 1) * step)
for i in range(n)
]
def test_no_transcript_returns_single_clip():
plan = select_clips_heuristic("/tmp/x.mp4", [], duration_sec=600.0)
assert len(plan.clips) == 1
def test_prefers_dense_windows():
# dense between 30-90, sparse elsewhere
dense = _words(30.0, 90.0, 240) # 4 words/sec
sparse_before = _words(0.0, 30.0, 6)
sparse_after = _words(90.0, 600.0, 30)
words = sparse_before + dense + sparse_after
plan = select_clips_heuristic(
"/tmp/x.mp4", words, duration_sec=600.0, target_count=1, min_sec=30, max_sec=60
)
assert len(plan.clips) == 1
c = plan.clips[0]
assert 30 <= c.start_time_sec <= 90
assert c.end_time_sec <= 120
def test_no_overlap_when_multiple_picked():
dense_a = _words(30.0, 90.0, 240)
dense_b = _words(200.0, 260.0, 240)
words = dense_a + dense_b
plan = select_clips_heuristic(
"/tmp/x.mp4",
words,
duration_sec=400.0,
target_count=3,
min_sec=30,
max_sec=60,
)
# Should pick both dense regions without overlap.
assert len(plan.clips) >= 2
starts_ends = sorted((c.start_time_sec, c.end_time_sec) for c in plan.clips)
for (s1, e1), (s2, e2) in zip(starts_ends, starts_ends[1:]):
assert e1 <= s2