Spaces:
Running on Zero
Running on Zero
| import unittest | |
| from studio import ( | |
| LANGUAGE_MAP, | |
| MAX_TEXT_LENGTH, | |
| SAMPLE_RATE, | |
| SPEAKER_MAP, | |
| estimate_gpu_duration, | |
| result_summary, | |
| validate_request, | |
| ) | |
| class StudioConfigurationTests(unittest.TestCase): | |
| def test_all_twelve_languages_are_exposed(self): | |
| self.assertEqual(len(LANGUAGE_MAP), 12) | |
| self.assertEqual( | |
| set(LANGUAGE_MAP.values()), | |
| {"ar-MSA", "de", "en", "es", "fr", "hi", "it", "ja", "ko", "pt-BR", "vi", "zh"}, | |
| ) | |
| def test_all_five_voices_map_to_unique_indices(self): | |
| self.assertEqual(set(SPEAKER_MAP), {"Aria", "Jason", "John", "Leo", "Sofia"}) | |
| self.assertEqual(set(SPEAKER_MAP.values()), set(range(5))) | |
| def test_sample_rate_is_22050_hz(self): | |
| self.assertEqual(SAMPLE_RATE, 22_050) | |
| class RequestValidationTests(unittest.TestCase): | |
| def test_valid_request_is_stripped_and_punctuated(self): | |
| request = validate_request(" Hello world ", "English", "Sofia", True) | |
| self.assertEqual(request.text, "Hello world.") | |
| self.assertEqual(request.language_code, "en") | |
| self.assertEqual(request.speaker_index, 4) | |
| self.assertTrue(request.apply_text_normalization) | |
| def test_supported_non_latin_punctuation_is_preserved(self): | |
| request = validate_request("γγγ«γ‘γ―γ", "Japanese Β· ζ₯ζ¬θͺ", "Aria", False) | |
| self.assertEqual(request.text, "γγγ«γ‘γ―γ") | |
| self.assertFalse(request.apply_text_normalization) | |
| def test_empty_input_is_rejected(self): | |
| for value in (None, "", " "): | |
| with self.subTest(value=value), self.assertRaisesRegex(ValueError, "Enter some text"): | |
| validate_request(value, "English", "Sofia", True) | |
| def test_too_long_input_is_rejected(self): | |
| with self.assertRaisesRegex(ValueError, str(MAX_TEXT_LENGTH)): | |
| validate_request("x" * (MAX_TEXT_LENGTH + 1), "English", "Sofia", True) | |
| def test_unknown_language_is_rejected(self): | |
| with self.assertRaisesRegex(ValueError, "supported languages"): | |
| validate_request("Hello", "Klingon", "Sofia", True) | |
| def test_unknown_speaker_is_rejected(self): | |
| with self.assertRaisesRegex(ValueError, "available Magpie voices"): | |
| validate_request("Hello", "English", "Unknown", True) | |
| class RuntimeHelperTests(unittest.TestCase): | |
| def test_duration_estimate_is_bounded_and_scales(self): | |
| self.assertEqual(estimate_gpu_duration("short"), 20) | |
| self.assertGreater(estimate_gpu_duration("x" * 300), 20) | |
| self.assertEqual(estimate_gpu_duration("x" * 10_000), 75) | |
| def test_result_summary_contains_generation_metadata(self): | |
| summary = result_summary("English", "Sofia", 42, 3.26) | |
| self.assertIn("English", summary) | |
| self.assertIn("Sofia", summary) | |
| self.assertIn("42 chars", summary) | |
| self.assertIn("22.05 kHz", summary) | |
| self.assertIn("3.3s inference", summary) | |
| if __name__ == "__main__": | |
| unittest.main() | |