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

64 lines
3.6 KiB
C

#include "sim_task.h"
#include <assert.h>
#include <stdio.h>
#include <string.h>
int main(void) {
sim_task task = {0};
sim_task baseline = {0};
sim_task_state state = {0};
char canonical[SIM_TASK_CANONICAL_CAPACITY] = {0};
uint32_t required;
uint64_t hash;
assert(sim_task_init(&task, "linuxcnc-2.10.0-pre0-wasm-m1-py-c1", "native-task") == SIM_TASK_OK);
assert(sim_task_set_command(&task, 1, 0) == SIM_TASK_OK);
assert(sim_task_attach(&task) == SIM_TASK_OK);
assert(sim_task_set_command(&task, 3, 0) == SIM_TASK_ERR_SEQUENCE);
assert(sim_task_set_command(&task, 2, 0) == SIM_TASK_OK);
assert(sim_task_set_program(&task, SIM_TASK_PROGRAM_LOADED, 0) == SIM_TASK_OK);
assert(sim_task_transition(&task, SIM_TASK_RUNNING) == SIM_TASK_OK);
assert(sim_task_set_program(&task, SIM_TASK_PROGRAM_RUNNING, 1) == SIM_TASK_OK);
assert(sim_task_set_command(&task, 3, 4) == SIM_TASK_OK);
assert(sim_task_transition(&task, SIM_TASK_PAUSED) == SIM_TASK_OK);
assert(sim_task_set_command(&task, 4, 3) == SIM_TASK_ERR_TICK);
assert(sim_task_set_command(&task, 4, 5) == SIM_TASK_OK);
assert(sim_task_transition(&task, SIM_TASK_RUNNING) == SIM_TASK_OK);
assert(sim_task_fault(&task, -77) == SIM_TASK_OK);
assert(sim_task_recover(&task) == SIM_TASK_OK);
assert(sim_task_read_state(&task, &state) == SIM_TASK_OK && state.state == SIM_TASK_READY);
required = sim_task_canonical(&task, NULL, 0);
assert(required > 1 && required < SIM_TASK_CANONICAL_CAPACITY);
assert(sim_task_canonical(&task, canonical, sizeof(canonical)) == required);
assert(strstr(canonical, "\"schema\":\"sim_task.v1\"") != NULL);
hash = sim_task_state_hash(&task);
assert(hash != 0 && hash == sim_task_state_hash(&task));
assert(sim_task_canonical(&task, canonical, required - 1) == required);
assert(sim_task_init(&task, "bad\"context", "session") == SIM_TASK_ERR_ARGUMENT);
assert(sim_task_init(&task, "context", "session") == SIM_TASK_OK);
assert(sim_task_transition(&task, SIM_TASK_PAUSED) == SIM_TASK_ERR_TRANSITION);
assert(sim_task_set_mode(&task, 99) == SIM_TASK_ERR_ARGUMENT);
assert(sim_task_set_program(&task, 99, 0) == SIM_TASK_ERR_ARGUMENT);
assert(sim_task_set_command(&task, 1, 0) == SIM_TASK_OK);
assert(sim_task_attach(&task) == SIM_TASK_OK);
assert(sim_task_transition(&task, SIM_TASK_DESTROYED) == SIM_TASK_OK);
assert(sim_task_set_command(&task, 2, 0) == SIM_TASK_ERR_DESTROYED);
assert(sim_task_init(&baseline, "linuxcnc-2.10.0-pre0-wasm-m1-py-c1", "task-a") == SIM_TASK_OK);
assert(sim_task_set_command(&baseline, 1, 0) == SIM_TASK_OK);
assert(sim_task_attach(&baseline) == SIM_TASK_OK);
assert(sim_task_set_command(&baseline, 2, 0) == SIM_TASK_OK);
assert(sim_task_set_command(&baseline, 3, 0) == SIM_TASK_OK);
assert(sim_task_set_command(&baseline, 4, 0) == SIM_TASK_OK);
assert(sim_task_set_program(&baseline, SIM_TASK_PROGRAM_LOADED, 0) == SIM_TASK_OK);
assert(sim_task_set_command(&baseline, 5, 0) == SIM_TASK_OK);
assert(sim_task_transition(&baseline, SIM_TASK_RUNNING) == SIM_TASK_OK);
assert(sim_task_set_mode(&baseline, SIM_TASK_MODE_AUTO) == SIM_TASK_OK);
assert(sim_task_set_program(&baseline, SIM_TASK_PROGRAM_RUNNING, 1) == SIM_TASK_OK);
assert(sim_task_set_command(&baseline, 6, 1) == SIM_TASK_OK);
printf("{\"schema\":\"sim-task-samples.v1\",\"state\":\"READY\",\"seq\":%u,\"tick\":%u,\"state_hash\":\"fnv1a64:%016llx\",\"baseline_hash\":\"fnv1a64:%016llx\",\"canonical\":%s}\n",
state.seq, state.simulation_tick, (unsigned long long)hash,
(unsigned long long)sim_task_state_hash(&baseline), canonical);
return 0;
}