void do_tests() { string tmp = "this is a test"; mixed *ret; ret = explode(tmp, ""); ASSERT(sizeof(ret) == sizeof(filter(ret, (: strlen($1) == 1 :)))); ret = explode(tmp, " "); ASSERT(sizeof(ret) == 4); ASSERT(ret[1] == "is"); ASSERT(ret[3] == "test"); ret = explode(" " + tmp, " "); #ifndef __REVERSIBLE_EXPLODE_STRING__ ASSERT(sizeof(ret) == 4); ASSERT(ret[1] == "is"); ASSERT(ret[3] == "test"); #else ASSERT(sizeof(ret) == 5); ASSERT(ret[2] == "is"); ASSERT(ret[4] == "test"); #endif ret = explode(" " + tmp, " "); #ifndef __REVERSIBLE_EXPLODE_STRING__ #ifdef __SANE_EXPLODE_STRING__ ASSERT(sizeof(ret) == 8); ASSERT(ret[5] == "is"); ASSERT(ret[7] == "test"); #else ASSERT(sizeof(ret) == 4); ASSERT(ret[1] == "is"); ASSERT(ret[3] == "test"); #endif #else ASSERT(sizeof(ret) == 9); ASSERT(ret[6] == "is"); ASSERT(ret[8] == "test"); #endif tmp = "this is a test "; ret = explode(tmp, " "); #ifndef __REVERSIBLE_EXPLODE_STRING__ ASSERT(sizeof(ret) == 4); #else ASSERT(sizeof(ret) == 5); #endif ASSERT(ret[1] == "is"); ASSERT(ret[3] == "test"); ret = explode(" " + tmp, " "); #ifndef __REVERSIBLE_EXPLODE_STRING__ ASSERT(sizeof(ret) == 4); ASSERT(ret[1] == "is"); ASSERT(ret[3] == "test"); #else ASSERT(sizeof(ret) == 6); ASSERT(ret[2] == "is"); ASSERT(ret[4] == "test"); #endif ret = explode(" " + tmp, " "); #ifndef __REVERSIBLE_EXPLODE_STRING__ #ifdef __SANE_EXPLODE_STRING__ ASSERT(sizeof(ret) == 6); ASSERT(ret[3] == "is"); ASSERT(ret[5] == "test"); #else ASSERT(sizeof(ret) == 4); ASSERT(ret[1] == "is"); ASSERT(ret[3] == "test"); #endif #else ASSERT(sizeof(ret) == 8); ASSERT(ret[4] == "is"); ASSERT(ret[6] == "test"); #endif }