Blame misc/tst-insremque.c

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