144 lines
5.0 KiB
Python
144 lines
5.0 KiB
Python
##
|
|
# From /scripts directory, run like: python -m unittest deforum_helpers.parseq_adapter_test
|
|
##
|
|
|
|
import unittest
|
|
from .parseq_adapter import ParseqAnimKeys
|
|
from .animation_key_frames import DeformAnimKeys
|
|
from unittest.mock import patch
|
|
from unittest.mock import MagicMock, PropertyMock
|
|
|
|
from types import SimpleNamespace
|
|
|
|
from modules.shared import opts
|
|
|
|
DEBUG_MODE = opts.data.get("deforum_debug_mode_enabled", False)
|
|
|
|
class TestParseqAnimKeys(unittest.TestCase):
|
|
|
|
@patch('deforum_helpers.parseq_adapter.DeformAnimKeys')
|
|
def test_withprompt(self, mock_deformanimkeys):
|
|
parseq_args = SimpleNamespace(parseq_use_deltas=True, parseq_manifest="""
|
|
{
|
|
"options": {
|
|
"output_fps": 30
|
|
},
|
|
"rendered_frames": [
|
|
{
|
|
"frame": 0,
|
|
"deforum_prompt": "blah"
|
|
},
|
|
{
|
|
"frame": 1,
|
|
"deforum_prompt": "blah"
|
|
}
|
|
]
|
|
}
|
|
""")
|
|
anim_args = SimpleNamespace(max_frames=2)
|
|
video_args = SimpleNamespace(fps=30)
|
|
parseq_anim_keys = ParseqAnimKeys(parseq_args, anim_args, video_args)
|
|
self.assertTrue(parseq_anim_keys.manages_prompts())
|
|
|
|
|
|
@patch('deforum_helpers.parseq_adapter.DeformAnimKeys')
|
|
def test_withoutprompt(self, mock_deformanimkeys):
|
|
parseq_args = SimpleNamespace(parseq_use_deltas=True, parseq_manifest="""
|
|
{
|
|
"options": {
|
|
"output_fps": 30
|
|
},
|
|
"rendered_frames": [
|
|
{
|
|
"frame": 0
|
|
},
|
|
{
|
|
"frame": 1
|
|
}
|
|
]
|
|
}
|
|
""")
|
|
anim_args = SimpleNamespace(max_frames=2)
|
|
video_args = SimpleNamespace(fps=30)
|
|
parseq_anim_keys = ParseqAnimKeys(parseq_args, anim_args, video_args)
|
|
self.assertFalse(parseq_anim_keys.manages_prompts())
|
|
|
|
@patch('deforum_helpers.parseq_adapter.DeformAnimKeys')
|
|
def test_usedelta(self, mock_deformanimkeys):
|
|
parseq_args = SimpleNamespace(parseq_use_deltas=True, parseq_manifest="""
|
|
{
|
|
"options": {
|
|
"output_fps": 30
|
|
},
|
|
"rendered_frames": [
|
|
{
|
|
"frame": 0,
|
|
"angle": 90,
|
|
"angle_delta": 90
|
|
},
|
|
{
|
|
"frame": 1,
|
|
"angle": 180,
|
|
"angle_delta": 90
|
|
}
|
|
]
|
|
}
|
|
""")
|
|
anim_args = SimpleNamespace(max_frames=2)
|
|
video_args = SimpleNamespace(fps=30)
|
|
parseq_anim_keys = ParseqAnimKeys(parseq_args, anim_args, video_args)
|
|
self.assertEqual(parseq_anim_keys.angle_series[1], 90)
|
|
|
|
@patch('deforum_helpers.parseq_adapter.DeformAnimKeys')
|
|
def test_usenondelta(self, mock_deformanimkeys):
|
|
parseq_args = SimpleNamespace(parseq_use_deltas=False, parseq_manifest="""
|
|
{
|
|
"options": {
|
|
"output_fps": 30
|
|
},
|
|
"rendered_frames": [
|
|
{
|
|
"frame": 0,
|
|
"angle": 90,
|
|
"angle_delta": 90
|
|
},
|
|
{
|
|
"frame": 1,
|
|
"angle": 180,
|
|
"angle_delta": 90
|
|
}
|
|
]
|
|
}
|
|
""")
|
|
anim_args = SimpleNamespace(max_frames=2)
|
|
video_args = SimpleNamespace(fps=30)
|
|
parseq_anim_keys = ParseqAnimKeys(parseq_args, anim_args, video_args)
|
|
self.assertEqual(parseq_anim_keys.angle_series[1], 180)
|
|
|
|
@patch('deforum_helpers.parseq_adapter.DeformAnimKeys')
|
|
def test_fallbackonundefined(self, mock_deformanimkeys):
|
|
parseq_args = SimpleNamespace(parseq_use_deltas=False, parseq_manifest="""
|
|
{
|
|
"options": {
|
|
"output_fps": 30
|
|
},
|
|
"rendered_frames": [
|
|
{
|
|
"frame": 0
|
|
},
|
|
{
|
|
"frame": 1
|
|
}
|
|
]
|
|
}
|
|
""")
|
|
|
|
anim_args = SimpleNamespace(max_frames=1)
|
|
video_args = SimpleNamespace(fps=20)
|
|
parseq_anim_keys = ParseqAnimKeys(parseq_args, anim_args, video_args)
|
|
#TODO - this is a hacky check to make sure we're falling back to the mock.
|
|
#There must be a better way to inject an expected value via patch and check for that...
|
|
self.assertRegex(str(parseq_anim_keys.angle_series[0]), r'MagicMock')
|
|
|
|
if __name__ == '__main__':
|
|
unittest.main() |