aboutsummaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
Diffstat (limited to 'tests')
-rw-r--r--tests/cases/phi24_ta2.ll3
-rwxr-xr-xtests/runner.py13
-rw-r--r--tests/sdl_pumpevents.c54
3 files changed, 69 insertions, 1 deletions
diff --git a/tests/cases/phi24_ta2.ll b/tests/cases/phi24_ta2.ll
index b5b0664b..4894d5e6 100644
--- a/tests/cases/phi24_ta2.ll
+++ b/tests/cases/phi24_ta2.ll
@@ -549,7 +549,8 @@ safe_mod_func_uint32_t_u_u.exit.i.i: ; preds = %189, %.preheader..p
%p_5.sroa.0.0.extract.trunc2674116.i.i = phi i8 [ %p_5.sroa.0.0.extract.trunc2670.i.i, %189 ], [ -1, %.preheader..preheader.split_crit_edge.i.i ]
%p_5.sroa.1.sroa.0.0.load6982115.i.i = phi i24 [ %p_5.sroa.1.sroa.0.0.load6978.i.i, %189 ], [ -1, %.preheader..preheader.split_crit_edge.i.i ]
store i16 0, i16* @g_84, align 2
- %p_5.sroa.1.1.insert.ext36.i.i = trunc i24 %p_5.sroa.1.sroa.0.0.load6982115.i.i to i16
+ %adddd = add i24 %p_5.sroa.1.sroa.0.0.load6982115.i.i, 1 ; test i24 add
+ %p_5.sroa.1.1.insert.ext36.i.i = trunc i24 %adddd to i16
%p_5.sroa.1.1.insert.shift37.i.i = shl i16 %p_5.sroa.1.1.insert.ext36.i.i, 8
%p_5.sroa.0.0.insert.ext10.i.i = zext i8 %p_5.sroa.0.0.extract.trunc2674116.i.i to i16
%p_5.sroa.0.0.insert.insert12.i.i = or i16 %p_5.sroa.1.1.insert.shift37.i.i, %p_5.sroa.0.0.insert.ext10.i.i
diff --git a/tests/runner.py b/tests/runner.py
index 9a8670b6..8d2cbcb4 100755
--- a/tests/runner.py
+++ b/tests/runner.py
@@ -13471,6 +13471,19 @@ Press any key to continue.'''
Popen([PYTHON, EMCC, os.path.join(self.get_dir(), 'sdl_mouse.c'), '-O2', '--minify', '0', '-o', 'sdl_mouse.js', '--pre-js', 'pre.js']).communicate()
self.run_browser('page.html', '', '/report_result?600')
+ def test_sdl_pumpevents(self):
+ # key events should be detected using SDL_PumpEvents
+ open(os.path.join(self.get_dir(), 'pre.js'), 'w').write('''
+ function keydown(c) {
+ var event = document.createEvent("KeyboardEvent");
+ event.initKeyEvent("keydown", true, true, window,
+ 0, 0, 0, 0,
+ c, c);
+ document.dispatchEvent(event);
+ }
+ ''')
+ self.btest('sdl_pumpevents.c', expected='3', args=['--pre-js', 'pre.js'])
+
def test_sdl_audio(self):
shutil.copyfile(path_from_root('tests', 'sounds', 'alarmvictory_1.ogg'), os.path.join(self.get_dir(), 'sound.ogg'))
shutil.copyfile(path_from_root('tests', 'sounds', 'alarmcreatemiltaryfoot_1.wav'), os.path.join(self.get_dir(), 'sound2.wav'))
diff --git a/tests/sdl_pumpevents.c b/tests/sdl_pumpevents.c
new file mode 100644
index 00000000..64becaad
--- /dev/null
+++ b/tests/sdl_pumpevents.c
@@ -0,0 +1,54 @@
+#include <stdio.h>
+#include <stdlib.h>
+#include <SDL/SDL.h>
+
+#include <emscripten.h>
+// bug - SDL_GetKeyboardState doesn't return scancodes, it returns keycodes, so acts exactly like
+// SDL_GetKeyState instead
+#define SDL_GetKeyState SDL_GetKeyboardState
+
+int result = 0;
+
+int loop1()
+{
+ unsigned i;
+ int r = 0;
+
+ // method 1: SDL_PollEvent loop
+ SDL_Event e;
+ while (SDL_PollEvent(&e));
+
+ const Uint8 *keys = SDL_GetKeyState(NULL);
+ if (keys[SDLK_LEFT])
+ r = 1;
+
+ return r;
+}
+
+int loop2()
+{
+ unsigned i;
+ int r = 0;
+
+ // method 2: SDL_PumpEvents
+ SDL_PumpEvents();
+
+ const Uint8 *keys = SDL_GetKeyState(NULL);
+ if (keys[SDLK_RIGHT])
+ r = 2;
+
+ return r;
+}
+
+int main(int argc, char *argv[])
+{
+ SDL_Init(SDL_INIT_EVERYTHING);
+ SDL_SetVideoMode(600, 400, 32, SDL_SWSURFACE);
+
+ emscripten_run_script("keydown(37);"); // left
+ result += loop1();
+ emscripten_run_script("keydown(39);"); // right
+ result += loop2();
+ REPORT_RESULT();
+ return 0;
+}