42 lines
1.2 KiB
Python
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
|