/* SPDX-License-Identifier: GPL-3.0-or-later */ #include #include #include 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; }