Files
xinjian0101-continuity-dire…/tests/test_nodes.py
xinjian0101 2f3428b6dd feat: release Continuity Director v0.8.20 after 20 iterations
Merge 20 sequential plugin iterations covering lifecycle validation, frontend smoke tests, six reliability nodes, bilingual help pages, installable ZIP packaging, and expanded CI.
2026-06-19 15:32:07 +08:00

26 lines
1.4 KiB
Python

from __future__ import annotations
import importlib
import json
import unittest
from _bootstrap import PACKAGE_NAME
package=importlib.import_module(PACKAGE_NAME); nodes=importlib.import_module(f"{PACKAGE_NAME}.nodes")
class NodeTests(unittest.TestCase):
def test_registration(self):
self.assertEqual(len(package.NODE_CLASS_MAPPINGS),20)
self.assertEqual(set(package.NODE_CLASS_MAPPINGS),set(package.NODE_DISPLAY_NAME_MAPPINGS))
def test_attributes(self):
for name,cls in package.NODE_CLASS_MAPPINGS.items():
with self.subTest(node=name):
self.assertTrue(callable(cls.INPUT_TYPES)); self.assertTrue(cls.RETURN_TYPES); self.assertTrue(cls.FUNCTION); self.assertTrue(cls.CATEGORY.startswith("Continuity Director/"))
def test_pipeline(self):
project,_,_=nodes.CDProjectLock().build("demo","Demo","16:9",24,"en","")
manifest,_,_=nodes.CDManifestBuilder().build(project)
chain,text,count=nodes.CDBatchDirector().direct(manifest,'[{"id":"shot-1"}]',2,100)
self.assertEqual(count,2); self.assertEqual(json.loads(text)["hash"],chain["hash"])
plan,_,waves=nodes.CDExecutionPlan().plan(chain,2); self.assertEqual(waves,1)
package_json,package_hash=nodes.CDExportPackage().export(manifest,chain,plan)
self.assertEqual(json.loads(package_json)["hash"],package_hash)
if __name__ == "__main__": unittest.main()