Files
linuxcncWebWASM/wasm-core/tests/sim_hal_test.c

30 lines
1.3 KiB
C

#include "sim_hal.h"
#include <assert.h>
int main(void) {
sim_hal_value bit = {SIM_HAL_BIT, {.bit = 1}};
sim_hal_value wrong = {SIM_HAL_S32, {.s32 = 1}};
sim_hal_value out = {0};
sim_hal_reset();
assert(sim_hal_register_pin("source", SIM_HAL_BIT) == SIM_HAL_OK);
assert(sim_hal_register_pin("target", SIM_HAL_BIT) == SIM_HAL_OK);
assert(sim_hal_register_pin("source", SIM_HAL_BIT) == SIM_HAL_ERR_DUPLICATE);
assert(sim_hal_set_pin("source", bit) == SIM_HAL_OK);
assert(sim_hal_set_pin("source", wrong) == SIM_HAL_ERR_TYPE);
assert(sim_hal_connect("source", "target") == SIM_HAL_OK);
assert(sim_hal_get_pin("target", &out) == SIM_HAL_OK && out.value.bit == 1);
assert(sim_hal_register_thread("servo", 2) == SIM_HAL_OK);
assert(sim_hal_register_thread("servo", 2) == SIM_HAL_ERR_DUPLICATE);
assert(sim_hal_register_function("servo", "update") == SIM_HAL_OK);
assert(sim_hal_register_function("missing", "bad") == SIM_HAL_ERR_NOT_FOUND);
assert(sim_hal_step(5) == SIM_HAL_OK);
assert(sim_hal_tick() == 5 && sim_hal_function_calls("update") == 2);
assert(sim_hal_set_function_failure("update", 1) == SIM_HAL_OK);
assert(sim_hal_step(1) == SIM_HAL_ERR_FUNCTION);
assert(sim_hal_tick() == 5);
assert(sim_hal_register_thread("invalid", 0) == SIM_HAL_ERR_RANGE);
return 0;
}