# 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