feat: opener shows sex only with age or nationality
This commit is contained in:
@@ -304,12 +304,15 @@ def build_description(sex, nat, age, skin_texture,
|
||||
if s:
|
||||
parts.append(fmt.format(s))
|
||||
|
||||
# Opener: "34 year old Brazilian female"
|
||||
# Opener: "34 year old Brazilian female". Sex is shown only alongside an age
|
||||
# or nationality, so a face-only fragment does not start with a bare "female".
|
||||
age_str = f"{age['age']} year old" if age else None
|
||||
nat_str = nat_text(nat) or None
|
||||
sex_str = sex if sex else None
|
||||
opener_parts = [p for p in [age_str, nat_str, sex_str] if p]
|
||||
opener_parts = [p for p in [age_str, nat_str] if p]
|
||||
if opener_parts:
|
||||
if sex_str:
|
||||
opener_parts.append(sex_str)
|
||||
parts.append(" ".join(opener_parts))
|
||||
|
||||
add(face_shape, "{} face")
|
||||
|
||||
@@ -153,6 +153,21 @@ class TestBuildDescription(unittest.TestCase):
|
||||
s = core.build_description(*args)
|
||||
self.assertNotIn("eyes eyes", s)
|
||||
|
||||
def test_opener_omits_bare_sex(self):
|
||||
# sex present but no age and no nationality -> no leading "female".
|
||||
args = [""] + [None] * 17
|
||||
args[0] = "female" # sex positional slot
|
||||
args[4] = {"description": "oval"} # face_shape slot -> "oval face"
|
||||
s = core.build_description(*args)
|
||||
self.assertTrue(s.startswith("oval face"), s)
|
||||
self.assertNotIn("female", s)
|
||||
|
||||
def test_opener_keeps_sex_with_age(self):
|
||||
# age + sex -> "<n> year old female ..."
|
||||
s = core.build_description(
|
||||
"female", None, {"age": 30}, *( [None] * 15 ))
|
||||
self.assertIn("year old female", s)
|
||||
|
||||
|
||||
class TestBodyData(unittest.TestCase):
|
||||
|
||||
|
||||
Reference in New Issue
Block a user