Files
UmbraAudio/tests/test_vocals_project.py
2026-10-18 19:01:04 -07:00

42 lines
1.2 KiB
Python

# Copyright 2026 Umbra Tools (umbratools.com)
# SPDX-License-Identifier: Apache-2.0
from __future__ import annotations
import sys
from pathlib import Path
sys.path.insert(0, str(Path(__file__).resolve().parent.parent))
from scripts.create_vocals_project import ( # noqa: E402
RAINBOW_SENTENCES,
SPEAKERS,
VARIATIONS,
plan_utterances,
)
def test_plan_utterances_covers_both_speakers_and_all_variations() -> None:
plan = plan_utterances()
assert len(plan) == len(SPEAKERS) * len(VARIATIONS)
assert [u["speaker_name"] for u in plan] == (
[SPEAKERS[0]] * len(VARIATIONS) + [SPEAKERS[1]] * len(VARIATIONS)
)
assert [u["emotion"] for u in plan[: len(VARIATIONS)]] == VARIATIONS
assert [u["emotion"] for u in plan[len(VARIATIONS):]] == VARIATIONS
def test_plan_utterances_use_rainbow_sentences() -> None:
plan = plan_utterances()
used = {u["text"] for u in plan}
assert set(RAINBOW_SENTENCES) == used
for u in plan:
assert u["text"] in RAINBOW_SENTENCES
assert u["pace"] == "moderate"
def test_rainbow_sentences_are_phonetically_distinct() -> None:
assert len(RAINBOW_SENTENCES) >= 6
long_enough = all(len(s.split()) >= 6 for s in RAINBOW_SENTENCES)
assert long_enough