This commit is contained in:
@@ -0,0 +1,62 @@
|
||||
/* SPDX-License-Identifier: GPL-3.0-or-later */
|
||||
#include <chimera/gfx/adapters/retroarch.h>
|
||||
#include <chimera/gfx/adapters/sdl2.h>
|
||||
|
||||
#include <stdio.h>
|
||||
|
||||
static int failures;
|
||||
|
||||
#define CHECK(expression) \
|
||||
do { \
|
||||
if (!(expression)) { \
|
||||
(void)fprintf(stderr, "%s:%d: check failed: %s\n", __FILE__, \
|
||||
__LINE__, #expression); \
|
||||
failures += 1; \
|
||||
} \
|
||||
} while (0)
|
||||
|
||||
int main(void) {
|
||||
chimera_gfx_config config = CHIMERA_GFX_CONFIG_INIT;
|
||||
chimera_gfx_context *context = NULL;
|
||||
chimera_gfx_retroarch_adapter_info retroarch =
|
||||
CHIMERA_GFX_RETROARCH_ADAPTER_INFO_INIT;
|
||||
chimera_gfx_sdl2_adapter_info sdl2 = CHIMERA_GFX_SDL2_ADAPTER_INFO_INIT;
|
||||
|
||||
CHECK(chimera_gfx_retroarch_query_scaffold(NULL) ==
|
||||
CHIMERA_GFX_STATUS_INVALID_ARGUMENT);
|
||||
retroarch.struct_size = sizeof(retroarch) - 1u;
|
||||
CHECK(chimera_gfx_retroarch_query_scaffold(&retroarch) ==
|
||||
CHIMERA_GFX_STATUS_INVALID_ARGUMENT);
|
||||
retroarch = (chimera_gfx_retroarch_adapter_info)
|
||||
CHIMERA_GFX_RETROARCH_ADAPTER_INFO_INIT;
|
||||
CHECK(chimera_gfx_retroarch_query_scaffold(&retroarch) ==
|
||||
CHIMERA_GFX_STATUS_OK);
|
||||
CHECK(retroarch.supports_rgui == 1u);
|
||||
CHECK(retroarch.supports_hardware_contexts == 0u);
|
||||
CHECK(retroarch.accepts_software_frames == 0u);
|
||||
CHECK(chimera_gfx_sdl2_query_scaffold(NULL) ==
|
||||
CHIMERA_GFX_STATUS_INVALID_ARGUMENT);
|
||||
sdl2.struct_size = sizeof(sdl2) - 1u;
|
||||
CHECK(chimera_gfx_sdl2_query_scaffold(&sdl2) ==
|
||||
CHIMERA_GFX_STATUS_INVALID_ARGUMENT);
|
||||
sdl2 = (chimera_gfx_sdl2_adapter_info)CHIMERA_GFX_SDL2_ADAPTER_INFO_INIT;
|
||||
CHECK(chimera_gfx_sdl2_query_scaffold(&sdl2) == CHIMERA_GFX_STATUS_OK);
|
||||
CHECK(sdl2.accelerated_renderer_available == 0u);
|
||||
CHECK(sdl2.software_fallback_required == 1u);
|
||||
|
||||
CHECK(chimera_gfx_create(&config, &context) == CHIMERA_GFX_STATUS_OK);
|
||||
CHECK(chimera_gfx_retroarch_bind_scaffold(NULL, 0u) ==
|
||||
CHIMERA_GFX_STATUS_INVALID_ARGUMENT);
|
||||
CHECK(chimera_gfx_retroarch_bind_scaffold(context, 0u) ==
|
||||
CHIMERA_GFX_STATUS_UNSUPPORTED);
|
||||
CHECK(chimera_gfx_retroarch_bind_scaffold(context, 1u) ==
|
||||
CHIMERA_GFX_STATUS_SAFETY_POLICY);
|
||||
CHECK(chimera_gfx_sdl2_create_renderer_scaffold(NULL, 0u) ==
|
||||
CHIMERA_GFX_STATUS_INVALID_ARGUMENT);
|
||||
CHECK(chimera_gfx_sdl2_create_renderer_scaffold(context, 0u) ==
|
||||
CHIMERA_GFX_STATUS_UNSUPPORTED);
|
||||
CHECK(chimera_gfx_sdl2_create_renderer_scaffold(context, 1u) ==
|
||||
CHIMERA_GFX_STATUS_SAFETY_POLICY);
|
||||
CHECK(chimera_gfx_context_destroy(context) == CHIMERA_GFX_STATUS_OK);
|
||||
return failures == 0 ? 0 : 1;
|
||||
}
|
||||
Reference in New Issue
Block a user