// Copyright 2021 David Robillard // SPDX-License-Identifier: ISC // Basic test that ensures a view can be created with a stub backend #undef NDEBUG #include "test_utils.h" #include "pugl/pugl.h" #include "pugl/stub.h" #include #include typedef struct { PuglWorld* world; PuglView* view; PuglTestOptions opts; bool exposed; } PuglTest; static PuglStatus onEvent(PuglView* const view, const PuglEvent* const event) { PuglTest* const test = (PuglTest*)puglGetHandle(view); if (test->opts.verbose) { printEvent(event, "Event: ", true); } if (event->type == PUGL_EXPOSE) { assert(!puglGetContext(view)); test->exposed = true; } return PUGL_SUCCESS; } int main(int argc, char** argv) { PuglWorld* const world = puglNewWorld(PUGL_PROGRAM, 0); PuglView* const view = puglNewView(world); const PuglTestOptions opts = puglParseTestOptions(&argc, &argv); PuglTest test = {world, view, opts, false}; // Set up and show view puglSetClassName(test.world, "PuglTest"); puglSetWindowTitle(test.view, "Pugl Stub Test"); puglSetHandle(test.view, &test); puglSetBackend(test.view, puglStubBackend()); puglSetEventFunc(test.view, onEvent); puglSetSizeHint(test.view, PUGL_DEFAULT_SIZE, 512, 512); puglShow(test.view); // Drive event loop until the view gets exposed while (!test.exposed) { puglUpdate(test.world, -1.0); } // Tear down puglFreeView(test.view); puglFreeWorld(test.world); return 0; }