|  | #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" |