1#include <assert.h>2#include <locale.h>3#include <stdio.h>4#include <string.h>56/*7output:8testing9done10end:11*/1213static int neg, pos;1415static int16setup(void)17{18 neg = LC_ALL;19 if (neg > LC_COLLATE)20 neg = LC_COLLATE;21 if (neg > LC_CTYPE)22 neg = LC_CTYPE;23 if (neg > LC_MONETARY)24 neg = LC_MONETARY;25 if (neg > LC_NUMERIC)26 neg = LC_NUMERIC;27 if (neg > LC_TIME)28 neg = LC_TIME;29 --neg;3031 pos = LC_ALL;32 if (pos < LC_COLLATE)33 pos = LC_COLLATE;34 if (pos < LC_CTYPE)35 pos = LC_CTYPE;36 if (pos < LC_MONETARY)37 pos = LC_MONETARY;38 if (pos < LC_NUMERIC)39 pos = LC_NUMERIC;40 if (pos < LC_TIME)41 pos = LC_TIME;42 ++pos;4344 return 0;45}4647static void48run(void)49{50 char *l1, *l2;5152 l1 = setlocale(LC_ALL, NULL);53 assert(strcmp(l1, "C") == 0);5455 l1 = setlocale(pos, "C");56 l2 = setlocale(neg, "C");5758 assert(l1 == NULL);59 assert(l2 == NULL);6061 setlocale(LC_ALL, "");62}6364int65main(void)66{67 puts("testing");68 setup();69 run();70 puts("done");7172 return 0;73}