|
|
|
from unittest.mock import MagicMock, patch
|
|
|
|
|
|
|
|
import pytest
|
|
|
|
|
|
|
|
from swarms.models.zeroscope import ZeroscopeTTV
|
|
|
|
|
|
|
|
|
|
|
|
@patch("swarms.models.zeroscope.DiffusionPipeline")
|
|
|
|
@patch("swarms.models.zeroscope.DPMSolverMultistepScheduler")
|
|
|
|
def test_zeroscope_ttv_init(mock_scheduler, mock_pipeline):
|
|
|
|
zeroscope = ZeroscopeTTV()
|
|
|
|
mock_pipeline.from_pretrained.assert_called_once()
|
|
|
|
mock_scheduler.assert_called_once()
|
|
|
|
assert zeroscope.model_name == "cerspense/zeroscope_v2_576w"
|
|
|
|
assert zeroscope.chunk_size == 1
|
|
|
|
assert zeroscope.dim == 1
|
|
|
|
assert zeroscope.num_inference_steps == 40
|
|
|
|
assert zeroscope.height == 320
|
|
|
|
assert zeroscope.width == 576
|
|
|
|
assert zeroscope.num_frames == 36
|
|
|
|
|
|
|
|
|
|
|
|
@patch("swarms.models.zeroscope.DiffusionPipeline")
|
|
|
|
@patch("swarms.models.zeroscope.DPMSolverMultistepScheduler")
|
|
|
|
def test_zeroscope_ttv_forward(mock_scheduler, mock_pipeline):
|
|
|
|
zeroscope = ZeroscopeTTV()
|
|
|
|
mock_pipeline_instance = MagicMock()
|
|
|
|
mock_pipeline.from_pretrained.return_value = mock_pipeline_instance
|
|
|
|
mock_pipeline_instance.return_value = MagicMock(
|
|
|
|
frames="Generated frames"
|
|
|
|
)
|
|
|
|
mock_pipeline_instance.enable_vae_slicing.assert_called_once()
|
|
|
|
mock_pipeline_instance.enable_forward_chunking.assert_called_once_with(
|
|
|
|
chunk_size=1, dim=1
|
|
|
|
)
|
|
|
|
result = zeroscope.forward("Test task")
|
|
|
|
assert result == "Generated frames"
|
|
|
|
mock_pipeline_instance.assert_called_once_with(
|
|
|
|
"Test task",
|
|
|
|
num_inference_steps=40,
|
|
|
|
height=320,
|
|
|
|
width=576,
|
|
|
|
num_frames=36,
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
|
|
@patch("swarms.models.zeroscope.DiffusionPipeline")
|
|
|
|
@patch("swarms.models.zeroscope.DPMSolverMultistepScheduler")
|
|
|
|
def test_zeroscope_ttv_forward_error(mock_scheduler, mock_pipeline):
|
|
|
|
zeroscope = ZeroscopeTTV()
|
|
|
|
mock_pipeline_instance = MagicMock()
|
|
|
|
mock_pipeline.from_pretrained.return_value = mock_pipeline_instance
|
|
|
|
mock_pipeline_instance.return_value = MagicMock(
|
|
|
|
frames="Generated frames"
|
|
|
|
)
|
|
|
|
mock_pipeline_instance.side_effect = Exception("Test error")
|
|
|
|
with pytest.raises(Exception, match="Test error"):
|
|
|
|
zeroscope.forward("Test task")
|
|
|
|
|
|
|
|
|
|
|
|
@patch("swarms.models.zeroscope.DiffusionPipeline")
|
|
|
|
@patch("swarms.models.zeroscope.DPMSolverMultistepScheduler")
|
|
|
|
def test_zeroscope_ttv_call(mock_scheduler, mock_pipeline):
|
|
|
|
zeroscope = ZeroscopeTTV()
|
|
|
|
mock_pipeline_instance = MagicMock()
|
|
|
|
mock_pipeline.from_pretrained.return_value = mock_pipeline_instance
|
|
|
|
mock_pipeline_instance.return_value = MagicMock(
|
|
|
|
frames="Generated frames"
|
|
|
|
)
|
|
|
|
result = zeroscope.__call__("Test task")
|
|
|
|
assert result == "Generated frames"
|
|
|
|
mock_pipeline_instance.assert_called_once_with(
|
|
|
|
"Test task",
|
|
|
|
num_inference_steps=40,
|
|
|
|
height=320,
|
|
|
|
width=576,
|
|
|
|
num_frames=36,
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
|
|
@patch("swarms.models.zeroscope.DiffusionPipeline")
|
|
|
|
@patch("swarms.models.zeroscope.DPMSolverMultistepScheduler")
|
|
|
|
def test_zeroscope_ttv_call_error(mock_scheduler, mock_pipeline):
|
|
|
|
zeroscope = ZeroscopeTTV()
|
|
|
|
mock_pipeline_instance = MagicMock()
|
|
|
|
mock_pipeline.from_pretrained.return_value = mock_pipeline_instance
|
|
|
|
mock_pipeline_instance.return_value = MagicMock(
|
|
|
|
frames="Generated frames"
|
|
|
|
)
|
|
|
|
mock_pipeline_instance.side_effect = Exception("Test error")
|
|
|
|
with pytest.raises(Exception, match="Test error"):
|
|
|
|
zeroscope.__call__("Test task")
|
|
|
|
|
|
|
|
|
|
|
|
@patch("swarms.models.zeroscope.DiffusionPipeline")
|
|
|
|
@patch("swarms.models.zeroscope.DPMSolverMultistepScheduler")
|
|
|
|
def test_zeroscope_ttv_save_video_path(mock_scheduler, mock_pipeline):
|
|
|
|
zeroscope = ZeroscopeTTV()
|
|
|
|
mock_pipeline_instance = MagicMock()
|
|
|
|
mock_pipeline.from_pretrained.return_value = mock_pipeline_instance
|
|
|
|
mock_pipeline_instance.return_value = MagicMock(
|
|
|
|
frames="Generated frames"
|
|
|
|
)
|
|
|
|
result = zeroscope.save_video_path("Test video path")
|
|
|
|
assert result == "Test video path"
|
|
|
|
mock_pipeline_instance.assert_called_once_with(
|
|
|
|
"Test video path",
|
|
|
|
num_inference_steps=40,
|
|
|
|
height=320,
|
|
|
|
width=576,
|
|
|
|
num_frames=36,
|
|
|
|
)
|