feat: add CLI interface with command parsing and tests
Co-authored-by: aider (deepseek/deepseek-coder) <aider@aider.chat>
This commit is contained in:
58
test_cli.c
58
test_cli.c
@@ -0,0 +1,58 @@
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
#include <assert.h>
|
||||
#include "engine.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;
|
||||
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;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user