summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDan Goodliffe <dan@randomdan.homeip.net>2022-11-17 19:44:40 +0000
committerDan Goodliffe <dan@randomdan.homeip.net>2022-11-17 19:44:49 +0000
commit46fb6990bfcd07497229a5081b8e38287054be01 (patch)
tree14eb8ee576836826f9739be122b7645be484685a
parentShaders can be deleted once attached to a program (diff)
downloadilt-46fb6990bfcd07497229a5081b8e38287054be01.tar.bz2
ilt-46fb6990bfcd07497229a5081b8e38287054be01.tar.xz
ilt-46fb6990bfcd07497229a5081b8e38287054be01.zip
Move OpenGL context behaviour tests into their own app
For our own sanity :)
-rw-r--r--test/Jamfile.jam1
-rw-r--r--test/test-glContextBhvr.cpp82
-rw-r--r--test/test-render.cpp71
3 files changed, 83 insertions, 71 deletions
diff --git a/test/Jamfile.jam b/test/Jamfile.jam
index 3f3150d..32c522b 100644
--- a/test/Jamfile.jam
+++ b/test/Jamfile.jam
@@ -31,4 +31,5 @@ run test-persistence.cpp : -- : [ sequence.insertion-sort [ glob fixtures/json/*
run test-text.cpp ;
run test-enumDetails.cpp ;
run test-render.cpp ;
+run test-glContextBhvr.cpp ;
compile test-static-enumDetails.cpp ;
diff --git a/test/test-glContextBhvr.cpp b/test/test-glContextBhvr.cpp
new file mode 100644
index 0000000..0ee45d6
--- /dev/null
+++ b/test/test-glContextBhvr.cpp
@@ -0,0 +1,82 @@
+#define BOOST_TEST_MODULE test_glcontextbehaviour
+
+#include "test-helpers.hpp"
+#include <boost/test/unit_test.hpp>
+
+#include <lib/glArrays.h>
+#include <ui/applicationBase.h>
+#include <ui/sceneRenderer.h>
+#include <ui/window.h>
+
+BOOST_GLOBAL_FIXTURE(ApplicationBase);
+
+#define TEST_WINDOW_PARAMS __FILE__, 0, 0, 640, 480, SDL_WINDOW_OPENGL | SDL_WINDOW_HIDDEN
+static void
+CreateProgramTest()
+{
+ ProgramRef p;
+ BOOST_REQUIRE(p);
+}
+BOOST_AUTO_TEST_CASE(windowContextThingsBehaviour1)
+{
+ BOOST_REQUIRE(!glCreateProgram); // Init not called yet
+ {
+ SDL_WindowPtr window {TEST_WINDOW_PARAMS};
+ BOOST_REQUIRE(window);
+ BOOST_REQUIRE(!glCreateProgram);
+ BOOST_REQUIRE_NE(glewInit(), GLEW_OK); // No context yet
+ {
+ SDL_GLContextPtr context {window};
+ BOOST_REQUIRE(context);
+ BOOST_REQUIRE(!glCreateProgram);
+ BOOST_REQUIRE_EQUAL(glewInit(), GLEW_OK);
+ BOOST_REQUIRE(glCreateProgram);
+ CreateProgramTest();
+ } // Context destroyed
+ BOOST_REQUIRE(glCreateProgram); // Functions still set
+ BOOST_REQUIRE_THROW({ ProgramRef p; }, std::exception); // Get fails with no context
+ {
+ SDL_GLContextPtr context {window};
+ BOOST_REQUIRE(context);
+ CreateProgramTest();
+ }
+ }
+ {
+ SDL_WindowPtr window {TEST_WINDOW_PARAMS};
+ BOOST_REQUIRE(window);
+ SDL_GLContextPtr context {window};
+ BOOST_REQUIRE(context);
+ CreateProgramTest();
+ }
+}
+
+BOOST_AUTO_TEST_CASE(windowContextThingsBehaviour2)
+{
+ SDL_WindowPtr window1 {TEST_WINDOW_PARAMS};
+ BOOST_REQUIRE(window1);
+ {
+ SDL_WindowPtr window2 {TEST_WINDOW_PARAMS};
+ BOOST_REQUIRE(window2);
+ SDL_GLContextPtr context {window2};
+ BOOST_REQUIRE(context);
+ CreateProgramTest();
+ }
+ BOOST_REQUIRE_THROW({ ProgramRef p; }, std::exception); // Get fails with no context
+}
+
+BOOST_AUTO_TEST_CASE(windowContextThingsBehaviour3)
+{
+ std::optional<SDL_WindowPtr> window1 {std::in_place, TEST_WINDOW_PARAMS};
+ std::optional<SDL_WindowPtr> window2 {std::in_place, TEST_WINDOW_PARAMS};
+ BOOST_REQUIRE(window1);
+ BOOST_REQUIRE(window1.value());
+ SDL_GLContextPtr context {window1.value()};
+ BOOST_REQUIRE(context);
+ CreateProgramTest();
+ window1.reset();
+ BOOST_REQUIRE_THROW({ ProgramRef p; }, std::exception); // Get fails with context's window gone
+ window1.emplace(TEST_WINDOW_PARAMS);
+ BOOST_REQUIRE(window1);
+ BOOST_REQUIRE(window1.value());
+ BOOST_REQUIRE_THROW({ ProgramRef p; }, std::exception); // Get still fails with context's window gone
+}
diff --git a/test/test-render.cpp b/test/test-render.cpp
index 590f8b3..89b2d90 100644
--- a/test/test-render.cpp
+++ b/test/test-render.cpp
@@ -48,77 +48,6 @@ public:
BOOST_GLOBAL_FIXTURE(ApplicationBase);
-#define TEST_WINDOW_PARAMS __FILE__, 0, 0, 640, 480, SDL_WINDOW_OPENGL | SDL_WINDOW_HIDDEN
-static void
-CreateProgramTest()
-{
- ProgramRef p;
- BOOST_REQUIRE(p);
-}
-BOOST_AUTO_TEST_CASE(windowContextThingsBehaviour1)
-{
- BOOST_REQUIRE(!glCreateProgram); // Init not called yet
- {
- SDL_WindowPtr window {TEST_WINDOW_PARAMS};
- BOOST_REQUIRE(window);
- BOOST_REQUIRE(!glCreateProgram);
- BOOST_REQUIRE_NE(glewInit(), GLEW_OK); // No context yet
- {
- SDL_GLContextPtr context {window};
- BOOST_REQUIRE(context);
- BOOST_REQUIRE(!glCreateProgram);
- BOOST_REQUIRE_EQUAL(glewInit(), GLEW_OK);
- BOOST_REQUIRE(glCreateProgram);
- CreateProgramTest();
- } // Context destroyed
- BOOST_REQUIRE(glCreateProgram); // Functions still set
- BOOST_REQUIRE_THROW({ ProgramRef p; }, std::exception); // Get fails with no context
- {
- SDL_GLContextPtr context {window};
- BOOST_REQUIRE(context);
- CreateProgramTest();
- }
- }
- {
- SDL_WindowPtr window {TEST_WINDOW_PARAMS};
- BOOST_REQUIRE(window);
- SDL_GLContextPtr context {window};
- BOOST_REQUIRE(context);
- CreateProgramTest();
- }
-}
-
-BOOST_AUTO_TEST_CASE(windowContextThingsBehaviour2)
-{
- SDL_WindowPtr window1 {TEST_WINDOW_PARAMS};
- BOOST_REQUIRE(window1);
- {
- SDL_WindowPtr window2 {TEST_WINDOW_PARAMS};
- BOOST_REQUIRE(window2);
- SDL_GLContextPtr context {window2};
- BOOST_REQUIRE(context);
- CreateProgramTest();
- }
- BOOST_REQUIRE_THROW({ ProgramRef p; }, std::exception); // Get fails with no context
-}
-
-BOOST_AUTO_TEST_CASE(windowContextThingsBehaviour3)
-{
- std::optional<SDL_WindowPtr> window1 {std::in_place, TEST_WINDOW_PARAMS};
- std::optional<SDL_WindowPtr> window2 {std::in_place, TEST_WINDOW_PARAMS};
- BOOST_REQUIRE(window1);
- BOOST_REQUIRE(window1.value());
- SDL_GLContextPtr context {window1.value()};
- BOOST_REQUIRE(context);
- CreateProgramTest();
- window1.reset();
- BOOST_REQUIRE_THROW({ ProgramRef p; }, std::exception); // Get fails with context's window gone
- window1.emplace(TEST_WINDOW_PARAMS);
- BOOST_REQUIRE(window1);
- BOOST_REQUIRE(window1.value());
- BOOST_REQUIRE_THROW({ ProgramRef p; }, std::exception); // Get still fails with context's window gone
-}
-
BOOST_FIXTURE_TEST_SUITE(w, TestRenderWindow);
BOOST_AUTO_TEST_CASE(basic)