import sys import unittest from pathlib import Path sys.path.insert(0, str(Path(__file__).resolve().parents[1] / "src")) from cthulhu import piperfactory class PiperFactoryRateMappingTests(unittest.TestCase): def setUp(self): self.server = piperfactory.SpeechServer.__new__(piperfactory.SpeechServer) def test_default_rate_maps_to_native_piper_speed(self): self.assertEqual(1.0, self.server._mapRate(50)) def test_rate_scale_uses_full_cthulhu_range(self): self.assertEqual(2.0, self.server._mapRate(0)) self.assertEqual(0.25, self.server._mapRate(100)) def test_high_screen_reader_rate_is_substantially_faster(self): self.assertAlmostEqual(0.415, self.server._mapRate(89), places=3) def test_rate_values_are_clamped(self): self.assertEqual(2.0, self.server._mapRate(-1)) self.assertEqual(0.25, self.server._mapRate(101)) if __name__ == "__main__": unittest.main()