| 
									
										
										
										
											2006-11-09 20:20:23 +00:00
										 |  |  | #include <locale.h>
 | 
					
						
							|  |  |  | #include <stdio.h>
 | 
					
						
							|  |  |  | #include <string.h>
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-03-23 14:32:17 +00:00
										 |  |  | int | 
					
						
							| 
									
										
										
										
											2006-11-09 20:20:23 +00:00
										 |  |  | do_test (void) | 
					
						
							|  |  |  | { | 
					
						
							| 
									
										
										
										
											2015-09-28 20:55:57 +00:00
										 |  |  |   static const char test_locale[] = "de_DE.UTF-8"; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2006-11-09 20:20:23 +00:00
										 |  |  |   int res = 0; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2006-11-10 15:20:59 +00:00
										 |  |  |   char buf[20]; | 
					
						
							| 
									
										
										
										
											2006-11-09 20:20:23 +00:00
										 |  |  |   size_t l1 = strxfrm (NULL, "ab", 0); | 
					
						
							|  |  |  |   size_t l2 = strxfrm (buf, "ab", 1); | 
					
						
							|  |  |  |   size_t l3 = strxfrm (buf, "ab", sizeof (buf)); | 
					
						
							| 
									
										
										
										
											2006-11-10 15:20:59 +00:00
										 |  |  |   if (l3 < sizeof (buf) && strlen (buf) != l3) | 
					
						
							|  |  |  |     { | 
					
						
							|  |  |  |       puts ("C locale l3 test failed"); | 
					
						
							|  |  |  |       res = 1; | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   size_t l4 = strxfrm (buf, "ab", l1 + 1); | 
					
						
							|  |  |  |   if (l4 < l1 + 1 && strlen (buf) != l4) | 
					
						
							|  |  |  |     { | 
					
						
							|  |  |  |       puts ("C locale l4 test failed"); | 
					
						
							|  |  |  |       res = 1; | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   buf[l1] = 'Z'; | 
					
						
							|  |  |  |   size_t l5 = strxfrm (buf, "ab", l1); | 
					
						
							|  |  |  |   if (buf[l1] != 'Z') | 
					
						
							|  |  |  |     { | 
					
						
							|  |  |  |       puts ("C locale l5 test failed"); | 
					
						
							|  |  |  |       res = 1; | 
					
						
							|  |  |  |     } | 
					
						
							| 
									
										
										
										
											2006-11-09 20:20:23 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2006-11-10 15:20:59 +00:00
										 |  |  |   if (l1 != l2 || l1 != l3 || l1 != l4 || l1 != l5) | 
					
						
							| 
									
										
										
										
											2006-11-09 20:20:23 +00:00
										 |  |  |     { | 
					
						
							| 
									
										
										
										
											2006-11-10 15:20:59 +00:00
										 |  |  |       puts ("C locale retval test failed"); | 
					
						
							| 
									
										
										
										
											2006-11-09 20:20:23 +00:00
										 |  |  |       res = 1; | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-09-28 20:55:57 +00:00
										 |  |  |   if (setlocale (LC_ALL, test_locale) == NULL) | 
					
						
							| 
									
										
										
										
											2006-11-09 20:20:23 +00:00
										 |  |  |     { | 
					
						
							| 
									
										
										
										
											2015-09-28 20:55:57 +00:00
										 |  |  |       printf ("cannot set locale \"%s\"\n", test_locale); | 
					
						
							| 
									
										
										
										
											2006-11-09 20:20:23 +00:00
										 |  |  |       res = 1; | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  |   else | 
					
						
							|  |  |  |     { | 
					
						
							|  |  |  |       l1 = strxfrm (NULL, "ab", 0); | 
					
						
							|  |  |  |       l2 = strxfrm (buf, "ab", 1); | 
					
						
							|  |  |  |       l3 = strxfrm (buf, "ab", sizeof (buf)); | 
					
						
							| 
									
										
										
										
											2006-11-10 15:20:59 +00:00
										 |  |  |       if (l3 < sizeof (buf) && strlen (buf) != l3) | 
					
						
							|  |  |  | 	{ | 
					
						
							|  |  |  | 	  puts ("UTF-8 locale l3 test failed"); | 
					
						
							|  |  |  | 	  res = 1; | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |       l4 = strxfrm (buf, "ab", l1 + 1); | 
					
						
							|  |  |  |       if (l4 < l1 + 1 && strlen (buf) != l4) | 
					
						
							|  |  |  | 	{ | 
					
						
							|  |  |  | 	  puts ("UTF-8 locale l4 test failed"); | 
					
						
							|  |  |  | 	  res = 1; | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |       buf[l1] = 'Z'; | 
					
						
							|  |  |  |       l5 = strxfrm (buf, "ab", l1); | 
					
						
							|  |  |  |       if (buf[l1] != 'Z') | 
					
						
							|  |  |  | 	{ | 
					
						
							|  |  |  | 	  puts ("UTF-8 locale l5 test failed"); | 
					
						
							|  |  |  | 	  res = 1; | 
					
						
							|  |  |  | 	} | 
					
						
							| 
									
										
										
										
											2006-11-09 20:20:23 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2006-11-10 15:20:59 +00:00
										 |  |  |       if (l1 != l2 || l1 != l3 || l1 != l4 || l1 != l5) | 
					
						
							| 
									
										
										
										
											2006-11-09 20:20:23 +00:00
										 |  |  | 	{ | 
					
						
							| 
									
										
										
										
											2006-11-10 15:20:59 +00:00
										 |  |  | 	  puts ("UTF-8 locale retval test failed"); | 
					
						
							| 
									
										
										
										
											2006-11-09 20:20:23 +00:00
										 |  |  | 	  res = 1; | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   return res; | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-03-23 14:32:17 +00:00
										 |  |  | #include <support/test-driver.c>
 |