#ifndef __NO_ENVIRONMENT__
string err = 0;
string yes = 0;
#define YES(x) ASSERT2((talker->send(x), yes == x), x); ASSERT2((talker->send("no:" + x, this_object()), !err), err); ASSERT2((talker->send("no:" + x, ({ this_object() })), !err), err)
#define NO(x) ASSERT2((talker->send(x), !err), err)
void catch_tell(string str) {
    if (str[0..2] != "yes")
	err = str;
    else
	yes = str;
}
void do_tests() {
    object tp;
    object talker = new(__DIR__ "talker");
    
#ifndef __NO_ADD_ACTION__
    SAVETP;
    enable_commands();
    RESTORETP;
#endif
    NO("no-noenv");
    talker->move(this_object());
    
    YES("yes-inside");
    talker->move(new("/single/void"));
    move_object(talker);
    YES("yes-outside");
}
#endif