summaryrefslogtreecommitdiff
path: root/tests/cocoa
diff options
context:
space:
mode:
authorBerke Güzel <wenekar1@gmail.com>2026-10-13 15:41:39 +0300
committerBerke Güzel <wenekar1@gmail.com>2026-10-13 15:41:39 +0300
commit482f799d356a8fbb8f585c4de7cc0992b8dc6fd3 (patch)
tree85551a69e3c356da7b9b514224e25a6c2f8d29b9 /tests/cocoa
parent537b2d768b31deb0f95c5122e0d562e4406ae9a0 (diff)
Migrate tests to the unified event API
Port backend, input, tablet and app tests from yasl_input_event and YASL_INPUT_* to struct yasl_event and YASL_EVENT_*. The input allocation test links input.c on its own, so it stubs yasl_loop_now_ns() for the new event timestamps. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Diffstat (limited to 'tests/cocoa')
-rw-r--r--tests/cocoa/test_cursor.m6
-rw-r--r--tests/cocoa/test_keyboard.m43
-rw-r--r--tests/cocoa/test_ownership.m16
-rw-r--r--tests/cocoa/test_tablet.m42
4 files changed, 53 insertions, 54 deletions
diff --git a/tests/cocoa/test_cursor.m b/tests/cocoa/test_cursor.m
index aaca815..4054d59 100644
--- a/tests/cocoa/test_cursor.m
+++ b/tests/cocoa/test_cursor.m
@@ -37,10 +37,10 @@ int main(void)
[view mouseMoved:motion];
[view cursorUpdate:cursor];
assert([NSCursor currentCursor] == hidden);
- struct yasl_input_event event;
+ struct yasl_event event;
bool moved = false;
- while (yasl_surface_input_poll(surface, &event))
- if (event.kind == YASL_INPUT_MOUSE && event.mouse.kind == YASL_PTR_MOTION)
+ while (yasl_surface_poll_event(surface, &event))
+ if (event.type == YASL_EVENT_POINTER_MOTION)
moved = true;
assert(moved);
diff --git a/tests/cocoa/test_keyboard.m b/tests/cocoa/test_keyboard.m
index d6a1336..f93a745 100644
--- a/tests/cocoa/test_keyboard.m
+++ b/tests/cocoa/test_keyboard.m
@@ -31,18 +31,18 @@
}
@end
-static struct yasl_input_event next(struct yasl_surface *surface, enum yasl_input_kind kind)
+static struct yasl_event next(struct yasl_surface *surface, enum yasl_event_type type)
{
- struct yasl_input_event event;
- assert(yasl_surface_input_poll(surface, &event));
- assert(event.kind == kind && event.surface == surface);
+ struct yasl_event event;
+ assert(yasl_surface_poll_event(surface, &event));
+ assert(event.type == type && event.surface == surface);
return event;
}
static void empty(struct yasl_surface *surface)
{
- struct yasl_input_event event;
- assert(!yasl_surface_input_poll(surface, &event));
+ struct yasl_event event;
+ assert(!yasl_surface_poll_event(surface, &event));
}
int main(void)
@@ -55,8 +55,8 @@ int main(void)
assert(surface);
NSWindow *window = (NSWindow *)yasl_surface_get_native_handle(surface);
NSView<NSTextInputClient> *view = (id)window.contentView;
- struct yasl_input_event event;
- while (yasl_surface_input_poll(surface, &event)) {}
+ struct yasl_event event;
+ while (yasl_surface_poll_event(surface, &event)) {}
InputSample *sample = [InputSample new];
NSEvent *native = (NSEvent *)sample;
@@ -65,7 +65,7 @@ int main(void)
sample.label = @"q";
sample.shiftedLabel = @"Q";
[view keyUp:native];
- event = next(surface, YASL_INPUT_KEY);
+ event = next(surface, YASL_EVENT_KEY);
assert(event.key.key == YASL_KEY_A && event.key.native_code == 0);
assert(event.key.action == YASL_KEY_RELEASE);
assert(event.key.codepoint == 'q' && event.key.shifted == 'Q');
@@ -73,18 +73,18 @@ int main(void)
sample.label = @"😀"; /* One scalar, two UTF-16 units. */
sample.shiftedLabel = @"ab";
[view keyUp:native];
- event = next(surface, YASL_INPUT_KEY);
+ event = next(surface, YASL_EVENT_KEY);
assert(event.key.codepoint == 0x1f600 && event.key.shifted == 0);
sample.type = NSEventTypeFlagsChanged;
sample.keyCode = 56; /* Left Shift. */
sample.modifierFlags = NSEventModifierFlagShift | 0x0002;
[view flagsChanged:native];
- event = next(surface, YASL_INPUT_KEY);
+ event = next(surface, YASL_EVENT_KEY);
assert(event.key.key == YASL_KEY_LEFT_SHIFT && event.key.action == YASL_KEY_PRESS);
assert(event.key.mods == YASL_MOD_SHIFT && !event.key.codepoint && !event.key.shifted);
sample.modifierFlags = 0;
[view flagsChanged:native];
- assert(next(surface, YASL_INPUT_KEY).key.action == YASL_KEY_RELEASE);
+ assert(next(surface, YASL_EVENT_KEY).key.action == YASL_KEY_RELEASE);
/* Native text services own preedit and commits. Marked text is not an
* insertion, and commits retain all UTF-8 bytes, including non-BMP. */
@@ -93,8 +93,8 @@ int main(void)
assert(strcmp(yasl_surface_ime_preedit(surface), "é") == 0);
empty(surface);
[view insertText:@"😀é" replacementRange:NSMakeRange(NSNotFound, 0)];
- event = next(surface, YASL_INPUT_TEXT);
- assert(event.text.len == strlen("😀é") && strcmp(event.text.text, "😀é") == 0);
+ event = next(surface, YASL_EVENT_TEXT);
+ assert(event.text.len == strlen("😀é") && strcmp(event.text.data, "😀é") == 0);
assert(!yasl_surface_ime_preedit(surface));
empty(surface);
@@ -104,9 +104,9 @@ int main(void)
modifierFlags:0 timestamp:0 windowNumber:window.windowNumber context:nil
characters:@"a" charactersIgnoringModifiers:@"a" isARepeat:NO keyCode:0];
[view keyDown:press];
- assert(next(surface, YASL_INPUT_KEY).key.key == YASL_KEY_A);
- event = next(surface, YASL_INPUT_TEXT);
- assert(event.text.len == 1 && event.text.text[0] == 'a');
+ assert(next(surface, YASL_EVENT_KEY).key.key == YASL_KEY_A);
+ event = next(surface, YASL_EVENT_TEXT);
+ assert(event.text.len == 1 && event.text.data[0] == 'a');
empty(surface);
sample.type = NSEventTypeScrollWheel;
@@ -114,15 +114,14 @@ int main(void)
sample.scrollingDeltaX = -2.5;
sample.scrollingDeltaY = 1.25;
[view scrollWheel:native];
- event = next(surface, YASL_INPUT_MOUSE);
- assert(event.mouse.kind == YASL_PTR_SCROLL);
- assert(event.mouse.scroll.x == 0.25 && event.mouse.scroll.y == -0.125);
+ event = next(surface, YASL_EVENT_POINTER_SCROLL);
+ assert(event.pointer.scroll.x == 0.25 && event.pointer.scroll.y == -0.125);
sample.hasPreciseScrollingDeltas = NO;
sample.scrollingDeltaX = 1;
sample.scrollingDeltaY = -1;
[view scrollWheel:native];
- event = next(surface, YASL_INPUT_MOUSE);
- assert(event.mouse.scroll.x == -1 && event.mouse.scroll.y == 1);
+ event = next(surface, YASL_EVENT_POINTER_SCROLL);
+ assert(event.pointer.scroll.x == -1 && event.pointer.scroll.y == 1);
sample.scrollingDeltaX = NAN;
[view scrollWheel:native];
empty(surface);
diff --git a/tests/cocoa/test_ownership.m b/tests/cocoa/test_ownership.m
index 4e3bbd6..5fd5cbf 100644
--- a/tests/cocoa/test_ownership.m
+++ b/tests/cocoa/test_ownership.m
@@ -19,8 +19,8 @@ int main(void)
assert(yasl_cocoa_surface_get_window(s) == window);
assert(yasl_cocoa_surface_get_view(s) == window.contentView);
assert([window isKindOfClass:[NSWindow class]] && window.contentView);
- struct yasl_input_event event;
- while (yasl_surface_input_poll(s, &event)) {}
+ struct yasl_event event;
+ while (yasl_surface_poll_event(s, &event)) {}
@autoreleasepool {
for (int i = 0; i < 600; i++) {
char text[32];
@@ -34,19 +34,19 @@ int main(void)
for (int i = 0; i < 600; i++) {
char text[32];
snprintf(text, sizeof(text), "paste-%d", i);
- assert(yasl_surface_input_poll(s, &event));
- assert(event.kind == YASL_INPUT_PASTE && strcmp(event.paste.text, text) == 0);
+ assert(yasl_surface_poll_event(s, &event));
+ assert(event.type == YASL_EVENT_PASTE && strcmp(event.text.data, text) == 0);
}
- const char *last = event.paste.text;
- assert(!yasl_surface_input_poll(s, &event));
+ const char *last = event.text.data;
+ assert(!yasl_surface_poll_event(s, &event));
@autoreleasepool { yasl_display_copy(d, YASL_CLIPBOARD, "new selection"); }
assert(strcmp(last, "paste-599") == 0);
@autoreleasepool {
yasl_display_copy(d, YASL_CLIPBOARD, "");
yasl_display_paste(d, YASL_CLIPBOARD, s);
}
- assert(yasl_surface_input_poll(s, &event));
- assert(event.kind == YASL_INPUT_PASTE && !event.paste.len && !event.paste.text[0]);
+ assert(yasl_surface_poll_event(s, &event));
+ assert(event.type == YASL_EVENT_PASTE && !event.text.len && !event.text.data[0]);
yasl_surface_destroy(s);
yasl_display_close(d);
return 0;
diff --git a/tests/cocoa/test_tablet.m b/tests/cocoa/test_tablet.m
index ed6dc64..715a66e 100644
--- a/tests/cocoa/test_tablet.m
+++ b/tests/cocoa/test_tablet.m
@@ -35,13 +35,13 @@
}
@end
-static struct yasl_mouse_event next(struct yasl_surface *surface)
+static struct yasl_event next(struct yasl_surface *surface)
{
- struct yasl_input_event event;
- while (yasl_surface_input_poll(surface, &event))
- if (event.kind == YASL_INPUT_MOUSE) return event.mouse;
+ struct yasl_event event;
+ while (yasl_surface_poll_event(surface, &event))
+ return event;
assert(!"Expected a pointer event");
- return (struct yasl_mouse_event){0};
+ return (struct yasl_event){0};
}
int main(void)
@@ -54,8 +54,8 @@ int main(void)
assert(surface);
NSWindow *window = (NSWindow *)yasl_surface_get_native_handle(surface);
NSView *view = window.contentView;
- struct yasl_input_event event;
- while (yasl_surface_input_poll(surface, &event)) {}
+ struct yasl_event event;
+ while (yasl_surface_poll_event(surface, &event)) {}
TabletSample *sample = [TabletSample new];
NSEvent *native = (NSEvent *)sample;
sample.type = NSEventTypeTabletProximity;
@@ -67,16 +67,16 @@ int main(void)
sample.locationInWindow = NSMakePoint(100, 120);
sample.sampleTilt = NSMakePoint(-0.5, 0.5);
[view mouseMoved:native];
- struct yasl_mouse_event ev = next(surface);
- assert(ev.device == YASL_PTR_DEV_PEN && ev.kind == YASL_PTR_MOTION && !ev.pen.pressure);
- assert(ev.pen.tilt_x == -45 && ev.pen.tilt_y == -45);
+ struct yasl_event ev = next(surface);
+ assert(ev.pointer.device == YASL_PTR_DEV_PEN && ev.type == YASL_EVENT_POINTER_MOTION && !ev.pointer.pen.pressure);
+ assert(ev.pointer.pen.tilt_x == -45 && ev.pointer.pen.tilt_y == -45);
sample.type = NSEventTypeLeftMouseDown;
sample.samplePressure = 0.5;
[view mouseDown:native];
ev = next(surface);
- assert(ev.device == YASL_PTR_DEV_PEN && ev.kind == YASL_PTR_PRESS && ev.button == 0);
- assert(ev.pen.pressure == 32767);
- struct yasl_vector2i position = ev.pos;
+ assert(ev.pointer.device == YASL_PTR_DEV_PEN && ev.type == YASL_EVENT_POINTER_DOWN && ev.pointer.button == YASL_BUTTON_PRIMARY);
+ assert(ev.pointer.pen.pressure == 32767);
+ struct yasl_vector2i position = ev.pointer.pos;
/* Native tablet events cover stationary pressure changes. */
sample.type = NSEventTypeTabletPoint;
sample.subtype = NSEventSubtypeMouseEvent;
@@ -84,19 +84,19 @@ int main(void)
sample.samplePressure = 1.5;
[view tabletPoint:native];
ev = next(surface);
- assert(ev.kind == YASL_PTR_MOTION && ev.pen.pressure == 65535);
- assert(ev.pos.x == position.x && ev.pos.y == position.y);
+ assert(ev.type == YASL_EVENT_POINTER_MOTION && ev.pointer.pen.pressure == 65535);
+ assert(ev.pointer.pos.x == position.x && ev.pointer.pos.y == position.y);
sample.samplePressure = 0; /* Zero does not release a held tip button. */
[view tabletPoint:native];
- assert(next(surface).kind == YASL_PTR_MOTION);
+ assert(next(surface).type == YASL_EVENT_POINTER_MOTION);
sample.buttonMask = 0;
[view tabletPoint:native];
ev = next(surface);
- assert(ev.kind == YASL_PTR_RELEASE && !ev.pen.pressure && ev.device == YASL_PTR_DEV_PEN);
+ assert(ev.type == YASL_EVENT_POINTER_UP && !ev.pointer.pen.pressure && ev.pointer.device == YASL_PTR_DEV_PEN);
sample.type = NSEventTypeTabletProximity;
sample.enteringProximity = NO;
[view tabletProximity:native];
- assert(next(surface).kind == YASL_PTR_LEAVE);
+ assert(next(surface).type == YASL_EVENT_POINTER_LEAVE);
sample.enteringProximity = YES;
sample.tool = NSPointingDeviceTypeEraser;
[view tabletProximity:native];
@@ -105,16 +105,16 @@ int main(void)
sample.buttonMask = NSEventButtonMaskPenTip;
[view tabletPoint:native];
ev = next(surface);
- assert(ev.device == YASL_PTR_DEV_ERASER && ev.kind == YASL_PTR_PRESS && ev.pen.pressure > 0);
+ assert(ev.pointer.device == YASL_PTR_DEV_ERASER && ev.type == YASL_EVENT_POINTER_DOWN && ev.pointer.pen.pressure > 0);
sample.type = NSEventTypeTabletProximity;
sample.enteringProximity = NO;
[view tabletProximity:native];
ev = next(surface);
- assert(ev.device == YASL_PTR_DEV_ERASER && ev.kind == YASL_PTR_LEAVE && !ev.pen.pressure);
+ assert(ev.pointer.device == YASL_PTR_DEV_ERASER && ev.type == YASL_EVENT_POINTER_LEAVE && !ev.pointer.pen.pressure);
sample.type = NSEventTypeMouseMoved;
[view mouseMoved:native];
ev = next(surface);
- assert(ev.device == YASL_PTR_DEV_MOUSE && !ev.pen.pressure);
+ assert(ev.pointer.device == YASL_PTR_DEV_MOUSE && !ev.pointer.pen.pressure);
[sample release];
yasl_surface_destroy(surface);
yasl_display_close(display);