|
|
""" |
|
|
Test filename uniqueness for generate_image |
|
|
""" |
|
|
import os |
|
|
import sys |
|
|
from unittest.mock import Mock, patch |
|
|
from dotenv import load_dotenv |
|
|
import time |
|
|
|
|
|
|
|
|
load_dotenv() |
|
|
|
|
|
|
|
|
sys.path.insert(0, os.path.dirname(os.path.abspath(__file__))) |
|
|
sys.path.insert(0, os.path.join(os.path.dirname(os.path.abspath(__file__)), '..')) |
|
|
|
|
|
from agent import VisualizationAgent |
|
|
from PIL import Image |
|
|
|
|
|
|
|
|
def test_filename_uniqueness(): |
|
|
"""Test that multiple image generations create unique filenames""" |
|
|
print("\n=== Testing Filename Uniqueness ===") |
|
|
|
|
|
try: |
|
|
|
|
|
test_image = Image.new('RGB', (100, 100), color='green') |
|
|
|
|
|
|
|
|
mock_part = Mock() |
|
|
mock_part.inline_data = Mock() |
|
|
mock_part.as_image = Mock(return_value=test_image) |
|
|
|
|
|
|
|
|
mock_response = Mock() |
|
|
mock_response.parts = [mock_part] |
|
|
|
|
|
with patch('agent.genai.Client') as MockClient: |
|
|
mock_client_instance = Mock() |
|
|
mock_client_instance.models.generate_content.return_value = mock_response |
|
|
MockClient.return_value = mock_client_instance |
|
|
|
|
|
agent = VisualizationAgent(api_key="test_key") |
|
|
|
|
|
|
|
|
filenames = [] |
|
|
for i in range(5): |
|
|
result = agent.generate_image(f"Test prompt {i}") |
|
|
assert result["success"] is True, f"Generation {i} failed" |
|
|
filenames.append(result["image_path"]) |
|
|
|
|
|
time.sleep(0.01) |
|
|
|
|
|
|
|
|
unique_filenames = set(filenames) |
|
|
assert len(unique_filenames) == len(filenames), \ |
|
|
f"Duplicate filenames found! {len(unique_filenames)} unique out of {len(filenames)}" |
|
|
|
|
|
print("β All filenames are unique") |
|
|
print(f" Generated {len(filenames)} images with unique names") |
|
|
|
|
|
|
|
|
for filepath in filenames: |
|
|
assert os.path.exists(filepath), f"File not found: {filepath}" |
|
|
|
|
|
print("β All image files created successfully") |
|
|
|
|
|
|
|
|
for filepath in filenames: |
|
|
if os.path.exists(filepath): |
|
|
os.remove(filepath) |
|
|
|
|
|
print(" Cleaned up test images") |
|
|
|
|
|
return True |
|
|
|
|
|
except Exception as e: |
|
|
print(f"β Test failed: {e}") |
|
|
import traceback |
|
|
traceback.print_exc() |
|
|
return False |
|
|
|
|
|
|
|
|
if __name__ == "__main__": |
|
|
print("=" * 70) |
|
|
print("Testing Filename Uniqueness") |
|
|
print("=" * 70) |
|
|
|
|
|
if test_filename_uniqueness(): |
|
|
print("\nβ All tests passed") |
|
|
sys.exit(0) |
|
|
else: |
|
|
print("\nβ Tests failed") |
|
|
sys.exit(1) |
|
|
|