int same_array(mixed *x, mixed *y) { if (!arrayp(x) || !arrayp(y)) return 0; if (sizeof(x) != sizeof(y)) return 0; for (int i = 0; i < sizeof(x); i++) { if (arrayp(x[i])) { if (!same_array(x[i], y[i])) return 0; } else if (x[i] != y[i]) return 0; } return 1; } void do_tests() { ASSERT(same_array( reg_assoc("testhahatest", ({ "haha", "te" }), ({ 2, 3 }), 4), ({ ({ "", "te", "st", "haha", "", "te", "st" }), ({ 4, 3, 4, 2, 4, 3, 4 }) }))); ASSERT(catch(reg_assoc("foo", ({ 1 }), ({ 2, 3 })))); ASSERT(catch(reg_assoc("foo", ({ 1, 2 }), ({ 2, 3 })))); ASSERT(catch(reg_assoc("foo", ({ "bar", "+" }), ({ 0, 1 })))); }