Files
dusk/test/script/test_moduleconsole.c
T

70 lines
1.7 KiB
C

/**
* Copyright (c) 2026 Dominic Masters
*
* This software is released under the MIT License.
* https://opensource.org/licenses/MIT
*/
#include "dusktest.h"
#include "console/console.h"
#include "script/scriptmanager.h"
#include "util/memory.h"
static int console_setup(void **state) {
consoleInit();
errorret_t ret = scriptManagerInit();
if(errorIsNotOk(ret)) { errorCatch(ret); return -1; }
return 0;
}
static int console_teardown(void **state) {
errorret_t ret = scriptManagerDispose();
if(errorIsNotOk(ret)) errorCatch(ret);
consoleDispose();
return 0;
}
static void test_console_print_joins_stringified_args(void **state) {
jerry_value_t result;
errorret_t ret = scriptManagerExec(
"Console.print('hello', 42, true);", &result
);
assert_true(errorIsOk(ret));
jerry_value_free(result);
assert_string_equal(
CONSOLE.line[CONSOLE_HISTORY_MAX - 1], "hello 42 true"
);
assert_int_equal(memoryGetAllocatedCount(), 0);
}
static void test_console_print_no_args_prints_empty_line(void **state) {
jerry_value_t result;
errorret_t ret = scriptManagerExec("Console.print();", &result);
assert_true(errorIsOk(ret));
jerry_value_free(result);
assert_string_equal(CONSOLE.line[CONSOLE_HISTORY_MAX - 1], "");
assert_int_equal(memoryGetAllocatedCount(), 0);
}
int main(void) {
assertInit();
const struct CMUnitTest tests[] = {
cmocka_unit_test_setup_teardown(
test_console_print_joins_stringified_args,
console_setup, console_teardown
),
cmocka_unit_test_setup_teardown(
test_console_print_no_args_prints_empty_line,
console_setup, console_teardown
),
};
return cmocka_run_group_tests(tests, NULL, NULL);
}