46 lines
1.4 KiB
C
46 lines
1.4 KiB
C
#include <stdio.h>
|
|
#include <stdlib.h>
|
|
#include <unistd.h>
|
|
#include <signal.h>
|
|
#include <sys/wait.h>
|
|
|
|
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;
|
|
}
|