(root)/
glibc-2.38/
stdlib/
tst-limits.c
       1  /* It is important that this comes first to not hide effects introduced
       2     by other headers.  */
       3  #include <limits.h>
       4  
       5  #include <inttypes.h>
       6  #include <stdio.h>
       7  
       8  
       9  static long long int
      10  bitval (int bits)
      11  {
      12    long long int val = 0;
      13    while (bits-- > 0)
      14      val |= 1ll << bits;
      15    return val;
      16  }
      17  
      18  
      19  static int
      20  do_test (void)
      21  {
      22    int result = 0;
      23  
      24  #define TEST(name, format, expected) \
      25    printf ("%-12s expected = %-20" format "  actual = %" format "\n",	      \
      26  	  #name ":", expected, name);					      \
      27    result |= name != expected
      28  
      29    /* The limits from ISO C99.  */
      30  
      31    /* We cannot support anything but 8-bit chars.  */
      32    TEST (CHAR_BIT, "d", 8);
      33    TEST (SCHAR_MIN, "d", -128);
      34    TEST (SCHAR_MAX, "d", 127);
      35    TEST (UCHAR_MAX, "d", 255);
      36  
      37    TEST (SHRT_MIN, "d", -(1 << (sizeof (short int) * CHAR_BIT - 1)));
      38    TEST (SHRT_MAX, "d", (1 << (sizeof (short int) * CHAR_BIT - 1)) - 1);
      39    TEST (USHRT_MAX, "d", (1 << sizeof (short int) * CHAR_BIT) - 1);
      40  
      41    TEST (INT_MIN, "d", (int) -bitval (sizeof (int) * CHAR_BIT - 1) - 1);
      42    TEST (INT_MAX, "d", (int) bitval (sizeof (int) * CHAR_BIT - 1));
      43    TEST (UINT_MAX, "u",
      44  	(unsigned int) bitval (sizeof (unsigned int) * CHAR_BIT));
      45  
      46    TEST (LONG_MIN, "ld",
      47  	(long int) -bitval (sizeof (long int) * CHAR_BIT - 1) - 1);
      48    TEST (LONG_MAX, "ld", (long int) bitval (sizeof (long int) * CHAR_BIT - 1));
      49    TEST (ULONG_MAX, "lu",
      50  	(unsigned long int) bitval (sizeof (unsigned long int) * CHAR_BIT));
      51  
      52    TEST (LLONG_MIN, "lld", -bitval (sizeof (long long int) * CHAR_BIT - 1) - 1);
      53    TEST (LLONG_MAX, "lld", bitval (sizeof (long long int) * CHAR_BIT - 1));
      54    TEST (ULLONG_MAX, "llu",
      55  	(unsigned long long int) bitval (sizeof (unsigned long long int)
      56  					 * CHAR_BIT));
      57  
      58    /* Values from POSIX and Unix.  */
      59  #ifdef PAGESIZE
      60    TEST (PAGESIZE, "d", getpagesize ());
      61  #elif defined (PAGE_SIZE)
      62    TEST (PAGE_SIZE, "d", getpagesize ());
      63  #endif
      64  
      65    TEST (WORD_BIT, "d", (int) sizeof (int) * CHAR_BIT);
      66    TEST (LONG_BIT, "d", (int) sizeof (long int) * CHAR_BIT);
      67  
      68    return result;
      69  }
      70  
      71  #define TEST_FUNCTION do_test ()
      72  #include "../test-skeleton.c"