Maybe you got it from Emily Short’s Property Checking?
To expound on @Hanon’s good suggestions, I’d like to share something I never really organized into a formal testing module. It’s helped me a ton.
One finesse I have for items that are meant to have no description is to have a “useless” variable. For instance, in Shuffling Around, I had some items that weren’t supposed to be seen.
I also designate certain rooms as “abstract.” These include ones that temporarily hold items that need to go off-stage and ones that permanently hold them.
The code below is heavily based on Emily Short’s Property Checking, so give that a look. It just filled in some special gaps.
include file text
volume properties
section definitions
[must be included for release if we want to say "X is a useless thing" in the main file.
We could include test properties in another module later, but that gets sticky.]
a room can be abstract. a room is usually not abstract.
a thing can be useless. a thing is usually not useless.
a thing can be blank-appear-okay. a thing is usually not blank-appear-okay.
section rules - not for release
When play begins (this is the run property checks at the start of play rule):
if the description of the player is "As good-looking as ever.":
say "The player has the default description.";
repeat with item running through rooms:
follow the property-check rules for item;
if undescribed-rooms is 0:
say "DEBUG Yay all rooms described.";
repeat with item running through not useless things:
if item is a person, follow the property-check rules for item;
repeat with item running through not useless people:
if item is not blank-appear-okay and initial appearance of item is empty:
increment init-mt-ppl;
say "APPEARANCE IN ROOM [init-mt-ppl] [item].";
repeat with item running through things:
if item is not a person, follow the property-check rules for item;
if undescribed-objects is 0:
say "DEBUG Yay all objects described.";
if undescribed-people is 0:
say "DEBUG Yay all people described.";
if init-mt-ppl is 0:
say "DEBUG Yay all people have initial appearances.";
A property-check rule for a thing (called the target) (this is the things must have description rule):
unless target provides the property description:
do nothing;
if the description of target is non-empty:
do nothing;
else if target is not abstract:
if target is a person:
increment undescribed-people;
say "PERSON [undescribed-people]";
else:
increment undescribed-objects;
say "OBJECT [undescribed-objects]";
say " [target] [if target is plural-named]have[else]has[end if] no description.";
A property-check rule for a room (called the target) (this is the rooms must have descriptions rule):
if description of target is empty:
unless target is abstract:
increment undescribed-rooms;
say "ROOM [undescribed-rooms] [target] has no description.";
(Also, I also like having, say, Shuffling Around Tests.i7x for Shuffling Around, which includes stuff like the above code, so my main story.ni focuses on the story. Even a small bit of organization really helps me!)
As for what verbs people might try, Standard Rules should have the lot, if you want brute force.
grep -i "understand.* as " "Standard Rules.i7x"
If you find any verbs not fun, you can always add, say,
understand "jump" as something new.