+ ok1(memends_str(S("abcdef"), "abcdef"));
+ ok1(!memends_str(S("abcde\0f"), "d\0f"));
+ ok1(!memends_str(S("a\0bcdef"), "a"));
+ ok1(memends_str(S("a\0bcdef"), "ef"));
+
+ ok1(!memoverlaps(haystack1, sizeof(haystack1),
+ haystack2, sizeof(haystack2)));
+ ok1(!memoverlaps(haystack2, sizeof(haystack2),
+ haystack1, sizeof(haystack1)));
+ ok1(memoverlaps(haystack1, sizeof(haystack1), haystack1, 1));
+ ok1(memoverlaps(haystack1, 1, haystack1, sizeof(haystack1)));
+ ok1(memoverlaps(haystack1, sizeof(haystack1),
+ haystack1 + sizeof(haystack1) - 1, 1));
+ ok1(memoverlaps(haystack1 + sizeof(haystack1) - 1, 1,
+ haystack1, sizeof(haystack1)));
+ ok1(!memoverlaps(haystack1, sizeof(haystack1),
+ haystack1 + sizeof(haystack1), 1));
+ ok1(!memoverlaps(haystack1 + sizeof(haystack1), 1,
+ haystack1, sizeof(haystack1)));
+ ok1(!memoverlaps(haystack1, sizeof(haystack1), haystack1 - 1, 1));
+ ok1(!memoverlaps(haystack1 - 1, 1, haystack1, sizeof(haystack1)));
+ ok1(memoverlaps(haystack1, 5, haystack1 + 4, 7));
+ ok1(!memoverlaps(haystack1, 5, haystack1 + 5, 6));
+ ok1(memoverlaps(haystack1 + 4, 7, haystack1, 5));
+ ok1(!memoverlaps(haystack1 + 5, 6, haystack1, 5));
+
+ assert(sizeof(haystack1) <= SWAPSIZE);
+ assert(sizeof(haystack2) <= SWAPSIZE);
+ memset(tmp1, 0, sizeof(tmp1));
+ memset(tmp2, 0, sizeof(tmp2));
+ memcpy(tmp1, haystack1, sizeof(haystack1));
+ memcpy(tmp2, haystack2, sizeof(haystack2));
+ memswap(tmp1, tmp2, SWAPSIZE);
+ ok1(memcmp(tmp1, haystack2, sizeof(haystack2)) == 0);
+ ok1(memcmp(tmp2, haystack1, sizeof(haystack1)) == 0);