aboutsummaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
Diffstat (limited to 'tests')
-rwxr-xr-xtests/runner.py22
-rw-r--r--tests/sdl_text.c40
2 files changed, 62 insertions, 0 deletions
diff --git a/tests/runner.py b/tests/runner.py
index 50568762..d1d65d6f 100755
--- a/tests/runner.py
+++ b/tests/runner.py
@@ -10370,6 +10370,28 @@ elif 'browser' in str(sys.argv):
Popen([PYTHON, EMCC, os.path.join(self.get_dir(), 'sdl_key.c'), '-o', 'page.html', '--pre-js', 'pre.js', '-s', '''EXPORTED_FUNCTIONS=['_main', '_one']''']).communicate()
self.run_browser('page.html', '', '/report_result?510510')
+ def test_sdl_text(self):
+ open(os.path.join(self.get_dir(), 'pre.js'), 'w').write('''
+ Module.postRun = function() {
+ function doOne() {
+ Module._one();
+ setTimeout(doOne, 1000/60);
+ }
+ setTimeout(doOne, 1000/60);
+ }
+
+ function simulateKeyEvent(charCode) {
+ var event = document.createEvent("KeyboardEvent");
+ event.initKeyEvent("keypress", true, true, window,
+ 0, 0, 0, 0, 0, charCode);
+ document.body.dispatchEvent(event);
+ }
+ ''')
+ open(os.path.join(self.get_dir(), 'sdl_text.c'), 'w').write(self.with_report_result(open(path_from_root('tests', 'sdl_text.c')).read()))
+
+ Popen([PYTHON, EMCC, os.path.join(self.get_dir(), 'sdl_text.c'), '-o', 'page.html', '--pre-js', 'pre.js', '-s', '''EXPORTED_FUNCTIONS=['_main', '_one']''']).communicate()
+ self.run_browser('page.html', '', '/report_result?1')
+
def test_sdl_mouse(self):
open(os.path.join(self.get_dir(), 'pre.js'), 'w').write('''
function simulateMouseEvent(x, y, button) {
diff --git a/tests/sdl_text.c b/tests/sdl_text.c
new file mode 100644
index 00000000..6bcb0d61
--- /dev/null
+++ b/tests/sdl_text.c
@@ -0,0 +1,40 @@
+#include <SDL/SDL.h>
+#include <stdio.h>
+#include <string.h>
+#include <assert.h>
+#include <emscripten.h>
+
+int result = 0;
+
+void one() {
+ SDL_Event event;
+ while (SDL_PollEvent(&event)) {
+ switch (event.type) {
+ case SDL_TEXTEDITING: assert(0); break;
+ case SDL_TEXTINPUT:
+ printf("Received %s\n", event.text.text);
+ if (!strcmp("a", event.text.text)) {
+ result = 1;
+ } else if (!strcmp("A", event.text.text)) {
+ REPORT_RESULT();
+ emscripten_run_script("throw 'done'");
+ }
+ break;
+ default: /* Report an unhandled event */
+ printf("I don't know what this event is!\n");
+ }
+ }
+}
+
+int main() {
+ SDL_Init(SDL_INIT_VIDEO);
+ SDL_SetVideoMode(600, 450, 32, SDL_HWSURFACE);
+ SDL_StartTextInput();
+
+ emscripten_run_script("simulateKeyEvent('a'.charCodeAt(0))"); // a
+ emscripten_run_script("simulateKeyEvent('A'.charCodeAt(0))"); // A
+
+ one();
+
+ return 0;
+}