test/testiconv.c
changeset 1502 d403a39389da
parent 1501 73dc5d39bbf8
child 1516 4d241ea8a1cd
equal deleted inserted replaced
1501:73dc5d39bbf8 1502:d403a39389da
     1 
     1 
     2 #include <stdio.h>
     2 #include <stdio.h>
     3 
     3 
     4 #include "SDL.h"
     4 #include "SDL.h"
     5 
     5 
     6 static SDL_bool testutf16(char *data)
     6 static SDL_bool testutf1632(char *data)
     7 {
     7 {
     8 	Uint32 *p = (Uint32 *)data;
     8 	Uint32 *p = (Uint32 *)data;
     9 	while(*p) {
     9 	while(*p) {
    10 		if ( *p > 0x10FFFF ) {
    10 		if ( *p > 0x10FFFF ) {
    11 			return SDL_FALSE;
    11 			return SDL_FALSE;
    61 		/* Convert to UCS-4 */
    61 		/* Convert to UCS-4 */
    62 		ucs4 = SDL_iconv_string("UCS-4", "UTF-8", buffer, SDL_strlen(buffer)+1);
    62 		ucs4 = SDL_iconv_string("UCS-4", "UTF-8", buffer, SDL_strlen(buffer)+1);
    63 		size_t len = (widelen(ucs4)+1)*4;
    63 		size_t len = (widelen(ucs4)+1)*4;
    64 		for ( i = 0; i < SDL_arraysize(formats); ++i ) {
    64 		for ( i = 0; i < SDL_arraysize(formats); ++i ) {
    65 			if ( (SDL_strncasecmp(formats[i], "UTF16", 5) == 0 ||
    65 			if ( (SDL_strncasecmp(formats[i], "UTF16", 5) == 0 ||
    66 			      SDL_strncasecmp(formats[i], "UTF-16", 6) == 0) &&
    66 			      SDL_strncasecmp(formats[i], "UTF-16", 6) == 0 ||
    67 			      !testutf16(ucs4) ) {
    67 			      SDL_strncasecmp(formats[i], "UTF32", 5) == 0 ||
       
    68 			      SDL_strncasecmp(formats[i], "UTF-32", 6) == 0) &&
       
    69 			      !testutf1632(ucs4) ) {
    68 				continue;
    70 				continue;
    69 			}
    71 			}
    70 			test[0] = SDL_iconv_string(formats[i], "UCS-4", ucs4, len);
    72 			test[0] = SDL_iconv_string(formats[i], "UCS-4", ucs4, len);
    71 			test[1] = SDL_iconv_string("UCS-4", formats[i], test[0], len);
    73 			test[1] = SDL_iconv_string("UCS-4", formats[i], test[0], len);
    72 			if ( SDL_memcmp(test[1], ucs4, len) != 0 ) {
    74 			if ( SDL_memcmp(test[1], ucs4, len) != 0 ) {