Enhance image editing tests and functionality

- Added parameterized tests for image edit replacement to ensure alpha mode preservation.
- Refactored existing tests to utilize new image editing methods and improve clarity.
- Introduced new tests for image target functionality, ensuring proper handling of shared textures and context.
- Updated various tests to validate alpha mode handling across different scenarios.
- Improved undo/redo functionality in image operators to maintain state consistency.
- Added support for texture node actions, enhancing integration with Blender's node system.
- Ensured that image properties are preserved during operations and that invalid contexts are handled gracefully.
This commit is contained in:
2026-09-10 00:00:13 +08:00
parent f48bbb3d05
commit 1622afa7a2
28 changed files with 1068 additions and 236 deletions

View File

@@ -46,30 +46,30 @@ class ImageDataTest(unittest.TestCase):
self.assertEqual(self.modules.image.video_total_frames(image), 1)
def test_default_extract_frames_uses_empty_image_frames(self):
def test_extract_frame_count_uses_empty_image_frames(self):
source_object = SimpleNamespace(
data=SimpleNamespace(source="MOVIE", frame_duration=97),
image_user=SimpleNamespace(frame_duration=24),
)
self.assertEqual(self.modules.image.default_extract_frames(source_object), 24)
self.assertEqual(self.modules.image.extract_frame_range(source_object.data, getattr(source_object, "image_user", None))[1], 24)
def test_default_extract_frames_caps_at_video_total(self):
def test_extract_frame_count_caps_at_video_total(self):
source_object = SimpleNamespace(
data=SimpleNamespace(source="MOVIE", frame_duration=97),
image_user=SimpleNamespace(frame_duration=200),
)
self.assertEqual(self.modules.image.default_extract_frames(source_object), 97)
self.assertEqual(self.modules.image.extract_frame_range(source_object.data, getattr(source_object, "image_user", None))[1], 97)
def test_default_extract_frames_falls_back_to_video_total(self):
def test_extract_frame_count_falls_back_to_video_total(self):
source_object = SimpleNamespace(
data=SimpleNamespace(source="MOVIE", frame_duration=97),
)
self.assertEqual(self.modules.image.default_extract_frames(source_object), 97)
self.assertEqual(self.modules.image.extract_frame_range(source_object.data, getattr(source_object, "image_user", None))[1], 97)
def test_extract_frame_range_honors_offset_within_clip(self):
@@ -83,7 +83,7 @@ class ImageDataTest(unittest.TestCase):
)
self.assertEqual(
self.modules.image.extract_frame_range(source_object),
self.modules.image.extract_frame_range(source_object.data, source_object.image_user),
(71, 24),
)
@@ -99,7 +99,7 @@ class ImageDataTest(unittest.TestCase):
)
self.assertEqual(
self.modules.image.extract_frame_range(source_object),
self.modules.image.extract_frame_range(source_object.data, source_object.image_user),
(74, 24),
)
@@ -115,7 +115,7 @@ class ImageDataTest(unittest.TestCase):
)
self.assertEqual(
self.modules.image.extract_frame_range(source_object),
self.modules.image.extract_frame_range(source_object.data, source_object.image_user),
(1, 24),
)
@@ -131,7 +131,7 @@ class ImageDataTest(unittest.TestCase):
)
self.assertEqual(
self.modules.image.extract_frame_range(source_object),
self.modules.image.extract_frame_range(source_object.data, source_object.image_user),
(1, 1),
)
@@ -147,7 +147,7 @@ class ImageDataTest(unittest.TestCase):
)
self.assertEqual(
self.modules.image.extract_frame_range(source_object),
self.modules.image.extract_frame_range(source_object.data, source_object.image_user),
(71, 1),
)