#include #include #include #include #include int main(void) { /* Integration test for the looper binary */ printf("Integration test placeholder\n"); // We need to: // 1. Start the looper binary (./looper) // 2. Connect a MIDI output (e.g., via ALSA) to its 'control' port // 3. Send note-on (0x90, 1, 127) → should set 'record' // 4. Send note-on again → 'looping' // 5. Send note-on again → 'paused' // 6. Send note-on again → 'looping' (toggle) // 7. Verify audio pass-through (open a connection and measure signal) // For now we just check the binary exists and can be launched. if (system("test -x ./looper") != 0) { fprintf(stderr, "FATAL: looper binary not found\n"); return 1; } pid_t pid = fork(); if (pid == 0) { execl("./looper", "looper", NULL); perror("execl"); _exit(1); } sleep(2); // give it time to register ports printf("Looper started (pid %d)\n", (int)pid); // send commands using helper script (requires external program) // For illustration: // system("jack_midi_send -c looper:control -m 'note on 1 100'"); // sleep(1); // system("jack_midi_send -c looper:control -m 'note on 1 100'"); // sleep(1); // etc. kill(pid, SIGTERM); int status; waitpid(pid, &status, 0); printf("Integration test completed (simulated PASS)\n"); return 0; }