test/testiconv.c
changeset 1528 ff3322d66771
parent 1516 4d241ea8a1cd
child 1662 782fd950bd46
child 1895 c121d94672cb
child 3997 6a4f3a32c2e6
equal deleted inserted replaced
1527:ce84e28c2c07 1528:ff3322d66771
     1 
     1 
     2 #include <stdio.h>
     2 #include <stdio.h>
     3 
     3 
     4 #include "SDL.h"
     4 #include "SDL.h"
     5 
       
     6 static SDL_bool testutf1632(char *data)
       
     7 {
       
     8 	Uint32 *p = (Uint32 *)data;
       
     9 	while(*p) {
       
    10 		if ( *p > 0x10FFFF ) {
       
    11 			return SDL_FALSE;
       
    12 		}
       
    13 		++p;
       
    14 	}
       
    15 	return SDL_TRUE;
       
    16 }
       
    17 
     5 
    18 static size_t widelen(char *data)
     6 static size_t widelen(char *data)
    19 {
     7 {
    20 	size_t len = 0;
     8 	size_t len = 0;
    21 	Uint32 *p = (Uint32 *)data;
     9 	Uint32 *p = (Uint32 *)data;
    61 		/* Convert to UCS-4 */
    49 		/* Convert to UCS-4 */
    62 		size_t len;
    50 		size_t len;
    63 		ucs4 = SDL_iconv_string("UCS-4", "UTF-8", buffer, SDL_strlen(buffer)+1);
    51 		ucs4 = SDL_iconv_string("UCS-4", "UTF-8", buffer, SDL_strlen(buffer)+1);
    64 		len = (widelen(ucs4)+1)*4;
    52 		len = (widelen(ucs4)+1)*4;
    65 		for ( i = 0; i < SDL_arraysize(formats); ++i ) {
    53 		for ( i = 0; i < SDL_arraysize(formats); ++i ) {
    66 			if ( (SDL_strncasecmp(formats[i], "UTF16", 5) == 0 ||
       
    67 			      SDL_strncasecmp(formats[i], "UTF-16", 6) == 0 ||
       
    68 			      SDL_strncasecmp(formats[i], "UTF32", 5) == 0 ||
       
    69 			      SDL_strncasecmp(formats[i], "UTF-32", 6) == 0) &&
       
    70 			      !testutf1632(ucs4) ) {
       
    71 				continue;
       
    72 			}
       
    73 			test[0] = SDL_iconv_string(formats[i], "UCS-4", ucs4, len);
    54 			test[0] = SDL_iconv_string(formats[i], "UCS-4", ucs4, len);
    74 			test[1] = SDL_iconv_string("UCS-4", formats[i], test[0], len);
    55 			test[1] = SDL_iconv_string("UCS-4", formats[i], test[0], len);
    75 			if ( SDL_memcmp(test[1], ucs4, len) != 0 ) {
    56 			if ( SDL_memcmp(test[1], ucs4, len) != 0 ) {
    76 				fprintf(stderr, "FAIL: %s\n", formats[i]);
    57 				fprintf(stderr, "FAIL: %s\n", formats[i]);
    77 				++errors;
    58 				++errors;