Files
Gin3601-LLS-node/tests/test_mask_process_registration.py
2026-05-25 13:58:50 +08:00

86 lines
3.2 KiB
Python

import unittest
try:
from .test_mask_draw_helpers import load_plugin_package
except ImportError:
from test_mask_draw_helpers import load_plugin_package
class TestMaskProcessRegistration(unittest.TestCase):
def test_plugin_registers_mask_processing_nodes(self):
plugin = load_plugin_package()
self.assertIn("LLSMaskProcess", plugin.NODE_CLASS_MAPPINGS)
self.assertIn("LLSMaskCombine", plugin.NODE_CLASS_MAPPINGS)
self.assertEqual(
plugin.NODE_DISPLAY_NAME_MAPPINGS["LLSMaskProcess"],
"LLS Mask Process",
)
self.assertEqual(
plugin.NODE_DISPLAY_NAME_MAPPINGS["LLSMaskCombine"],
"LLS Mask Combine",
)
def test_mask_process_schema_matches_contract(self):
plugin = load_plugin_package()
node_cls = plugin.NODE_CLASS_MAPPINGS["LLSMaskProcess"]
schema = node_cls.INPUT_TYPES()
required = schema["required"]
optional = schema["optional"]
self.assertEqual(node_cls.CATEGORY, "LLS/Mask")
self.assertEqual(node_cls.FUNCTION, "process")
self.assertEqual(node_cls.RETURN_TYPES, ("MASK",))
self.assertEqual(node_cls.RETURN_NAMES, ("mask",))
self.assertEqual(required["mask"], ("MASK",))
self.assertEqual(
required["operation"][0],
[
"passthrough",
"threshold",
"invert",
"grow",
"shrink",
"blur",
"feather",
"fill_holes",
"remove_small_regions",
"smooth",
"clamp",
"resize_to_image",
],
)
self.assertEqual(required["value_float"][0], "FLOAT")
self.assertEqual(required["value_float"][1]["default"], 0.5)
self.assertEqual(required["value_float"][1]["min"], 0.0)
self.assertEqual(required["value_float"][1]["max"], 1.0)
self.assertEqual(required["value_int"][0], "INT")
self.assertEqual(required["value_int"][1]["default"], 8)
self.assertEqual(required["value_int"][1]["min"], -512)
self.assertEqual(required["value_int"][1]["max"], 512)
self.assertEqual(optional["image"], ("IMAGE",))
def test_mask_combine_schema_matches_contract(self):
plugin = load_plugin_package()
node_cls = plugin.NODE_CLASS_MAPPINGS["LLSMaskCombine"]
schema = node_cls.INPUT_TYPES()
required = schema["required"]
self.assertEqual(node_cls.CATEGORY, "LLS/Mask")
self.assertEqual(node_cls.FUNCTION, "combine")
self.assertEqual(node_cls.RETURN_TYPES, ("MASK",))
self.assertEqual(node_cls.RETURN_NAMES, ("mask",))
self.assertEqual(required["mask_a"], ("MASK",))
self.assertEqual(required["mask_b"], ("MASK",))
self.assertEqual(required["mode"][0], ["add", "subtract", "intersect", "xor", "max", "min"])
def test_plugin_does_not_register_mask_preview_node(self):
plugin = load_plugin_package()
self.assertNotIn("LLSMaskPreview", plugin.NODE_CLASS_MAPPINGS)
self.assertNotIn("LLSMaskPreview", plugin.NODE_DISPLAY_NAME_MAPPINGS)
if __name__ == "__main__":
unittest.main()