From 32ace0fcacd44981037c42069a5a753835b282d7 Mon Sep 17 00:00:00 2001 From: jmsgrogan Date: Sun, 26 Sep 2021 13:40:52 +0100 Subject: [PATCH] Add some graphics tests. --- .../ui_interfaces/x11/GlxInterface.cpp | 3 +- test/CMakeLists.txt | 10 +++-- test/graphics/TestOpenGlRendering.cpp | 42 +++++++++++++++++++ 3 files changed, 49 insertions(+), 6 deletions(-) create mode 100644 test/graphics/TestOpenGlRendering.cpp diff --git a/src/windows/ui_interfaces/x11/GlxInterface.cpp b/src/windows/ui_interfaces/x11/GlxInterface.cpp index f067a2c..70aaf09 100644 --- a/src/windows/ui_interfaces/x11/GlxInterface.cpp +++ b/src/windows/ui_interfaces/x11/GlxInterface.cpp @@ -40,9 +40,8 @@ std::unique_ptr GlxInterface::Create() void GlxInterface::SetupContext(Display* display, int default_screen) { /* Query framebuffer configurations that match visual_attribs */ - GLXFBConfig* fb_configs = nullptr; int num_fb_configs = 0; - fb_configs = glXChooseFBConfig(display, default_screen, visual_attribs, &num_fb_configs); + GLXFBConfig* fb_configs = glXChooseFBConfig(display, default_screen, visual_attribs, &num_fb_configs); if (!fb_configs || num_fb_configs == 0) { MLOG_ERROR("glXGetFBConfigs failed"); diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt index 7f2faff..6d13ebd 100644 --- a/test/CMakeLists.txt +++ b/test/CMakeLists.txt @@ -9,17 +9,19 @@ target_include_directories(test_utils PUBLIC list(APPEND TestFiles audio/TestAudioWriter.cpp - audio/TestMidiReader.cpp) + audio/TestMidiReader.cpp + graphics/TestOpenGlRendering.cpp) list(APPEND TestNames TestAudioWriter - TestMidiReader) + TestMidiReader + TestOpenGlRendering) foreach(TestFile TestName IN ZIP_LISTS TestFiles TestNames) add_executable(${TestName} ${TestFile}) - target_link_libraries(${TestName} PUBLIC core network database geometry audio graphics web test_utils) + target_link_libraries(${TestName} PUBLIC core network database geometry audio graphics web client test_utils) endforeach() add_executable(test_runner test_runner.cpp) -target_link_libraries(test_runner PUBLIC core network database geometry audio graphics web) \ No newline at end of file +target_link_libraries(test_runner PUBLIC core network database geometry audio graphics web client) \ No newline at end of file diff --git a/test/graphics/TestOpenGlRendering.cpp b/test/graphics/TestOpenGlRendering.cpp new file mode 100644 index 0000000..036e46a --- /dev/null +++ b/test/graphics/TestOpenGlRendering.cpp @@ -0,0 +1,42 @@ +#include "DesktopManager.h" +#include "XcbInterface.h" + +#include "TestCase.h" +#include "TestCaseRunner.h" + +#include +#include +#include + +class TestOpenGlRendering : public TestCase +{ +public: + bool Run() override + { + auto desktopManager = DesktopManager::Create(); + + auto mainWindow = desktopManager->GetWindowManager()->GetMainWindow(); + mainWindow->SetSize(800, 600); + + bool useOpenGl = true; + XcbInterface window_interface; + window_interface.SetUseOpenGl(true); + window_interface.Initialize(desktopManager.get()); + window_interface.AddWindow(mainWindow, desktopManager.get()); + window_interface.ShowWindow(mainWindow); + window_interface.CreateOpenGlDrawable(mainWindow); + window_interface.Loop(desktopManager.get()); + window_interface.ShutDown(); + + return true; + } +}; + +int main() +{ + TestCaseRunner runner; + runner.AddTestCase("TestOpenGlRendering", std::make_unique()); + + const auto testsPassed = runner.Run(); + return testsPassed ? 0 : -1; +}