aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid Robillard <d@drobilla.net>2019-10-27 13:19:23 +0100
committerDavid Robillard <d@drobilla.net>2019-11-03 21:03:18 +0100
commit5491a443b03cdc0f49b259873b7fc5919242a36c (patch)
tree91ef4046d2deb8dc21aa6488acf9d05c0e79e77e
parentc75c10d2385aaa1bbf7d8f5ae437ccd5d1e3803f (diff)
Add pugl_print_events test program
-rw-r--r--test/pugl_print_events.c83
-rw-r--r--wscript2
2 files changed, 85 insertions, 0 deletions
diff --git a/test/pugl_print_events.c b/test/pugl_print_events.c
new file mode 100644
index 0000000..c61b7f9
--- /dev/null
+++ b/test/pugl_print_events.c
@@ -0,0 +1,83 @@
+/*
+ Copyright 2012-2019 David Robillard <http://drobilla.net>
+
+ Permission to use, copy, modify, and/or distribute this software for any
+ purpose with or without fee is hereby granted, provided that the above
+ copyright notice and this permission notice appear in all copies.
+
+ THIS SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+ WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+ MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+ ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+ WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
+ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+*/
+
+/**
+ @file pugl_print_events.c A simple Pugl test that prints events.
+*/
+
+#include "test_utils.h"
+
+#include "pugl/pugl.h"
+#include "pugl/pugl_stub_backend.h"
+
+#include <math.h>
+#include <stdbool.h>
+#include <stdint.h>
+#include <stdio.h>
+#include <string.h>
+
+typedef struct
+{
+ PuglWorld* world;
+ PuglView* view;
+ int quit;
+} PuglPrintEventsApp;
+
+static PuglStatus
+onEvent(PuglView* view, const PuglEvent* event)
+{
+ PuglPrintEventsApp* app = (PuglPrintEventsApp*)puglGetHandle(view);
+
+ printEvent(event, "Event: ", true);
+
+ switch (event->type) {
+ case PUGL_CLOSE: app->quit = 1; break;
+ default: break;
+ }
+
+ return PUGL_SUCCESS;
+}
+
+int
+main(void)
+{
+ PuglPrintEventsApp app = {NULL, NULL, 0};
+
+ app.world = puglNewWorld();
+ app.view = puglNewView(app.world);
+
+ puglSetClassName(app.world, "Pugl Print Events");
+ puglSetBackend(app.view, puglStubBackend());
+ puglSetHandle(app.view, &app);
+ puglSetEventFunc(app.view, onEvent);
+
+ if (puglCreateWindow(app.view, "Pugl Event Printer")) {
+ fprintf(stderr, "error: Failed to create window\n");
+ return 1;
+ }
+
+ puglShowWindow(app.view);
+
+ while (!app.quit) {
+ puglPollEvents(app.world, -1);
+ puglDispatchEvents(app.world);
+ }
+
+ puglFreeView(app.view);
+ puglFreeWorld(app.world);
+
+ return 0;
+}
diff --git a/wscript b/wscript
index 5fce00e..10456d7 100644
--- a/wscript
+++ b/wscript
@@ -264,6 +264,8 @@ def build(bld):
if bld.is_defined('HAVE_GL'):
build_test('pugl_test', ['test/pugl_test.c'],
platform, 'gl', uselib=['M'])
+ build_test('pugl_print_events', ['test/pugl_print_events.c'],
+ platform, 'stub')
build_test('pugl_gl3_test',
['test/pugl_gl3_test.c', 'test/glad/glad.c'],
platform, 'gl', uselib=['M', 'DL'])