/** * Copyright (c) 2026 Dominic Masters * * This software is released under the MIT License. * https://opensource.org/licenses/MIT */ #include "dusktest.h" #include "script/script.h" #include "console/console.h" static void test_scriptRunsAndPrintsToConsole(void **state) { scripterror_t error; scriptresult_t result; consoleInit(); assert_int_equal(errorIsOk(scriptInit()), true); result = scriptRuntimeRunFile(SCRIPT.runtime, DUSKSCRIPT_TEST_FIXTURE, true, &error); assert_int_equal(result, SCRIPT_OK); // print() reaches the console through scriptPrintHandler. assert_string_equal(CONSOLE.line[CONSOLE_HISTORY_MAX - 2], "print hello"); // consolePrint(text), the native, writes directly. assert_string_equal(CONSOLE.line[CONSOLE_HISTORY_MAX - 1], "consolePrint hello"); assert_int_equal(errorIsOk(scriptDispose()), true); consoleDispose(); } static void test_scriptNumbersAreAllFloats(void **state) { scripterror_t error; scriptresult_t result; // In the order fixture_numbers.ds prints them. const char_t *expected[] = { "5", "3.75", "2.5", "false", "10", "20", "1", "16", "3", "3.5" }; const int32_t count = (int32_t)(sizeof(expected) / sizeof(expected[0])); int32_t i; consoleInit(); assert_int_equal(errorIsOk(scriptInit()), true); result = scriptRuntimeRunFile(SCRIPT.runtime, DUSKSCRIPT_TEST_NUMBERS, true, &error); assert_int_equal(result, SCRIPT_OK); for(i = 0; i < count; i++) { assert_string_equal(CONSOLE.line[CONSOLE_HISTORY_MAX - count + i], expected[i]); } assert_int_equal(errorIsOk(scriptDispose()), true); consoleDispose(); } int main(void) { const struct CMUnitTest tests[] = { cmocka_unit_test(test_scriptRunsAndPrintsToConsole), cmocka_unit_test(test_scriptNumbersAreAllFloats), }; return cmocka_run_group_tests(tests, NULL, NULL); }