Extract expression route resolution
This commit is contained in:
@@ -725,6 +725,41 @@ def smoke_row_expression_policy() -> None:
|
||||
== (0.2, "character_slot:Woman A"),
|
||||
"Row expression cast override did not prefer visible slot phase intensity",
|
||||
)
|
||||
_expect(
|
||||
pb._resolve_expression_route(
|
||||
expression_enabled=True,
|
||||
expression_intensity=0.5,
|
||||
expression_intensity_source="input",
|
||||
subject_type="woman",
|
||||
applied_slot=woman_slot,
|
||||
women_count=1,
|
||||
men_count=0,
|
||||
expression_phase="softcore",
|
||||
)
|
||||
== row_expression.resolve_expression_route(
|
||||
expression_enabled=True,
|
||||
expression_intensity=0.5,
|
||||
expression_intensity_source="input",
|
||||
subject_type="woman",
|
||||
applied_slot=woman_slot,
|
||||
women_count=1,
|
||||
men_count=0,
|
||||
expression_phase="softcore",
|
||||
),
|
||||
"Prompt builder expression route wrapper should delegate to row_expression",
|
||||
)
|
||||
route = row_expression.resolve_expression_route(
|
||||
expression_enabled=True,
|
||||
expression_intensity=0.5,
|
||||
expression_intensity_source="input",
|
||||
subject_type="woman",
|
||||
applied_slot=woman_slot,
|
||||
women_count=1,
|
||||
men_count=0,
|
||||
expression_phase="softcore",
|
||||
)
|
||||
_expect(route.expression_intensity == 0.2, "Expression route did not apply phase-specific slot intensity")
|
||||
_expect(route.expression_intensity_source == "character_slot:Woman A", "Expression route lost slot source")
|
||||
_expect(
|
||||
pb._character_expression_entries(random.Random(22), entries, 0.5, label_map, 1, 1, "softcore")
|
||||
== row_expression.character_expression_entries(random.Random(22), entries, 0.5, label_map, 1, 1, "softcore"),
|
||||
@@ -739,6 +774,45 @@ def smoke_row_expression_policy() -> None:
|
||||
== (None, "character_slots:disabled"),
|
||||
"Row expression cast override did not honor all-slot expression disable",
|
||||
)
|
||||
global_disabled = row_expression.resolve_expression_route(
|
||||
expression_enabled=False,
|
||||
expression_intensity=0.8,
|
||||
expression_intensity_source="input",
|
||||
subject_type="woman",
|
||||
applied_slot=woman_slot,
|
||||
)
|
||||
_expect(global_disabled.expression_disabled is True, "Expression route did not honor global disabled state")
|
||||
_expect(global_disabled.expression_intensity == 0.8, "Expression route changed disabled fallback intensity too early")
|
||||
_expect(global_disabled.expression_intensity_source == "disabled", "Expression route did not mark global disabled source")
|
||||
slot_disabled = row_expression.resolve_expression_route(
|
||||
expression_enabled=True,
|
||||
expression_intensity=0.5,
|
||||
expression_intensity_source="input",
|
||||
subject_type="woman",
|
||||
applied_slot=disabled_slot,
|
||||
)
|
||||
_expect(slot_disabled.expression_disabled is True, "Expression route did not honor single-slot disable")
|
||||
_expect(
|
||||
slot_disabled.expression_intensity_source == "character_slot:Woman A:disabled",
|
||||
"Expression route lost single-slot disabled source",
|
||||
)
|
||||
cast_disabled = row_expression.resolve_expression_route(
|
||||
expression_enabled=True,
|
||||
expression_intensity=0.5,
|
||||
expression_intensity_source="input",
|
||||
subject_type="configured_cast",
|
||||
character_slots=[disabled_slot],
|
||||
character_slot_map={"Woman A": disabled_slot},
|
||||
women_count=1,
|
||||
men_count=0,
|
||||
expression_phase="hardcore",
|
||||
)
|
||||
_expect(cast_disabled.expression_disabled is True, "Expression route did not honor all-slot cast disable")
|
||||
_expect(cast_disabled.expression_intensity is None, "Expression route did not clear all-slot disabled intensity")
|
||||
_expect(
|
||||
cast_disabled.expression_intensity_source == "character_slots:disabled",
|
||||
"Expression route lost all-slot disabled source",
|
||||
)
|
||||
expression_text = "Woman A has steady focus; Man A has parted lips with saliva"
|
||||
context_role = "Woman A performs a handjob while Man A stands close"
|
||||
_expect(
|
||||
|
||||
Reference in New Issue
Block a user