From ae509d7a7caa3646ee7054de61eade5825289de6 Mon Sep 17 00:00:00 2001 From: Alon Zakai Date: Thu, 2 Jan 2025 16:01:56 -0800 Subject: [PATCH] tests --- test/browser/test_glfw_events.c | 23 +++++++++++++++++++++++ test/browser/test_sdl_key.c | 23 +++++++++++++++++++++++ 2 files changed, 46 insertions(+) diff --git a/test/browser/test_glfw_events.c b/test/browser/test_glfw_events.c index 050a0879cdb5d..0b4781770f38d 100644 --- a/test/browser/test_glfw_events.c +++ b/test/browser/test_glfw_events.c @@ -163,6 +163,27 @@ static void on_error(int error, const char *msg) { } #endif +void test_text_input() { + EM_ASM({ + // Create an input element, add it to the DOM, and focus on it. + input = document.createElement("input"); + document.body.appendChild(input); + + // When sent to an input element, backspace and tab are treated like any + // other key. TODO: this is not yet functional, see + // https://github.com/emscripten-core/emscripten/pull/22879 + // After that lands, the two "!" here can be removed. + assert( simulateKeyEvent("keydown", 65, 65, 'A', input)); + assert(!simulateKeyEvent("keydown", 8, 8, "Backspace", input)); + assert(!simulateKeyEvent("keydown", 9, 9, "Tab", input)); + + // When sent anywhere else, backspace and tab are preventDefaulted. + assert( simulateKeyEvent("keydown", 65, 65, 'A')); + assert(!simulateKeyEvent("keydown", 8, 8, "Backspace")); + assert(!simulateKeyEvent("keydown", 9, 9, "Tab")); + }); +} + int main() { unsigned int success = (1 << (sizeof(g_tests) / sizeof(test_t))) - 1; // (2^count)-1; @@ -235,6 +256,8 @@ int main() { } } + test_text_input(); + glfwTerminate(); printf("%d == %d = %d", g_state, success, g_state == success); diff --git a/test/browser/test_sdl_key.c b/test/browser/test_sdl_key.c index 00cbb4493e465..5cbd3e296a805 100644 --- a/test/browser/test_sdl_key.c +++ b/test/browser/test_sdl_key.c @@ -62,10 +62,33 @@ void one() { #endif } +void test_text_input() { + EM_ASM({ + // Create an input element, add it to the DOM, and focus on it. + input = document.createElement("input"); + document.body.appendChild(input); + + // When sent to an input element, backspace and tab are treated like any + // other key. TODO: this is not yet functional, see + // https://github.com/emscripten-core/emscripten/pull/22879 + // After that lands, the two "!" here can be removed. + assert( simulateKeyEvent("keydown", 65, 65, 'A', input)); + assert(!simulateKeyEvent("keydown", 8, 8, "Backspace", input)); + assert(!simulateKeyEvent("keydown", 9, 9, "Tab", input)); + + // When sent anywhere else, backspace and tab are preventDefaulted. + assert( simulateKeyEvent("keydown", 65, 65, 'A')); + assert(!simulateKeyEvent("keydown", 8, 8, "Backspace")); + assert(!simulateKeyEvent("keydown", 9, 9, "Tab")); + }); +} + int main(int argc, char **argv) { SDL_Init(SDL_INIT_VIDEO); SDL_Surface *screen = SDL_SetVideoMode(600, 450, 32, SDL_HWSURFACE); + test_text_input(); + #ifdef TEST_EMSCRIPTEN_SDL_SETEVENTHANDLER emscripten_SDL_SetEventHandler(EventHandler, 0); #endif