67 lines
2.3 KiB
C
67 lines
2.3 KiB
C
#include <stdio.h>
|
|
#include <string.h>
|
|
#include <assert.h>
|
|
#include "engine.h"
|
|
#include <stdatomic.h>
|
|
#include "cli.h"
|
|
|
|
// Minimal test: just ensure parsing doesn't crash
|
|
static void test_cli_parse(void) {
|
|
printf("Test CLI parse... ");
|
|
|
|
// Create a minimal engine (no JACK needed for parsing)
|
|
Engine engine;
|
|
memset(&engine, 0, sizeof(engine));
|
|
engine.sample_rate = 48000;
|
|
engine.control_channel = 0;
|
|
engine.quantize_mode = QUANTIZE_OFF;
|
|
engine.quantize_threshold = 0;
|
|
engine.queued_triggers = NULL;
|
|
|
|
// Initialize command queue
|
|
command_queue_init(&engine.command_queue);
|
|
|
|
// Initialize atomic state mirrors
|
|
atomic_store(&engine.quantize_mode_atomic, (int)QUANTIZE_OFF);
|
|
atomic_store(&engine.quantize_threshold_atomic, 0);
|
|
engine.transport->rolling = false;
|
|
engine.transport->clock_count = 0;
|
|
engine.transport->beat_position = 0;
|
|
engine.transport->bar_position = 0;
|
|
engine.transport->sample_position = 0;
|
|
for (int i = 0; i < MAX_CLIPS; i++) {
|
|
engine.clips[i].state = CLIP_EMPTY;
|
|
engine.clips[i].buffer = NULL; // not needed for parsing
|
|
engine.clips[i].buffer_size = 0;
|
|
engine.clips[i].write_position = 0;
|
|
engine.clips[i].read_position = 0;
|
|
}
|
|
|
|
// Test valid commands
|
|
assert(cli_process_line(&engine, "help") == 1);
|
|
assert(cli_process_line(&engine, "trigger clip 0") == 1);
|
|
assert(cli_process_line(&engine, "trigger scene 1") == 1);
|
|
assert(cli_process_line(&engine, "reset clip 2") == 1);
|
|
assert(cli_process_line(&engine, "reset transport") == 1);
|
|
assert(cli_process_line(&engine, "quantize beat") == 1);
|
|
assert(cli_process_line(&engine, "threshold 1000") == 1);
|
|
assert(cli_process_line(&engine, "quit") == 0);
|
|
|
|
// Test invalid commands (should not crash)
|
|
assert(cli_process_line(&engine, "") == 1);
|
|
assert(cli_process_line(&engine, "unknown") == 1);
|
|
assert(cli_process_line(&engine, "trigger") == 1);
|
|
assert(cli_process_line(&engine, "reset") == 1);
|
|
assert(cli_process_line(&engine, "quantize") == 1);
|
|
assert(cli_process_line(&engine, "threshold") == 1);
|
|
|
|
printf("PASSED\n");
|
|
}
|
|
|
|
int main(void) {
|
|
printf("Running CLI tests...\n\n");
|
|
test_cli_parse();
|
|
printf("\nAll CLI tests passed!\n");
|
|
return 0;
|
|
}
|