Counterfeit Monkey — 291 of 292

Emily Short

Release 5

Section 3 - Verifying Implementation Depth

[These verbs run through lots of objects and systematically works them over to check for the full implementation of a certain feature.]

Understand "check indoors" as checking indoors.

Checking indoors is an action out of world.

Carry out checking indoors:

repeat with item running through rooms:

say "[item]: ";

if item is indoors:

say "indoors[line break]";

if item is outdoors:

say "outdoors[line break]".

[Object response tests will do this, but as it's particularly common to add an object to the repository and then come back and do the description later, it's useful to have a shorthand way to look for which objects have slipped through the cracks and still need a fresh description.]

Understand "check repository descriptions" as checking repository descriptions. Checking repository descriptions is an action out of world.

Carry out checking repository descriptions:

repeat with item running through things in the repository:

if the description of the item is "":

say "[item][line break]";

[In case we want to check how people will greet the player:]

Understand "all-greet" as testing greetings. Testing greetings is an action applying to nothing.

Carry out testing greetings:

repeat with item running through people who are not animals:

move the item to the location;

try the item saying hello to the player.

[This goes through locations and tests how well they describe the surroundings if the player types LOOK (DIRECTION). This is partly an act of world-building self-discipline: we never want there to be streets without buildings fronting them, even if those buildings aren't important and aren't part of the primary description. There should always be *something* there to reward playful investigation.]

Understand "pound face" as testing facing. Testing facing is an action out of world.

Carry out testing facing:

repeat with item running through rooms:

move the player to item;

say "[line break] north: ";

try facing north;

say "[line break] northwest: ";

try facing northwest;

say "[line break] west: ";

try facing west;

say "[line break] southwest: ";

try facing southwest;

say "[line break] south: ";

try facing south;

say "[line break] southeast: ";

try facing southeast;

say "[line break] east: ";

try facing east;

say "[line break] northeast: ";

try facing northeast;

say "[line break] down: ";

try facing down;

say "[line break] up: ";

try facing up.

[Object responses for everything in the repository.]

Include Object Response Tests by Juhana Leinonen.

Table of analyzing actions (continued)

testing rule
test building rule
test swiping rule
test recycling rule
test launching rule
test tuning rule
test fueling it with rule
test fueling it with two rule
test rebooting rule
test typing rule
test digging in rule
test sitting on rule
test lying on rule
test standing up on rule
test diving into rule
test mounting rule
test washing rule
test flushing rule
test smiling at rule
test frowning at rule
test laughing at rule
test saying hello to rule
test saying goodbye to rule
test waving to rule
test reading rule
test erasing rule
test performing rule
test performing vaguely rule
test blindfolding rule
test blindfold-wearing rule
test poking head rule

This is the test poking head rule:

say "[italic type] poking head through [the noun]: [roman type]";

try poking head through the noun.

This is the test blindfold-wearing rule:

say "[italic type] blindfolding oneself with [the noun]: [roman type]";

try blindfold-wearing the noun.

This is the test blindfolding rule:

let target be a random visible person;

say "[italic type] blindfolding [target] with [the noun]: [roman type]";

try blindfolding the target with the noun.

This is the test performing vaguely rule:

say "[italic type] performing vaguely on [the noun]: [roman type]";

try performing vaguely on the noun.

This is the test performing rule:

say "[italic type] performing [piece] on [the noun]: [roman type]";

try performing piece on the noun.

This is the test erasing rule:

say "[italic type] erasing [the noun]: [roman type]";

try erasing the noun.

This is the test reading rule:

say "[italic type] reading [the noun]: [roman type]";

try reading the noun.

This is the test flushing rule:

say "[italic type] flushing [the noun]: [roman type]";

try flushing the noun.

This is the test tuning rule:

say "[italic type] tuning [the noun]: [roman type]";

try tuning the noun.

This is the test waving to rule:

say "[italic type] waving to [the noun]: [roman type]";

try waving to the noun.

This is the test building rule:

say "[italic type] building [the noun]: [roman type]";

try building the noun.

This is the test swiping rule:

say "[italic type] swiping [the noun]: [roman type]";

try swiping the noun.

This is the test recycling rule:

say "[italic type] recycling [the noun]: [roman type]";

try recycling the noun.

This is the test launching rule:

say "[italic type] launching [the noun]: [roman type]";

try launching the noun.

This is the test fueling it with rule:

say "[italic type] fueling [the noun] with the [fuel]: [roman type]";

try fueling the noun with fuel.

This is the test fueling it with two rule:

let supposed car be a random touchable thing;

say "[italic type] fueling [the supposed car] with [the noun]: [roman type]";

try fueling the supposed car with the noun.

This is the test rebooting rule:

say "[italic type]rebooting [the noun]: [roman type]";

try rebooting the noun.

This is the test typing rule:

say "[italic type]typing 'fish' on [the noun]: [roman type]";

try typing "fish" on the noun.

This is the test sitting on rule:

say "[italic type]sitting on [the noun]: [roman type]";

try sitting on the noun.

This is the test lying on rule:

say "[italic type]lying on [the noun]: [roman type]";

try lying on the noun.

This is the test standing up on rule:

say "[italic type]standing up on [the noun]: [roman type]";

try standing up on the noun.

This is the test digging in rule:

say "[italic type]digging in [the noun]: [roman type]";

try digging in the noun.

This is the test diving into rule:

say "[italic type]diving into [the noun]: [roman type]";

try diving into the noun.

This is the test mounting rule:

say "[italic type]mounting [the noun]: [roman type]";

try mounting the noun.

This is the test washing rule:

say "[italic type]washing [the noun]: [roman type]";

try washing the noun.

This is the test smiling at rule:

say "[italic type]smiling at [the noun]: [roman type]";

try smiling at the noun.

This is the test frowning at rule:

say "[italic type]frowning at [the noun]: [roman type]";

try frowning at the noun.

This is the test laughing at rule:

say "[italic type]laughing at [the noun]: [roman type]";

try laughing at the noun.

This is the test saying hello to rule:

say "[italic type]saying hello to [the noun]: [roman type]";

try saying hello to the noun.

This is the test saying goodbye to rule:

say "[italic type]saying goodbye to [the noun]: [roman type]";

try saying goodbye to the noun.

[Running this one is a major, major undertaking, producing thousands of lines of transcript output to go through. But it turned up a huge number of small bugs and implementation gaps as well: items that weren't marked plural when they should have been, animals that weren't set to the correct class, objects that should have a strong smell or sound associated but didn't.

Other errors discovered this way:

— >KISS MOTHER originally produced the response "Tempting, but no,"

— the Gengis Khan-style Tartar smelled like deodorant

— so did the Victorian papa and papas

— PUSH TOTS NORTH had a come-back about how pushing people in directions only worked on small children

— the tamale description sort of hinted that the contents might be interesting, then didn't react if you searched it

— all sorts of things could be waved that weren't really wave-worthy

— the stopcock and petcock were both described as not something we can open/close, when they are in fact forms of valve

— the rock ballad wasn't marked as abstract, so you could wave it and rub it and so on

— it was possible to "play" other items like an instrument any time the oboe was in the same location

]

Understand "pound repository" as testing repository. Testing repository is an action applying to nothing.

Carry out testing repository:

move the repository to the location;

now the repository is open;

now every synthesizable thing is in the repository;

remove Authenticator from play;

repeat with item running through things in the repository:

try analyzing the item.

[showing]

Understand "pound showing" as testing showing. Testing showing is an action applying to nothing.

Procedural rule while analyzing:

ignore the test entering rule; [because if you get in and out of things, then the animals will follow and the object loop going through the repository will be corrupted]

Carry out testing showing:

move the repository to the location;

now the repository is open;

now every synthesizable thing is in the repository;

now every person is in the location;

repeat with item running through things in the repository:

repeat with interviewee running through people who are not animals:

say "[italic type]showing [item] to [the interviewee]: [roman type]";

try showing the item to the interviewee.

[We use this to test whether appropriate rules are being followed about what can be worn simultaneously with what else.]

Understand "cycle wardrobe" as cycling wardrobe. Cycling wardrobe is an action out of world.

Carry out cycling wardrobe:

repeat with item running through wearable things:

move the item to the player;

try wearing the item.

Understand "pound bold descriptions" as testing boldness.

Testing boldness is an action applying to nothing.

Carry out testing boldness:

now boldening is true;

repeat with destination running through rooms:

move player to destination.