37 lines
1.4 KiB
Python
37 lines
1.4 KiB
Python
from __future__ import annotations
|
|
|
|
import tempfile
|
|
import unittest
|
|
from pathlib import Path
|
|
|
|
from owner_voice_pet.simulation import run_simulated_live
|
|
|
|
|
|
class SimulationTests(unittest.TestCase):
|
|
def test_simulated_live_runs_two_turns_with_context_and_noise_filter(self) -> None:
|
|
result = run_simulated_live(turns=2)
|
|
|
|
self.assertTrue(result["success"], result)
|
|
self.assertEqual(result["completed_turns"], 2)
|
|
self.assertEqual(result["failed_turns"], 0)
|
|
self.assertEqual(result["final_transcripts"], ["第1轮模拟问题", "第2轮模拟问题"])
|
|
self.assertNotIn("家", result["partials"])
|
|
self.assertNotIn("家确", result["partials"])
|
|
self.assertTrue(result["checks"]["context_in_second_turn"])
|
|
self.assertTrue(result["checks"]["denoised_capture"])
|
|
self.assertEqual(result["checks"]["standby_per_turn"], True)
|
|
|
|
def test_simulated_live_can_write_and_replay_fixture(self) -> None:
|
|
with tempfile.TemporaryDirectory() as tmp:
|
|
fixture = Path(tmp) / "simulated-mic.jsonl"
|
|
generated = run_simulated_live(turns=1, write_fixture=fixture)
|
|
replayed = run_simulated_live(turns=1, fixture_path=fixture)
|
|
|
|
self.assertTrue(generated["success"], generated)
|
|
self.assertTrue(replayed["success"], replayed)
|
|
self.assertEqual(replayed["final_transcripts"], ["第1轮模拟问题"])
|
|
|
|
|
|
if __name__ == "__main__":
|
|
unittest.main()
|