ardy-motion-api / tests /test_timeline_utils.py
cs686's picture
Deploy ARDY ZeroGPU Blender motion API
1b78d7e verified
Raw
History Blame Contribute Delete
1.36 kB
import unittest
from timeline_utils import normalize_timeline
class TimelineValidationTests(unittest.TestCase):
def test_builds_contiguous_frame_ranges(self):
result = normalize_timeline(
[
["Walk forward two steps.", 2],
["Turn around.", 2],
["Wave.", 2],
],
fps=20,
)
self.assertEqual(result[0]["start_frame"], 0)
self.assertEqual(result[0]["end_frame"], 40)
self.assertEqual(result[1]["start_frame"], 40)
self.assertEqual(result[1]["end_frame"], 80)
self.assertEqual(result[2]["start_frame"], 80)
self.assertEqual(result[2]["end_frame"], 120)
def test_ignores_blank_rows(self):
result = normalize_timeline(
[["Stand still.", 2], ["", None]],
fps=20,
)
self.assertEqual(len(result), 1)
def test_rejects_more_than_eight_seconds(self):
with self.assertRaisesRegex(ValueError, "may not exceed 8 seconds"):
normalize_timeline(
[["Walk.", 4], ["Wave.", 4], ["Sit.", 2]],
fps=20,
)
def test_rejects_missing_prompt(self):
with self.assertRaisesRegex(ValueError, "action prompt"):
normalize_timeline([["", 2]], fps=20)
if __name__ == "__main__":
unittest.main()