diff options
-rw-r--r-- | src/gl/window.c | 37 | ||||
-rw-r--r-- | src/gl/window.test.c | 164 |
2 files changed, 199 insertions, 2 deletions
diff --git a/src/gl/window.c b/src/gl/window.c index 24f21be..03afd24 100644 --- a/src/gl/window.c +++ b/src/gl/window.c @@ -7,7 +7,42 @@ void create_glfw_window_hints_table(lua_State *L) { hs_create_table(L, - hs_str_int("resizable", GLFW_RESIZABLE) + /* window hints */ + hs_str_int("resizable", GLFW_RESIZABLE), + hs_str_int("visible", GLFW_VISIBLE), + hs_str_int("decorated", GLFW_DECORATED), + hs_str_int("focused", GLFW_FOCUSED), + hs_str_int("autoIconify", GLFW_AUTO_ICONIFY), + hs_str_int("floating", GLFW_FLOATING), + hs_str_int("maximized", GLFW_MAXIMIZED), + hs_str_int("centerCursor", GLFW_CENTER_CURSOR), + hs_str_int("transparentFramebuffer", GLFW_TRANSPARENT_FRAMEBUFFER), + hs_str_int("focusOnShow", GLFW_FOCUS_ON_SHOW), + hs_str_int("scaleToMonitor", GLFW_SCALE_TO_MONITOR), + + /* framebuffer hints */ + hs_str_int("redBits", GLFW_RED_BITS), + hs_str_int("greenBits", GLFW_GREEN_BITS), + hs_str_int("blueBits", GLFW_BLUE_BITS), + hs_str_int("alphaBits", GLFW_ALPHA_BITS), + hs_str_int("depthBits", GLFW_DEPTH_BITS), + hs_str_int("stereoscopic", GLFW_STEREO), + hs_str_int("samples", GLFW_SAMPLES), + hs_str_int("srgbCapable", GLFW_SRGB_CAPABLE), + hs_str_int("doubleBuffer", GLFW_DOUBLEBUFFER), + + /* monitor & context hints */ + hs_str_int("refreshRate", GLFW_REFRESH_RATE), + hs_str_int("clientApi", GLFW_CLIENT_API), + hs_str_int("contextCreationApi", GLFW_CONTEXT_CREATION_API), + hs_str_int("contextVersionMajor", GLFW_CONTEXT_VERSION_MAJOR), + hs_str_int("contextVersionMinor", GLFW_CONTEXT_VERSION_MINOR), + hs_str_int("forwardCompatible", GLFW_OPENGL_FORWARD_COMPAT), + hs_str_int("debugContext", GLFW_OPENGL_DEBUG_CONTEXT), + hs_str_int("profile", GLFW_OPENGL_PROFILE), + hs_str_int("contextRobustness", GLFW_CONTEXT_ROBUSTNESS), + hs_str_int("contextReleaseBehavior", GLFW_CONTEXT_RELEASE_BEHAVIOR), + hs_str_int("noError", GLFW_CONTEXT_NO_ERROR) ); } diff --git a/src/gl/window.test.c b/src/gl/window.test.c index 8ba8a58..6d5c844 100644 --- a/src/gl/window.test.c +++ b/src/gl/window.test.c @@ -112,12 +112,18 @@ void gl_init_fail_glfwInit() int get_int(lua_State *L, int table_index, const char *key) { lua_getfield(L, table_index, key); - lily_assert_true(lua_isnumber(L, -1)); + lily_assert_msg(lua_isnumber(L, -1), LILY_LOCATION, "key %s is not a number", key); int n = lua_tointeger(L, -1); lua_pop(L, 1); return n; } +#define CHECK_VALUE(str, num) \ + do { \ + int value = get_int(L, 1, str); \ + lily_assert_int_equal(value, num); \ + } while(0) + void glfw_window_hints_table() { lua_State *L = luaL_newstate(); @@ -127,10 +133,166 @@ void glfw_window_hints_table() lily_assert_int_equal(lua_gettop(L), 1); lily_assert_true(lua_istable(L, -1)); + /* window hints */ lily_assert_int_equal( get_int(L, 1, "resizable"), GLFW_RESIZABLE ); + lily_assert_int_equal( + get_int(L, 1, "visible"), + GLFW_VISIBLE + ); + + lily_assert_int_equal( + get_int(L, 1, "decorated"), + GLFW_DECORATED + ); + + lily_assert_int_equal( + get_int(L, 1, "focused"), + GLFW_FOCUSED + ); + + lily_assert_int_equal( + get_int(L, 1, "autoIconify"), + GLFW_AUTO_ICONIFY + ); + + lily_assert_int_equal( + get_int(L, 1, "floating"), + GLFW_FLOATING + ); + + lily_assert_int_equal( + get_int(L, 1, "maximized"), + GLFW_MAXIMIZED + ); + + lily_assert_int_equal( + get_int(L, 1, "centerCursor"), + GLFW_CENTER_CURSOR + ); + + lily_assert_int_equal( + get_int(L, 1, "transparentFramebuffer"), + GLFW_TRANSPARENT_FRAMEBUFFER + ); + + lily_assert_int_equal( + get_int(L, 1, "focusOnShow"), + GLFW_FOCUS_ON_SHOW + ); + + lily_assert_int_equal( + get_int(L, 1, "scaleToMonitor"), + GLFW_SCALE_TO_MONITOR + ); + + + /* framebuffer hints */ + /* (don't expose accumulation or auxiliary buffer hints) */ + lily_assert_int_equal( + get_int(L, 1, "redBits"), + GLFW_RED_BITS + ); + + lily_assert_int_equal( + get_int(L, 1, "greenBits"), + GLFW_GREEN_BITS + ); + + lily_assert_int_equal( + get_int(L, 1, "blueBits"), + GLFW_BLUE_BITS + ); + + lily_assert_int_equal( + get_int(L, 1, "alphaBits"), + GLFW_ALPHA_BITS + ); + + lily_assert_int_equal( + get_int(L, 1, "depthBits"), + GLFW_DEPTH_BITS + ); + + lily_assert_int_equal( + get_int(L, 1, "stereoscopic"), + GLFW_STEREO + ); + + lily_assert_int_equal( + get_int(L, 1, "samples"), + GLFW_SAMPLES + ); + + lily_assert_int_equal( + get_int(L, 1, "srgbCapable"), + GLFW_SRGB_CAPABLE + ); + + lily_assert_int_equal( + get_int(L, 1, "doubleBuffer"), + GLFW_DOUBLEBUFFER + ); + + + /* monitor & context hints */ + lily_assert_int_equal( + get_int(L, 1, "refreshRate"), + GLFW_REFRESH_RATE + ); + + lily_assert_int_equal( + get_int(L, 1, "clientApi"), + GLFW_CLIENT_API + ); + + lily_assert_int_equal( + get_int(L, 1, "contextCreationApi"), + GLFW_CONTEXT_CREATION_API + ); + + lily_assert_int_equal( + get_int(L, 1, "contextVersionMajor"), + GLFW_CONTEXT_VERSION_MAJOR + ); + + lily_assert_int_equal( + get_int(L, 1, "contextVersionMinor"), + GLFW_CONTEXT_VERSION_MINOR + ); + + lily_assert_int_equal( + get_int(L, 1, "forwardCompatible"), + GLFW_OPENGL_FORWARD_COMPAT + ); + + lily_assert_int_equal( + get_int(L, 1, "debugContext"), + GLFW_OPENGL_DEBUG_CONTEXT + ); + + lily_assert_int_equal( + get_int(L, 1, "profile"), + GLFW_OPENGL_PROFILE + ); + + lily_assert_int_equal( + get_int(L, 1, "contextRobustness"), + GLFW_CONTEXT_ROBUSTNESS + ); + + lily_assert_int_equal( + get_int(L, 1, "contextReleaseBehavior"), + GLFW_CONTEXT_RELEASE_BEHAVIOR + ); + + lily_assert_int_equal( + get_int(L, 1, "noError"), + GLFW_CONTEXT_NO_ERROR + ); + lua_close(L); } |