Browse Source

Create a mock class for the render interface

And add the ability to override the tests shell render interface, so that we can easily use the mock.
Michael Ragazzon 1 year ago
parent
commit
05f24a76ff

+ 19 - 0
Tests/Source/Common/Mocks.h

@@ -2,6 +2,7 @@
 
 #include <RmlUi/Core/EventListener.h>
 #include <RmlUi/Core/EventListenerInstancer.h>
+#include <RmlUi/Core/RenderInterface.h>
 #include <doctest.h>
 #include <doctest/trompeloeil.hpp>
 
@@ -16,3 +17,21 @@ class MockEventListenerInstancer : public trompeloeil::mock_interface<Rml::Event
 public:
 	IMPLEMENT_MOCK2(InstanceEventListener);
 };
+
+class MockRenderInterface : public trompeloeil::mock_interface<Rml::RenderInterface> {
+public:
+	IMPLEMENT_MOCK2(CompileGeometry);
+	IMPLEMENT_MOCK3(RenderGeometry);
+	IMPLEMENT_MOCK1(ReleaseGeometry);
+
+	IMPLEMENT_MOCK2(LoadTexture);
+	IMPLEMENT_MOCK2(GenerateTexture);
+	IMPLEMENT_MOCK1(ReleaseTexture);
+
+	IMPLEMENT_MOCK1(EnableScissorRegion);
+	IMPLEMENT_MOCK1(SetScissorRegion);
+
+	IMPLEMENT_MOCK2(CompileShader);
+	IMPLEMENT_MOCK4(RenderShader);
+	IMPLEMENT_MOCK1(ReleaseShader);
+};

+ 4 - 4
Tests/Source/Common/TestsShell.cpp

@@ -71,7 +71,7 @@ TestsRenderInterface shell_render_interface;
 #endif
 } // namespace
 
-static void InitializeShell(bool allow_debugger)
+static void InitializeShell(bool allow_debugger, Rml::RenderInterface* override_render_interface)
 {
 	if (shell_initialized)
 		return;
@@ -105,7 +105,7 @@ static void InitializeShell(bool allow_debugger)
 #else
 	// Set our custom system and render interfaces.
 	Rml::SetSystemInterface(&tests_system_interface);
-	Rml::SetRenderInterface(&shell_render_interface);
+	Rml::SetRenderInterface(override_render_interface ? override_render_interface : &shell_render_interface);
 
 	REQUIRE(Rml::Initialise());
 	shell_context = Rml::CreateContext("main", window_size);
@@ -113,9 +113,9 @@ static void InitializeShell(bool allow_debugger)
 #endif
 }
 
-Rml::Context* TestsShell::GetContext(bool allow_debugger)
+Rml::Context* TestsShell::GetContext(bool allow_debugger, Rml::RenderInterface* override_render_interface)
 {
-	InitializeShell(allow_debugger);
+	InitializeShell(allow_debugger, override_render_interface);
 	return shell_context;
 }
 

+ 1 - 1
Tests/Source/Common/TestsShell.h

@@ -39,7 +39,7 @@ class TestsSystemInterface;
 namespace TestsShell {
 
 // Will initialize the shell and create a context on first use.
-Rml::Context* GetContext(bool allow_debugger = true);
+Rml::Context* GetContext(bool allow_debugger = true, Rml::RenderInterface* override_render_interface = nullptr);
 
 void BeginFrame();
 void PresentFrame();