object tp;
#ifdef __THIS_PLAYER_IN_CALL_OUT__
#define TPIC ASSERT(this_player() == tp)
#else
#define TPIC
#endif
int called;
void no_args() {
    called++;
    TPIC;
}
void one_arg(int x) {
    called++;
    TPIC;
    ASSERT(x == 1);
}    
void two_arg(int x, int y) {
    called++;
    TPIC;
    ASSERT(x == 1);
    ASSERT(y == 2);
}
void finish() {
    ASSERT(called == 6);
}
void do_tests() {
    mixed calls, call;
    tp = this_player();
    called = 0;
    call_out( (: no_args :), 1);
    call_out( "no_args", 2);
    call_out( (: one_arg, 1 :), 3);
    call_out( "one_arg", 4, 1);
    call_out( (: two_arg, 1 :), 5, 2);
    call_out( "two_arg", 6, 1, 2);
    call_out( "finish", 10);
    calls = call_out_info();
    foreach(call in calls) {
        ASSERT(objectp(call[0]));
        ASSERT(stringp(call[1]));
        ASSERT(intp(call[2]));
    }		   
}