From 2cdda7ca1276b7f8cc3c235262aa5d9a1204d954 Mon Sep 17 00:00:00 2001 From: sanine Date: Thu, 16 Jun 2022 22:20:56 -0500 Subject: add initial window framework --- src/gl/notes.md | 10 ++++++++++ src/gl/window.c | 9 +++++++++ src/gl/window.test.c | 45 +++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 64 insertions(+) create mode 100644 src/gl/notes.md create mode 100644 src/gl/window.c create mode 100644 src/gl/window.test.c (limited to 'src/gl') diff --git a/src/gl/notes.md b/src/gl/notes.md new file mode 100644 index 0000000..3ea0171 --- /dev/null +++ b/src/gl/notes.md @@ -0,0 +1,10 @@ +honey/gl +-------- + +only support 1 window, for simplicity + +want to be **as transparent as possible**! only hide things from the Lua layer when they are either performance-critical or when they are so C-level that wrapping them would be too clunky. + +**lua setup functions should do nothing except populate tables** + +`gl.init()` will create the window (because that's how we get the opengl context) diff --git a/src/gl/window.c b/src/gl/window.c new file mode 100644 index 0000000..c81c041 --- /dev/null +++ b/src/gl/window.c @@ -0,0 +1,9 @@ +#include "gl/glad/glad.h" +#include +#include + + +int gl_init(lua_State *L) +{ + return 0; +} diff --git a/src/gl/window.test.c b/src/gl/window.test.c new file mode 100644 index 0000000..0dc255b --- /dev/null +++ b/src/gl/window.test.c @@ -0,0 +1,45 @@ +#include +#include +#include "test/honey-test.h" + +int mock_glfwInit(); +#define glfwInit mock_glfwInit +#include "gl/window.c" +#undef glfwInit + + +lily_mock_t *mock_glfwInit_data = NULL; +int mock_glfwInit() +{ + lily_mock_call(mock_glfwInit_data, NULL); + + int result; + lily_dequeue(mock_glfwInit_data->values, int, &result); + return result; +} + + +void gl_init_succeeds(); + +void suite_window() +{ + lily_run_test(gl_init_succeeds); + + CLEAN_MOCK(mock_glfwInit); +} + + +/* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */ + + +void gl_init_succeeds() +{ + USE_MOCK(mock_glfwInit); + lua_State *L = luaL_newstate(); + + lua_pushcfunction(L, gl_init); + int error = lua_pcall(L, 0, 0, 0); + + lily_assert_int_equal(error, 0); + lily_assert_int_equal(mock_glfwInit_data->n_calls, 1); +} -- cgit v1.2.1