/** * Copyright (c) 2026 Dominic Masters * * This software is released under the MIT License. * https://opensource.org/licenses/MIT */ #include "dusktest.h" #include "script/scriptmanager.h" #include "save/save.h" #include "save/savesettings.h" #include "input/input.h" static int save_setup(void **state) { // Writes under ./saves relative to this test binary's own working // directory (SAVE_LINUX_PATH's default) -- a build artifact, not real // user save data. errorret_t ret = saveInit(); if(errorIsNotOk(ret)) { errorCatch(ret); return -1; } ret = scriptManagerInit(); if(errorIsNotOk(ret)) { errorCatch(ret); return -1; } return 0; } static int save_teardown(void **state) { errorret_t ret = scriptManagerDispose(); if(errorIsNotOk(ret)) errorCatch(ret); ret = saveDispose(); if(errorIsNotOk(ret)) errorCatch(ret); return 0; } static void test_save_write_persists_settings(void **state) { INPUT.deadzone = 0.42f; jerry_value_t result; errorret_t ret = scriptManagerExec("Save.write();", &result); assert_true(errorIsOk(ret)); jerry_value_free(result); INPUT.deadzone = 0.0f; ret = saveSettingsLoad(); assert_true(errorIsOk(ret)); assert_float_equal(INPUT.deadzone, 0.42f, 0.0001f); } int main(void) { assertInit(); const struct CMUnitTest tests[] = { cmocka_unit_test_setup_teardown( test_save_write_persists_settings, save_setup, save_teardown ), }; return cmocka_run_group_tests(tests, NULL, NULL); }