New module attribute 'Applicability'.
[gnulib.git] / tests / test-bitrotate.c
index 41f4d26..db26ef8 100644 (file)
@@ -1,5 +1,5 @@
 /* Test of <bitrotate.h> substitute.
-   Copyright (C) 2007-2008 Free Software Foundation, Inc.
+   Copyright (C) 2007-2009 Free Software Foundation, Inc.
 
    This program is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
 #include <stdio.h>
 #include <stdlib.h>
 
-#define ASSERT(expr)                                                   \
-  do                                                                   \
-    {                                                                  \
-      if (!(expr))                                                     \
-       {                                                               \
-         fprintf (stderr, "%s:%d: assertion failed\n",                 \
-                  __FILE__, __LINE__);                                 \
-         fflush (stderr);                                              \
-         abort ();                                                     \
-       }                                                               \
-    }                                                                  \
+#define ASSERT(expr)                                                    \
+  do                                                                    \
+    {                                                                   \
+      if (!(expr))                                                      \
+        {                                                               \
+          fprintf (stderr, "%s:%d: assertion failed\n",                 \
+                   __FILE__, __LINE__);                                 \
+          fflush (stderr);                                              \
+          abort ();                                                     \
+        }                                                               \
+    }                                                                   \
   while (0)
 
 int
 main (void)
 {
+  ASSERT (rotl8 (42, 0) == 42);
   ASSERT (rotl8 (42, 1) == 84);
   ASSERT (rotl8 (42, 2) == 168);
   ASSERT (rotl8 (42, 3) == 81);
@@ -46,7 +47,9 @@ main (void)
   ASSERT (rotl8 (42, 5) == 69);
   ASSERT (rotl8 (42, 6) == 138);
   ASSERT (rotl8 (42, 7) == 21);
+  ASSERT (rotl8 (42, 8) == 42);
 
+  ASSERT (rotr8 (42, 0) == 42);
   ASSERT (rotr8 (42, 1) == 21);
   ASSERT (rotr8 (42, 2) == 138);
   ASSERT (rotr8 (42, 3) == 69);
@@ -54,7 +57,9 @@ main (void)
   ASSERT (rotr8 (42, 5) == 81);
   ASSERT (rotr8 (42, 6) == 168);
   ASSERT (rotr8 (42, 7) == 84);
+  ASSERT (rotr8 (42, 8) == 42);
 
+  ASSERT (rotl16 (43981, 0) == 43981);
   ASSERT (rotl16 (43981, 1) == 22427);
   ASSERT (rotl16 (43981, 2) == 44854);
   ASSERT (rotl16 (43981, 3) == 24173);
@@ -70,7 +75,9 @@ main (void)
   ASSERT (rotl16 (43981, 13) == 46457);
   ASSERT (rotl16 (43981, 14) == 27379);
   ASSERT (rotl16 (43981, 15) == 54758);
+  ASSERT (rotl16 (43981, 16) == 43981);
 
+  ASSERT (rotr16 (43981, 0) == 43981);
   ASSERT (rotr16 (43981, 1) == 54758);
   ASSERT (rotr16 (43981, 2) == 27379);
   ASSERT (rotr16 (43981, 3) == 46457);
@@ -86,6 +93,7 @@ main (void)
   ASSERT (rotr16 (43981, 13) == 24173);
   ASSERT (rotr16 (43981, 14) == 44854);
   ASSERT (rotr16 (43981, 15) == 22427);
+  ASSERT (rotr16 (43981, 16) == 43981);
 
   ASSERT (rotl32 (2309737967U, 1) == 324508639U);
   ASSERT (rotl32 (2309737967U, 2) == 649017278U);
@@ -151,7 +159,7 @@ main (void)
   ASSERT (rotr32 (2309737967U, 30) == 649017278lU);
   ASSERT (rotr32 (2309737967U, 31) == 324508639lU);
 
-#if defined(UINT64_MAX) && defined(UINT64_C)
+#ifdef UINT64_MAX
   ASSERT (rotl64 (16045690984503098046ULL, 1) == 13644637895296644477ULL);
   ASSERT (rotl64 (16045690984503098046ULL, 2) == 8842531716883737339ULL);
   ASSERT (rotl64 (16045690984503098046ULL, 3) == 17685063433767474678ULL);
@@ -216,7 +224,6 @@ main (void)
   ASSERT (rotl64 (16045690984503098046ULL, 62) == 13234794782980550319ULL);
   ASSERT (rotl64 (16045690984503098046ULL, 63) == 8022845492251549023ULL);
 
-  ASSERT (rotr64 (16045690984503098046ULL, 0) == 16045690984503098046ULL);
   ASSERT (rotr64 (16045690984503098046ULL, 1) == 8022845492251549023ULL);
   ASSERT (rotr64 (16045690984503098046ULL, 2) == 13234794782980550319ULL);
   ASSERT (rotr64 (16045690984503098046ULL, 3) == 15840769428345050967ULL);
@@ -280,7 +287,7 @@ main (void)
   ASSERT (rotr64 (16045690984503098046ULL, 61) == 17685063433767474678ULL);
   ASSERT (rotr64 (16045690984503098046ULL, 62) == 8842531716883737339ULL);
   ASSERT (rotr64 (16045690984503098046ULL, 63) == 13644637895296644477ULL);
-#endif
+#endif /* UINT64_MAX */
 
   return 0;
 }