X-Git-Url: https://git.sesse.net/?p=movit;a=blobdiff_plain;f=gtest_sdl_main.cpp;h=70fed134b2ad4b134787c8d26c8875b2ea95ac89;hp=39027e6be3246f75fae37a09d333859920ff539b;hb=0ed2c7fe3876a49d1565e3425e5a491206ffe32d;hpb=37f56fcbe571b2322243f6de59494bf9e0cbb37a diff --git a/gtest_sdl_main.cpp b/gtest_sdl_main.cpp index 39027e6..70fed13 100644 --- a/gtest_sdl_main.cpp +++ b/gtest_sdl_main.cpp @@ -1,8 +1,17 @@ #define GTEST_HAS_EXCEPTIONS 0 +#ifdef HAVE_SDL2 +#include +#include +#include +#else #include #include #include +#endif +#ifdef HAVE_BENCHMARK +#include +#endif #include #include @@ -17,11 +26,49 @@ int main(int argc, char **argv) { SDL_GL_SetAttribute(SDL_GL_DEPTH_SIZE, 0); SDL_GL_SetAttribute(SDL_GL_STENCIL_SIZE, 0); SDL_GL_SetAttribute(SDL_GL_DOUBLEBUFFER, 1); + +#ifdef HAVE_SDL2 + // You can uncomment this if you want to try a core context. + // For Mesa, you can get the same effect by doing + // + // export MESA_GL_VERSION_OVERRIDE=3.1FC + // + // before running tests. +// SDL_GL_SetAttribute(SDL_GL_CONTEXT_PROFILE_MASK, SDL_GL_CONTEXT_PROFILE_CORE); +// SDL_GL_SetAttribute(SDL_GL_CONTEXT_MAJOR_VERSION, 3); +// SDL_GL_SetAttribute(SDL_GL_CONTEXT_MINOR_VERSION, 2); + + // See also init.cpp for how to enable debugging. +// SDL_GL_SetAttribute(SDL_GL_CONTEXT_FLAGS, SDL_GL_CONTEXT_DEBUG_FLAG); + + SDL_Window *window = SDL_CreateWindow("OpenGL window for unit test", + SDL_WINDOWPOS_UNDEFINED, + SDL_WINDOWPOS_UNDEFINED, + 32, 32, + SDL_WINDOW_OPENGL); + SDL_GLContext context = SDL_GL_CreateContext(window); + assert(context != NULL); +#else SDL_SetVideoMode(32, 32, 0, SDL_OPENGL); SDL_WM_SetCaption("OpenGL window for unit test", NULL); +#endif - testing::InitGoogleTest(&argc, argv); - int err = RUN_ALL_TESTS(); + int err; + if (argc >= 2 && strcmp(argv[1], "--benchmark") == 0) { +#ifdef HAVE_BENCHMARK + --argc; + ::benchmark::Initialize(&argc, argv + 1); + if (::benchmark::ReportUnrecognizedArguments(argc, argv)) return 1; + ::benchmark::RunSpecifiedBenchmarks(); + err = 0; +#else + fprintf(stderr, "No support for microbenchmarks compiled in.\n"); + err = 1; +#endif + } else { + testing::InitGoogleTest(&argc, argv); + err = RUN_ALL_TESTS(); + } SDL_Quit(); - exit(err); + return err; }