Back to index

glibc  2.9
tst-strxfrm2.c
Go to the documentation of this file.
00001 #include <locale.h>
00002 #include <stdio.h>
00003 #include <string.h>
00004 
00005 static int
00006 do_test (void)
00007 {
00008   int res = 0;
00009 
00010   char buf[20];
00011   size_t l1 = strxfrm (NULL, "ab", 0);
00012   size_t l2 = strxfrm (buf, "ab", 1);
00013   size_t l3 = strxfrm (buf, "ab", sizeof (buf));
00014   if (l3 < sizeof (buf) && strlen (buf) != l3)
00015     {
00016       puts ("C locale l3 test failed");
00017       res = 1;
00018     }
00019 
00020   size_t l4 = strxfrm (buf, "ab", l1 + 1);
00021   if (l4 < l1 + 1 && strlen (buf) != l4)
00022     {
00023       puts ("C locale l4 test failed");
00024       res = 1;
00025     }
00026 
00027   buf[l1] = 'Z';
00028   size_t l5 = strxfrm (buf, "ab", l1);
00029   if (buf[l1] != 'Z')
00030     {
00031       puts ("C locale l5 test failed");
00032       res = 1;
00033     }
00034 
00035   if (l1 != l2 || l1 != l3 || l1 != l4 || l1 != l5)
00036     {
00037       puts ("C locale retval test failed");
00038       res = 1;
00039     }
00040 
00041   if (setlocale (LC_ALL, "de_DE.UTF-8") == NULL)
00042     {
00043       puts ("setlocale failed");
00044       res = 1;
00045     }
00046   else
00047     {
00048       l1 = strxfrm (NULL, "ab", 0);
00049       l2 = strxfrm (buf, "ab", 1);
00050       l3 = strxfrm (buf, "ab", sizeof (buf));
00051       if (l3 < sizeof (buf) && strlen (buf) != l3)
00052        {
00053          puts ("UTF-8 locale l3 test failed");
00054          res = 1;
00055        }
00056 
00057       l4 = strxfrm (buf, "ab", l1 + 1);
00058       if (l4 < l1 + 1 && strlen (buf) != l4)
00059        {
00060          puts ("UTF-8 locale l4 test failed");
00061          res = 1;
00062        }
00063 
00064       buf[l1] = 'Z';
00065       l5 = strxfrm (buf, "ab", l1);
00066       if (buf[l1] != 'Z')
00067        {
00068          puts ("UTF-8 locale l5 test failed");
00069          res = 1;
00070        }
00071 
00072       if (l1 != l2 || l1 != l3 || l1 != l4 || l1 != l5)
00073        {
00074          puts ("UTF-8 locale retval test failed");
00075          res = 1;
00076        }
00077     }
00078 
00079   return res;
00080 }
00081 
00082 #define TEST_FUNCTION do_test ()
00083 #include "../test-skeleton.c"