#include #include #include #include #include #include"SDL/SDL_image.h" extern "C" { int result = 1; int get_count = 0; int data_ok = 0; int data_bad = 0; void onLoadedData(void *arg, void *buffer, int size) { printf("onLoadedData %d\n", (int)arg); get_count++; assert(size == 329895); assert((int)arg == 135); unsigned char *b = (unsigned char*)buffer; assert(b[0] == 137); assert(b[1122] == 128); assert(b[1123] == 201); assert(b[202125] == 218); data_ok = 1; } void onErrorData(void *arg) { printf("onErrorData %d\n", (int)arg); get_count++; assert((int)arg == 246); data_bad = 1; } int counter = 0; void wait_wgets() { if (counter++ == 60) { printf("%d\n", get_count); counter = 0; } if (get_count == 3) { static bool fired = false; if (!fired) { fired = true; emscripten_async_wget_data( "http://localhost:8888/screenshot.png", (void*)135, onLoadedData, onErrorData); emscripten_async_wget_data( "http://localhost:8888/fail_me", (void*)246, onLoadedData, onErrorData); } } else if (get_count == 5) { assert(IMG_Load("/tmp/screen_shot.png")); assert(data_ok == 1 && data_bad == 1); emscripten_cancel_main_loop(); REPORT_RESULT(); } assert(get_count <= 5); } void onLoaded(const char* file) { if (strcmp(file, "/tmp/test.html") && strcmp(file, "/tmp/screen_shot.png")) { result = 0; } if (FILE * f = fopen(file, "r")) { printf("exists: %s\n", file); int c = fgetc (f); if (c == EOF) { printf("file empty: %s\n", file); result = 0; } fclose(f); } else { result = 0; printf("!exists: %s\n", file); } get_count++; printf("onLoaded %s\n", file); } void onError(const char* file) { if (strcmp(file, "/tmp/null")) { result = 0; } get_count++; printf("onError %s\n", file); } int main() { emscripten_async_wget( "http://localhost:8888/this_is_not_a_file", "/tmp/null", onLoaded, onError); emscripten_async_wget( "http://localhost:8888/test.html", "/tmp/test.html", onLoaded, onError); char name[40]; strcpy(name, "/tmp/screen_shot.png"); // test for issue #2349, name being free'd emscripten_async_wget( "http://localhost:8888/screenshot.png", name, onLoaded, onError); memset(name, 0, 30); emscripten_set_main_loop(wait_wgets, 0, 0); return 0; } }