voice_audio_multi/tests/mira_tts/test_compare_optimization.py
Fabio c36510c21e
Some checks failed
Linux Build / Linux cpu (push) Has been cancelled
Linux Build / Linux cpu-clang (push) Has been cancelled
Linux Build / Linux vulkan (push) Has been cancelled
mac-build / macOS CPU (push) Has been cancelled
Nix Build / Nix (cpu) (push) Has been cancelled
Nix Build / Nix (vulkan) (push) Has been cancelled
windows-build / Windows CPU (push) Has been cancelled
Initial import: audio.cpp with Orange Pi documentation
2026-11-04 19:05:22 +01:00

71 lines
2.6 KiB
Python

"""Regression tests for the exact-output optimization gate (no models needed)."""
import json
from pathlib import Path
import tempfile
import unittest
from compare_optimization import compare
class ComparisonTests(unittest.TestCase):
def setUp(self):
self.temp = tempfile.TemporaryDirectory()
self.addCleanup(self.temp.cleanup)
root = Path(self.temp.name)
self.before, self.after = root / "before.json", root / "after.json"
self.audio = [root / "before.wav", root / "after.wav"]
for path in self.audio:
path.write_bytes(b"test audio payload")
self.payload = {
"family": "mira_tts", "backend": "cpu", "model": "model.gguf",
"mode": "offline", "results": [{
"name": "repeat", "iteration": 1, "mode": "offline",
"audio_hash": "same", "samples": 48000, "sample_rate": 48000,
"channels": 1, "audio_seconds": 1.0, "event_count": 0,
"wall_ms": 1000, "audio_out": str(self.audio[0]),
}],
}
self.before.write_text(json.dumps(self.payload), encoding="utf-8")
self.payload["results"][0]["audio_out"] = str(self.audio[1])
self.payload["results"][0]["wall_ms"] = 900
self.save_after()
def save_after(self):
self.after.write_text(json.dumps(self.payload), encoding="utf-8")
def test_identical_output(self):
self.assertIn("10.0%", compare(self.before, self.after)[0])
def test_changed_wav_even_with_same_reported_hash(self):
self.audio[1].write_bytes(b"changed audio")
with self.assertRaisesRegex(ValueError, "WAV bytes differ"):
compare(self.before, self.after)
def test_different_metadata(self):
self.payload["results"][0]["event_count"] = 2
self.save_after()
with self.assertRaisesRegex(ValueError, "event_count changed"):
compare(self.before, self.after)
def test_wrong_backend(self):
self.payload["backend"] = "vulkan"
self.save_after()
with self.assertRaisesRegex(ValueError, "different backend"):
compare(self.before, self.after)
def test_empty_results(self):
self.payload["results"] = []
self.save_after()
with self.assertRaisesRegex(ValueError, "empty results"):
compare(self.before, self.after)
def test_duplicate_results(self):
self.payload["results"].append(self.payload["results"][0])
self.save_after()
with self.assertRaisesRegex(ValueError, "duplicate request"):
compare(self.before, self.after)
if __name__ == "__main__":
unittest.main()