12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061 |
- #include <search.h>
- #include <stdio.h>
- #include <string.h>
- #define CHECK(cond) \
- do \
- if (! (cond)) \
- { \
- printf ("Condition " #cond " not true on line %d\n", __LINE__); \
- ret = 1; \
- } \
- while (0)
- static int
- do_test (void)
- {
- struct qelem elements[4];
- int ret = 0;
- /* Linear list. */
- memset (elements, 0xff, sizeof (elements));
- insque (&elements[0], NULL);
- remque (&elements[0]);
- insque (&elements[0], NULL);
- insque (&elements[2], &elements[0]);
- insque (&elements[1], &elements[0]);
- insque (&elements[3], &elements[2]);
- remque (&elements[2]);
- insque (&elements[2], &elements[0]);
- CHECK (elements[0].q_back == NULL);
- CHECK (elements[0].q_forw == &elements[2]);
- CHECK (elements[1].q_back == &elements[2]);
- CHECK (elements[1].q_forw == &elements[3]);
- CHECK (elements[2].q_back == &elements[0]);
- CHECK (elements[2].q_forw == &elements[1]);
- CHECK (elements[3].q_back == &elements[1]);
- CHECK (elements[3].q_forw == NULL);
- /* Circular list. */
- memset (elements, 0xff, sizeof (elements));
- elements[0].q_back = &elements[0];
- elements[0].q_forw = &elements[0];
- insque (&elements[2], &elements[0]);
- insque (&elements[1], &elements[0]);
- insque (&elements[3], &elements[2]);
- remque (&elements[2]);
- insque (&elements[2], &elements[0]);
- CHECK (elements[0].q_back == &elements[3]);
- CHECK (elements[0].q_forw == &elements[2]);
- CHECK (elements[1].q_back == &elements[2]);
- CHECK (elements[1].q_forw == &elements[3]);
- CHECK (elements[2].q_back == &elements[0]);
- CHECK (elements[2].q_forw == &elements[1]);
- CHECK (elements[3].q_back == &elements[1]);
- CHECK (elements[3].q_forw == &elements[0]);
- return ret;
- }
- #define TEST_FUNCTION do_test ()
- #include "../test-skeleton.c"
|