1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206
|
# coding=utf-8
# --------------------------------------------------------------------------
# Copyright (c) Microsoft Corporation. All rights reserved.
# Licensed under the MIT License.
# --------------------------------------------------------------------------
"""
Simple smoke tests to verify the unit test suite functionality.
Run this file directly to test the basic imports and functionality.
"""
import pytest
pytest.importorskip(
"aiohttp",
reason="Skipping aio tests: aiohttp not installed (whl_no_aio).",
)
def test_basic_imports():
"""Test that key components can be imported."""
try:
# Test enum imports
from azure.ai.voicelive.models import (
AzureVoiceType,
MessageRole,
OpenAIVoiceName,
InputAudioFormat,
OutputAudioFormat,
Modality,
)
# Test model imports
from azure.ai.voicelive.models import (
InputTextContentPart,
OutputTextContentPart,
UserMessageItem,
AssistantMessageItem,
SystemMessageItem,
OpenAIVoice,
AzureStandardVoice,
AzurePersonalVoice,
RequestSession,
)
# Test async imports
from azure.ai.voicelive.aio import (
VoiceLiveConnection,
SessionResource,
ResponseResource,
ConnectionError,
ConnectionClosed,
)
print("✅ All imports successful!")
assert True
except ImportError as e:
print(f"❌ Import failed: {e}")
assert False
def test_enum_functionality():
"""Test basic enum functionality."""
try:
from azure.ai.voicelive.models import AzureVoiceType, MessageRole, OpenAIVoiceName
# Test enum values
assert AzureVoiceType.AZURE_CUSTOM == "azure-custom"
assert MessageRole.USER == "user"
assert OpenAIVoiceName.ALLOY == "alloy"
# Test enum comparison
assert AzureVoiceType.AZURE_STANDARD.value == "azure-standard"
assert MessageRole.ASSISTANT.value == "assistant"
print("✅ Enum functionality works!")
assert True
except (ImportError, AssertionError) as e:
print(f"❌ Enum test failed: {e}")
assert False
def test_model_creation():
"""Test basic model creation."""
try:
from azure.ai.voicelive.models import (
InputTextContentPart,
UserMessageItem,
AzureStandardVoice,
OpenAIVoice,
OpenAIVoiceName,
RequestSession,
)
# Test content part creation
content = InputTextContentPart(text="Hello, world!")
assert content.text == "Hello, world!"
assert content.type == "input_text"
# Test message creation
message = UserMessageItem(content=[content])
assert message.role == "user"
assert len(message.content) == 1
# Test voice creation
openai_voice = OpenAIVoice(name=OpenAIVoiceName.ALLOY)
assert openai_voice.type == "openai"
assert openai_voice.name == OpenAIVoiceName.ALLOY
azure_voice = AzureStandardVoice(name="en-US-JennyNeural")
assert azure_voice.type == "azure-standard"
assert azure_voice.name == "en-US-JennyNeural"
# Test session creation
session = RequestSession(model="gpt-4o-realtime-preview", voice=openai_voice)
assert session.model == "gpt-4o-realtime-preview"
assert session.voice == openai_voice
print("✅ Model creation works!")
assert True
except Exception as e:
print(f"❌ Model creation test failed: {e}")
assert False
def test_recent_changes():
"""Test recent changes from the staged commits."""
try:
from azure.ai.voicelive.models import (
AzureVoiceType,
MessageRole,
MessageContentPart,
InputTextContentPart,
OutputTextContentPart,
AzureCustomVoice,
AzureStandardVoice,
AzurePersonalVoice,
PersonalVoiceModels,
)
# Test new AzureVoiceType enum
assert AzureVoiceType.AZURE_CUSTOM == "azure-custom"
assert AzureVoiceType.AZURE_STANDARD == "azure-standard"
assert AzureVoiceType.AZURE_PERSONAL == "azure-personal"
# Test MessageRole enum
assert MessageRole.USER == "user"
assert MessageRole.ASSISTANT == "assistant"
assert MessageRole.SYSTEM == "system"
# Test MessageContentPart hierarchy (renamed from UserContentPart)
text_part = InputTextContentPart(text="Test")
output_part = OutputTextContentPart(text="Response")
assert isinstance(text_part, MessageContentPart)
assert isinstance(output_part, MessageContentPart)
# Test Azure voice types with enum discriminators
standard_voice = AzureStandardVoice(name="test-voice")
assert standard_voice.type == AzureVoiceType.AZURE_STANDARD
custom_voice = AzureCustomVoice(name="custom-voice", endpoint_id="endpoint-123")
assert custom_voice.type == AzureVoiceType.AZURE_CUSTOM
personal_voice = AzurePersonalVoice(name="personal-voice", model=PersonalVoiceModels.PHOENIX_LATEST_NEURAL)
assert personal_voice.type == AzureVoiceType.AZURE_PERSONAL
print("✅ Recent changes work correctly!")
assert True
except Exception as e:
print(f"❌ Recent changes test failed: {e}")
assert False
def run_all_tests():
"""Run all smoke tests."""
print("🧪 Running Azure AI VoiceLive SDK unit test validation...\n")
tests = [
("Basic Imports", test_basic_imports),
("Enum Functionality", test_enum_functionality),
("Model Creation", test_model_creation),
("Recent Changes", test_recent_changes),
]
passed = 0
total = len(tests)
for test_name, test_func in tests:
print(f"Running {test_name}...")
if test_func():
passed += 1
print()
print(f"🏁 Test Results: {passed}/{total} tests passed")
if passed == total:
print("🎉 All smoke tests passed! The unit test suite should work correctly.")
return True
else:
print("⚠️ Some tests failed. Check the implementation or test setup.")
return False
if __name__ == "__main__":
run_all_tests()
|