Skip to content

Commit 2185f45

Browse files
authored
[test] Improve test_sdl2_key and test_sdl2_mouse. NFC (#21336)
The TEST_EMSCRIPTEN_SDL_SETEVENTHANDLER macro is copied over from `test_sdl_key.c` (the SDL1 version) but its not applicable with SDL2. Remove the 3 second delay from test_sdl_mouse/test_sdl2_mouse. I ran these tests many times without any issues. We can perhaps revive with something less long but I can't really see how a delay here could be useful in practice.
1 parent eddd4f9 commit 2185f45

File tree

4 files changed

+26
-59
lines changed

4 files changed

+26
-59
lines changed

test/browser/test_sdl2_key.c

Lines changed: 10 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -19,14 +19,14 @@ int EventHandler(void *userdata, SDL_Event *event) {
1919
break;
2020
case SDL_KEYDOWN:
2121
switch (event->key.keysym.sym) {
22-
case SDLK_RIGHT: printf("right\n"); result *= 7; break;
23-
case SDLK_LEFT: printf("left\n"); result *= 11; break;
24-
case SDLK_DOWN: printf("down\n"); result *= 13; break;
25-
case SDLK_UP: printf("up\n"); result *= 17; break;
26-
case SDLK_a: printf("a\n"); result *= 19; break;
22+
case SDLK_RIGHT: printf("KEYDOWN: right\n"); result *= 7; break;
23+
case SDLK_LEFT: printf("KEYDOWN: left\n"); result *= 11; break;
24+
case SDLK_DOWN: printf("KEYDOWN: down\n"); result *= 13; break;
25+
case SDLK_UP: printf("KEYDOWN: up\n"); result *= 17; break;
26+
case SDLK_a: printf("KEYDOWN: a\n"); result *= 19; break;
2727
default: {
2828
if (event->key.keysym.scancode == SDL_SCANCODE_B) {
29-
printf("b scancode\n"); result *= 23; break;
29+
printf("KEYDOWN: b scancode\n"); result *= 23; break;
3030
}
3131
printf("unknown key: sym %d scancode %d\n", event->key.keysym.sym, event->key.keysym.scancode);
3232
emscripten_force_exit(result); // comment this out to leave event handling active. Use the following to log DOM keys:
@@ -35,8 +35,9 @@ int EventHandler(void *userdata, SDL_Event *event) {
3535
}
3636
break;
3737
case SDL_TEXTINPUT:
38+
printf("TEXTINPUT: %c\n", event->text.text[0]);
3839
if (event->text.text[0] == 'A') {
39-
printf("a\n");result *= 5;
40+
result *= 5;
4041
}
4142
break;
4243
default: /* Report an unhandled event */
@@ -45,13 +46,11 @@ int EventHandler(void *userdata, SDL_Event *event) {
4546
return 0;
4647
}
4748

48-
void one() {
49-
#ifndef TEST_EMSCRIPTEN_SDL_SETEVENTHANDLER
49+
void pump_events() {
5050
SDL_Event event;
5151
while (SDL_PollEvent(&event)) {
5252
EventHandler(0, &event);
5353
}
54-
#endif
5554
}
5655

5756
int main(int argc, char **argv) {
@@ -61,12 +60,6 @@ int main(int argc, char **argv) {
6160
SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED,
6261
640, 480, 0);
6362

64-
#ifdef TEST_EMSCRIPTEN_SDL_SETEVENTHANDLER
65-
emscripten_SDL_SetEventHandler(EventHandler, 0);
66-
#else
67-
one();
68-
#endif
69-
7063
SDL_StartTextInput();
7164

7265
emscripten_run_script("keydown(38);keyup(38)"); // up
@@ -77,7 +70,7 @@ int main(int argc, char **argv) {
7770
emscripten_run_script("keydown(66);keyup(66);"); // b
7871
emscripten_run_script("keydown(100);keyup(100);"); // trigger the end
7972

80-
emscripten_exit_with_live_runtime();
73+
emscripten_set_main_loop(pump_events, 3, 0);
8174
return 99;
8275
}
8376

test/browser/test_sdl2_mouse.c

Lines changed: 5 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -71,8 +71,6 @@ void one() {
7171
}
7272
}
7373

74-
void main_2(void* arg);
75-
7674
int main() {
7775
SDL_Init(SDL_INIT_VIDEO);
7876
SDL_Window *window;
@@ -84,17 +82,11 @@ int main() {
8482
SDL_Rect rect = { 0, 0, 600, 450 };
8583
SDL_RenderFillRect(renderer, &rect);
8684

87-
emscripten_async_call(main_2, NULL, 3000); // avoid startup delays and intermittent errors
88-
89-
return 99;
90-
}
91-
92-
void main_2(void* arg) {
93-
emscripten_run_script("window.simulateMouseEvent(10, 20, -1)"); // move from 0,0 to 10,20
94-
emscripten_run_script("window.simulateMouseEvent(10, 20, 0)"); // click
95-
emscripten_run_script("window.simulateMouseEvent(10, 20, 0)"); // click some more, but this one should be ignored through PeepEvent
96-
emscripten_run_script("window.simulateMouseEvent(30, 70, -1)"); // move some more
97-
emscripten_run_script("window.simulateMouseEvent(30, 70, 1)"); // trigger the end
85+
emscripten_run_script("simulateMouseEvent(10, 20, -1)"); // move from 0,0 to 10,20
86+
emscripten_run_script("simulateMouseEvent(10, 20, 0)"); // click
87+
emscripten_run_script("simulateMouseEvent(10, 20, 0)"); // click some more, but this one should be ignored through PeepEvent
88+
emscripten_run_script("simulateMouseEvent(30, 70, -1)"); // move some more
89+
emscripten_run_script("simulateMouseEvent(30, 70, 1)"); // trigger the end
9890

9991
emscripten_set_main_loop(one, 0, 0);
10092
}

test/browser/test_sdl_mouse.c

Lines changed: 5 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -70,17 +70,11 @@ int main() {
7070
SDL_Rect rect = { 0, 0, 600, 450 };
7171
SDL_FillRect(screen, &rect, 0x2244ffff);
7272

73-
emscripten_async_call(main_2, NULL, 3000); // avoid startup delays and intermittent errors
74-
75-
return 99;
76-
}
77-
78-
void main_2(void* arg) {
79-
emscripten_run_script("window.simulateMouseEvent(10, 20, -1)"); // move from 0,0 to 10,20
80-
emscripten_run_script("window.simulateMouseEvent(10, 20, 0)"); // click
81-
emscripten_run_script("window.simulateMouseEvent(10, 20, 0)"); // click some more, but this one should be ignored through PeepEvent
82-
emscripten_run_script("window.simulateMouseEvent(30, 77, -1)"); // move some more
83-
emscripten_run_script("window.simulateMouseEvent(30, 77, 1)"); // trigger the end
73+
emscripten_run_script("simulateMouseEvent(10, 20, -1)"); // move from 0,0 to 10,20
74+
emscripten_run_script("simulateMouseEvent(10, 20, 0)"); // click
75+
emscripten_run_script("simulateMouseEvent(10, 20, 0)"); // click some more, but this one should be ignored through PeepEvent
76+
emscripten_run_script("simulateMouseEvent(30, 77, -1)"); // move some more
77+
emscripten_run_script("simulateMouseEvent(30, 77, 1)"); // trigger the end
8478

8579
emscripten_set_main_loop(one, 0, 0);
8680
}

test/test_browser.py

Lines changed: 6 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1046,7 +1046,7 @@ def test_sdl_text(self):
10461046

10471047
def test_sdl_mouse(self):
10481048
create_file('pre.js', '''
1049-
function simulateMouseEvent(x, y, button) {
1049+
globalThis.simulateMouseEvent = (x, y, button) => {
10501050
var event = document.createEvent("MouseEvents");
10511051
if (button >= 0) {
10521052
var event1 = document.createEvent("MouseEvents");
@@ -1070,14 +1070,13 @@ def test_sdl_mouse(self):
10701070
Module['canvas'].dispatchEvent(event1);
10711071
}
10721072
}
1073-
window['simulateMouseEvent'] = simulateMouseEvent;
10741073
''')
10751074

10761075
self.btest_exit('test_sdl_mouse.c', args=['-O2', '--minify=0', '--pre-js', 'pre.js', '-lSDL', '-lGL'])
10771076

10781077
def test_sdl_mouse_offsets(self):
10791078
create_file('pre.js', '''
1080-
function simulateMouseEvent(x, y, button) {
1079+
globalThis.simulateMouseEvent = (x, y, button) => {
10811080
var event = document.createEvent("MouseEvents");
10821081
if (button >= 0) {
10831082
var event1 = document.createEvent("MouseEvents");
@@ -1101,7 +1100,6 @@ def test_sdl_mouse_offsets(self):
11011100
Module['canvas'].dispatchEvent(event1);
11021101
}
11031102
}
1104-
window['simulateMouseEvent'] = simulateMouseEvent;
11051103
''')
11061104
create_file('page.html', '''
11071105
<html>
@@ -3041,14 +3039,6 @@ def test_sdl2_image_formats(self):
30413039
@no_wasm64('SDL2 + wasm64')
30423040
def test_sdl2_key(self):
30433041
create_file('pre.js', '''
3044-
Module.postRun = () => {
3045-
function doOne() {
3046-
Module._one();
3047-
setTimeout(doOne, 1000/60);
3048-
}
3049-
setTimeout(doOne, 1000/60);
3050-
}
3051-
30523042
function keydown(c) {
30533043
var event = new KeyboardEvent("keydown", { 'keyCode': c, 'charCode': c, 'view': window, 'bubbles': true, 'cancelable': true });
30543044
var prevented = !document.dispatchEvent(event);
@@ -3066,7 +3056,7 @@ def test_sdl2_key(self):
30663056
}
30673057
''')
30683058

3069-
self.btest_exit('test_sdl2_key.c', 37182145, args=['-sUSE_SDL=2', '--pre-js', 'pre.js', '-sEXPORTED_FUNCTIONS=_main,_one'])
3059+
self.btest_exit('test_sdl2_key.c', 37182145, args=['-sUSE_SDL=2', '--pre-js', 'pre.js'])
30703060

30713061
@no_wasm64('SDL2 + wasm64')
30723062
def test_sdl2_text(self):
@@ -3091,7 +3081,7 @@ def test_sdl2_text(self):
30913081
@requires_graphics_hardware
30923082
def test_sdl2_mouse(self):
30933083
create_file('pre.js', '''
3094-
function simulateMouseEvent(x, y, button) {
3084+
globalThis.simulateMouseEvent = (x, y, button) => {
30953085
var event = document.createEvent("MouseEvents");
30963086
if (button >= 0) {
30973087
var event1 = document.createEvent("MouseEvents");
@@ -3115,16 +3105,15 @@ def test_sdl2_mouse(self):
31153105
Module['canvas'].dispatchEvent(event1);
31163106
}
31173107
}
3118-
window['simulateMouseEvent'] = simulateMouseEvent;
31193108
''')
31203109

3121-
self.btest_exit('test_sdl2_mouse.c', args=['-O2', '--minify=0', '-o', 'page.html', '--pre-js', 'pre.js', '-sUSE_SDL=2'])
3110+
self.btest_exit('test_sdl2_mouse.c', args=['-O2', '--minify=0', '--pre-js', 'pre.js', '-sUSE_SDL=2'])
31223111

31233112
@no_wasm64('SDL2 + wasm64')
31243113
@requires_graphics_hardware
31253114
def test_sdl2_mouse_offsets(self):
31263115
create_file('pre.js', '''
3127-
function simulateMouseEvent(x, y, button) {
3116+
globalThis.simulateMouseEvent = (x, y, button) => {
31283117
var event = document.createEvent("MouseEvents");
31293118
if (button >= 0) {
31303119
var event1 = document.createEvent("MouseEvents");
@@ -3148,7 +3137,6 @@ def test_sdl2_mouse_offsets(self):
31483137
Module['canvas'].dispatchEvent(event1);
31493138
}
31503139
}
3151-
window['simulateMouseEvent'] = simulateMouseEvent;
31523140
''')
31533141
create_file('page.html', '''
31543142
<html>

0 commit comments

Comments
 (0)