2
Copyright (C) 1997-2024 Sam Lantinga <slouken@libsdl.org>
4
This software is provided 'as-is', without any express or implied
5
warranty. In no event will the authors be held liable for any damages
6
arising from the use of this software.
8
Permission is granted to anyone to use this software for any purpose,
9
including commercial applications, and to alter it and redistribute it
14
#include <SDL3/SDL_main.h>
15
#include <SDL3/SDL_test.h>
22
Uint32 *p = (Uint32 *)data;
29
static char *get_next_line(Uint8 **fdataptr, size_t *fdatalen)
31
char *retval = (char *) *fdataptr;
32
Uint8 *ptr = *fdataptr;
33
size_t len = *fdatalen;
42
} else if (*ptr == '\n') {
57
int main(int argc, char *argv[])
59
const char *formats[] = {
79
SDLTest_CommonState *state;
81
Uint8 *fdataptr = NULL;
85
/* Initialize test framework */
86
state = SDLTest_CommonCreateState(argv, 0);
91
/* Enable standard application logging */
92
SDL_SetLogPriority(SDL_LOG_CATEGORY_APPLICATION, SDL_LOG_PRIORITY_INFO);
94
/* Parse commandline */
95
for (i = 1; i < argc;) {
98
consumed = SDLTest_CommonArg(state, i);
106
static const char *options[] = { "[utf8.txt]", NULL };
107
SDLTest_CommonLogUsage(state, argv[0], options);
114
fname = GetResourceFilename(fname, "utf8.txt");
115
fdata = (Uint8 *) (fname ? SDL_LoadFile(fname, &fdatalen) : NULL);
117
SDL_LogError(SDL_LOG_CATEGORY_APPLICATION, "Unable to load %s\n", fname);
122
while ((line = get_next_line(&fdataptr, &fdatalen)) != NULL) {
123
/* Convert to UCS-4 */
125
ucs4 = SDL_iconv_string("UCS-4", "UTF-8", line, SDL_strlen(line) + 1);
126
len = (widelen(ucs4) + 1) * 4;
128
for (i = 0; i < SDL_arraysize(formats); ++i) {
129
test[0] = SDL_iconv_string(formats[i], "UCS-4", ucs4, len);
130
test[1] = SDL_iconv_string("UCS-4", formats[i], test[0], len);
131
if (!test[1] || SDL_memcmp(test[1], ucs4, len) != 0) {
132
SDL_LogError(SDL_LOG_CATEGORY_APPLICATION, "FAIL: %s\n", formats[i]);
138
test[0] = SDL_iconv_string("UTF-8", "UCS-4", ucs4, len);
140
SDL_Log("%s", test[0]);
146
SDL_LogInfo(SDL_LOG_CATEGORY_APPLICATION, "Total errors: %d\n", errors);
148
SDLTest_CommonDestroyState(state);
149
return errors ? errors + 1 : 0;