nightmare3_mudos_v1/
nightmare3_mudos_v1/bin/
nightmare3_mudos_v1/lib/cmds/ambassador/
nightmare3_mudos_v1/lib/cmds/database/
nightmare3_mudos_v1/lib/cmds/hm/
nightmare3_mudos_v1/lib/cmds/soul/
nightmare3_mudos_v1/lib/daemon/cfg/
nightmare3_mudos_v1/lib/daemon/cfg/mon_races/
nightmare3_mudos_v1/lib/daemon/cfg/races/
nightmare3_mudos_v1/lib/daemon/include/
nightmare3_mudos_v1/lib/daemon/save/
nightmare3_mudos_v1/lib/daemon/services/
nightmare3_mudos_v1/lib/daemon/soul/
nightmare3_mudos_v1/lib/doc/
nightmare3_mudos_v1/lib/doc/TestPlans/
nightmare3_mudos_v1/lib/doc/approval/
nightmare3_mudos_v1/lib/doc/approval/QC/
nightmare3_mudos_v1/lib/doc/approval/balance/
nightmare3_mudos_v1/lib/doc/build/
nightmare3_mudos_v1/lib/doc/build/armours/
nightmare3_mudos_v1/lib/doc/build/economy/
nightmare3_mudos_v1/lib/doc/build/etc/
nightmare3_mudos_v1/lib/doc/build/monster/
nightmare3_mudos_v1/lib/doc/build/room/
nightmare3_mudos_v1/lib/doc/build/virtual/
nightmare3_mudos_v1/lib/doc/build/weapon/
nightmare3_mudos_v1/lib/doc/classes/
nightmare3_mudos_v1/lib/doc/efun/
nightmare3_mudos_v1/lib/doc/etc/
nightmare3_mudos_v1/lib/doc/help/creator/
nightmare3_mudos_v1/lib/doc/help/hm/
nightmare3_mudos_v1/lib/doc/lpc/basic/
nightmare3_mudos_v1/lib/doc/lpc/data_types/
nightmare3_mudos_v1/lib/doc/lpc/etc/
nightmare3_mudos_v1/lib/doc/lpc/intermediate/
nightmare3_mudos_v1/lib/doc/lpc/types/
nightmare3_mudos_v1/lib/doc/mudlib/
nightmare3_mudos_v1/lib/doc/mudlib/features/
nightmare3_mudos_v1/lib/domains/Examples/etc/
nightmare3_mudos_v1/lib/domains/Examples/room/
nightmare3_mudos_v1/lib/domains/Examples/virtual/
nightmare3_mudos_v1/lib/domains/Examples/virtual/exaA/
nightmare3_mudos_v1/lib/domains/Examples/virtual/exaB/
nightmare3_mudos_v1/lib/domains/Examples/weapon/
nightmare3_mudos_v1/lib/domains/Praxis/
nightmare3_mudos_v1/lib/domains/Praxis/adm/
nightmare3_mudos_v1/lib/domains/Praxis/attic/
nightmare3_mudos_v1/lib/domains/Praxis/cemetary/
nightmare3_mudos_v1/lib/domains/Praxis/cemetary/mon/
nightmare3_mudos_v1/lib/domains/Praxis/data/
nightmare3_mudos_v1/lib/domains/Praxis/death/
nightmare3_mudos_v1/lib/domains/Praxis/mountains/
nightmare3_mudos_v1/lib/domains/Praxis/obj/armour/
nightmare3_mudos_v1/lib/domains/Praxis/obj/magic/
nightmare3_mudos_v1/lib/domains/Praxis/obj/weapon/
nightmare3_mudos_v1/lib/domains/Praxis/orc_valley/
nightmare3_mudos_v1/lib/domains/Praxis/quests/
nightmare3_mudos_v1/lib/domains/Praxis/standardOld/
nightmare3_mudos_v1/lib/log/
nightmare3_mudos_v1/lib/log/errors/
nightmare3_mudos_v1/lib/log/reports/
nightmare3_mudos_v1/lib/log/watch/
nightmare3_mudos_v1/lib/news/
nightmare3_mudos_v1/lib/secure/cfg/
nightmare3_mudos_v1/lib/secure/cmds/ambassador/
nightmare3_mudos_v1/lib/secure/cmds/mortal/
nightmare3_mudos_v1/lib/secure/save/users/d/
nightmare3_mudos_v1/lib/secure/std/
nightmare3_mudos_v1/lib/std/hm/
nightmare3_mudos_v1/lib/std/living/
nightmare3_mudos_v1/lib/std/room/
nightmare3_mudos_v1/lib/std/user/
nightmare3_mudos_v1/lib/std/virtual/
nightmare3_mudos_v1/lib/www/
nightmare3_mudos_v1/lib/www/errors/
nightmare3_mudos_v1/lib/www/gateways/
nightmare3_mudos_v1/source/
nightmare3_mudos_v1/source/ChangeLog.old/
nightmare3_mudos_v1/source/Win32/
nightmare3_mudos_v1/source/compat/
nightmare3_mudos_v1/source/compat/simuls/
nightmare3_mudos_v1/source/include/
nightmare3_mudos_v1/source/mudlib/
nightmare3_mudos_v1/source/testsuite/
nightmare3_mudos_v1/source/testsuite/clone/
nightmare3_mudos_v1/source/testsuite/command/
nightmare3_mudos_v1/source/testsuite/data/
nightmare3_mudos_v1/source/testsuite/etc/
nightmare3_mudos_v1/source/testsuite/include/
nightmare3_mudos_v1/source/testsuite/inherit/
nightmare3_mudos_v1/source/testsuite/inherit/master/
nightmare3_mudos_v1/source/testsuite/log/
nightmare3_mudos_v1/source/testsuite/single/
nightmare3_mudos_v1/source/testsuite/single/tests/compiler/
nightmare3_mudos_v1/source/testsuite/single/tests/efuns/
nightmare3_mudos_v1/source/testsuite/single/tests/operators/
nightmare3_mudos_v1/source/testsuite/u/
nightmare3_mudos_v1/source/tmp/
int tmp = 0;

int third() {
    if (++tmp == 3) {
	tmp = 0;
	return 0;
    }
    return 1;
}

int whatever1(mixed x, mixed y, mixed z) {
    return x;
}

int whatever2(mixed x, mixed y, mixed z) {
    return y;
}

int whatever3(mixed x, mixed y, mixed z) {
    return z;
}

int true() { return 1; }

int same(mixed* x, mixed* y) {
    if (sizeof(x) != sizeof(y)) return 0;
    for (int i = 0; i < sizeof(x); i++) {
	if (x[i] != y[i]) return 0;
    }
    return 1;
}

int msame(mapping x, mapping y) {
    mixed z;
    if (sizeof(keys(x)) != sizeof(keys(y))) return 0;
    foreach (z in keys(x)) {
	if (x[z] != y[z]) return 0;
    }
    return 1;
}

void do_tests() {
    // array
    ASSERT(same(filter( ({ 1, 2, 0, 3 }), (: $1 :)), ({ 1, 2, 3 })));
    ASSERT(filter( ({}), "foo") == ({}));
    ASSERT(sizeof(filter( ({ 1 }), "true")));

    ASSERT(same(filter( ({ 1,2,3,4,5,6,7,8,9 }), "third", this_object())
	   , filter( ({ 1,2,3,4,5,6,7,8,9 }), (: third :))));

    ASSERT(sizeof(filter( ({ 0 }), (: whatever1, 1 :))));
    ASSERT(sizeof(filter( ({ 0 }), "whatever2", this_object(), 1)));
    ASSERT(sizeof(filter( ({ 0 }), (: whatever2 :), 1)));
    ASSERT(sizeof(filter( ({ 0 }), "whatever2", __FILE__, 1)));

    // mapping
    ASSERT(msame(filter( ([ 1 : 2, 0 : 3 ]), (: $1 :)), ([ 1 : 2 ])));
    ASSERT(msame(filter( ([]), "foo"), ([])));
    ASSERT(sizeof(filter( ([ 1 : 2 ]), "true")));

    ASSERT(msame(filter( ([ 1:2,3:4,5:6 ]), "third", this_object()),
		 filter( ([ 1:2,3:4,5:6 ]), (: third :))));

    ASSERT(!sizeof(filter( ([]), (: $1 :))));
    ASSERT(sizeof(filter( ([ 0 : 0 ]), (: whatever1, 1 :))));
    ASSERT(sizeof(filter( ([ 0 : 0 ]), "whatever3", this_object(), 1)));
    ASSERT(sizeof(filter( ([ 0 : 0 ]), (: whatever3 :), 1)));
    ASSERT(sizeof(filter( ([ 0 : 0 ]), "whatever3", __FILE__, 1)));
}