Add H3 prompt curator
This commit is contained in:
@@ -412,14 +412,102 @@ class DumasImageNodeTests(unittest.TestCase):
|
||||
self.assertIn("Evening ambience, cramped but cozy.", result[2])
|
||||
self.assertEqual(len(result), 3)
|
||||
|
||||
def test_soundscape_helper_defaults_to_selected_preset_description(self):
|
||||
node = self.image_nodes.DumasSoundscapeHelperNode()
|
||||
|
||||
result = node.build_soundscape("rainy street", "")
|
||||
|
||||
self.assertEqual(result[0], "steady rain, wet pavement, distant traffic hum")
|
||||
|
||||
def test_h3_prompt_curator_compacts_named_references(self):
|
||||
node = self.image_nodes.DumasH3PromptCuratorNode()
|
||||
dave_image = FakeTensorBatch()
|
||||
cafe_image = FakeTensorBatch()
|
||||
van_image = FakeTensorBatch()
|
||||
dave = self.image_nodes.make_reference(
|
||||
kind="character",
|
||||
image=dave_image,
|
||||
name="Dave",
|
||||
aliases="The Locksmith",
|
||||
description="tired eyes, cropped brown hair",
|
||||
wardrobe="red flight jacket",
|
||||
)
|
||||
cafe = self.image_nodes.make_reference(
|
||||
kind="location",
|
||||
image=cafe_image,
|
||||
name="Coffee Shop",
|
||||
description="warm tungsten lighting and rainy windows",
|
||||
)
|
||||
van = self.image_nodes.make_reference(
|
||||
kind="location",
|
||||
image=van_image,
|
||||
name="Blue Van",
|
||||
description="scuffed blue delivery van",
|
||||
)
|
||||
|
||||
result = node.curate_prompt(
|
||||
action_prompt="Dave runs from the Coffee Shop into the rain.",
|
||||
anatomy_guard="auto",
|
||||
anchor="grounded handheld thriller",
|
||||
soundscape="steady rain",
|
||||
ref_1=dave,
|
||||
ref_2=van,
|
||||
ref_3=cafe,
|
||||
)
|
||||
|
||||
prompt = result[0]
|
||||
self.assertIn("<Picture 1> Dave", prompt)
|
||||
self.assertIn("<Picture 2> Coffee Shop", prompt)
|
||||
self.assertIn("Action: Dave runs from the Coffee Shop into the rain.", prompt)
|
||||
self.assertIn("Anatomy guard:", prompt)
|
||||
self.assertIs(result[1], dave_image)
|
||||
self.assertIs(result[2], cafe_image)
|
||||
self.assertIsNone(result[3])
|
||||
self.assertEqual(result[10], 2)
|
||||
self.assertIn("input 3-><Picture 2> Coffee Shop", result[11])
|
||||
|
||||
def test_h3_prompt_curator_renumbers_explicit_reference_tags(self):
|
||||
node = self.image_nodes.DumasH3PromptCuratorNode()
|
||||
image1 = FakeTensorBatch()
|
||||
image3 = FakeTensorBatch()
|
||||
unused = FakeTensorBatch()
|
||||
first = self.image_nodes.make_reference(kind="character", image=image1, name="Maya")
|
||||
second = self.image_nodes.make_reference(kind="location", image=unused, name="Lobby")
|
||||
third = self.image_nodes.make_reference(kind="location", image=image3, name="Rooftop")
|
||||
|
||||
result = node.curate_prompt(
|
||||
action_prompt="<Picture 1> Maya crosses to <ref3> as the wind rises.",
|
||||
anatomy_guard="off",
|
||||
ref_1=first,
|
||||
ref_2=second,
|
||||
ref_3=third,
|
||||
)
|
||||
|
||||
prompt = result[0]
|
||||
self.assertIn("<Picture 1> Maya crosses to <Picture 2>", prompt)
|
||||
self.assertNotIn("<Picture 3>", prompt)
|
||||
self.assertIs(result[1], image1)
|
||||
self.assertIs(result[2], image3)
|
||||
self.assertIsNone(result[3])
|
||||
self.assertEqual(result[10], 2)
|
||||
|
||||
def test_helper_node_mappings_use_general_purpose_helpers(self):
|
||||
mappings = self.image_nodes.NODE_CLASS_MAPPINGS
|
||||
display = self.image_nodes.NODE_DISPLAY_NAME_MAPPINGS
|
||||
|
||||
self.assertIs(mappings["DumasCharacterHelper"], self.image_nodes.DumasCharacterHelperNode)
|
||||
self.assertIs(mappings["DumasLocationHelper"], self.image_nodes.DumasLocationHelperNode)
|
||||
self.assertIs(mappings["DumasSoundscapeHelper"], self.image_nodes.DumasSoundscapeHelperNode)
|
||||
self.assertIs(mappings["DumasH3PromptCurator"], self.image_nodes.DumasH3PromptCuratorNode)
|
||||
self.assertEqual(display["DumasCharacterHelper"], "Dumas Character Helper")
|
||||
self.assertEqual(display["DumasLocationHelper"], "Dumas Location Helper")
|
||||
self.assertEqual(display["DumasSoundscapeHelper"], "Dumas Soundscape Helper")
|
||||
self.assertEqual(display["DumasH3PromptCurator"], "Dumas H3 Prompt Curator")
|
||||
|
||||
def test_h3_prompt_curator_uses_documented_reference_limits(self):
|
||||
node = self.image_nodes.DumasH3PromptCuratorNode()
|
||||
self.assertEqual(len(node.RETURN_TYPES), 12)
|
||||
self.assertEqual(node.RETURN_NAMES[1:10], tuple(f"ref_image_{i}" for i in range(1, 10)))
|
||||
|
||||
def test_normalize_reference_upgrades_generic_summary_with_socket_picture_id(self):
|
||||
image = FakeTensorBatch()
|
||||
|
||||
Reference in New Issue
Block a user