summaryrefslogtreecommitdiff
path: root/test/testMainWindow.cpp
blob: 40f556740c1f1f0cba21259a879f17a6a73a5e3d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
#include "testMainWindow.h"
#include <boost/test/framework.hpp>
#include <boost/test/test_tools.hpp>
#include <format>
#include <stacktrace>

TestMainWindow::TestMainWindow() : MainWindow {{1, 1}, __FILE__, SDL_WINDOW_OPENGL | SDL_WINDOW_HIDDEN}
{
	glEnable(GL_DEBUG_OUTPUT);
	glEnable(GL_DEBUG_OUTPUT_SYNCHRONOUS);
	glDebugMessageCallback(
			[](GLenum /*source*/, GLenum type, GLuint /*id*/, GLenum severity, GLsizei /*length*/,
					const GLchar * message, const void *) {
				const auto msg = std::format("GL CALLBACK: {} type = 0x{:x}, severity = 0x{:x}, message = {}",
						(type == GL_DEBUG_TYPE_ERROR ? "** GL ERROR **" : ""), type, severity, message);
				BOOST_TEST_INFO(std::stacktrace::current());
				switch (type) {
					case GL_DEBUG_TYPE_ERROR:
					case GL_DEBUG_TYPE_PORTABILITY:
					case GL_DEBUG_TYPE_DEPRECATED_BEHAVIOR:
					case GL_DEBUG_TYPE_UNDEFINED_BEHAVIOR:
						BOOST_TEST_ERROR(msg);
					case GL_DEBUG_TYPE_PERFORMANCE:
						BOOST_TEST_WARN(msg.c_str());
					default:
						BOOST_TEST_MESSAGE(msg);
				}
			},
			nullptr);
}