feat: add integration test framework and rack/grid command support
This commit is contained in:
committed by
Loic Coenen (aider)
parent
9fda1b2669
commit
e6e0a47749
@@ -26,6 +26,57 @@ static int tests_failed = 0;
|
||||
} \
|
||||
} while(0)
|
||||
|
||||
/* Test from command */
|
||||
static void test_from_store(void)
|
||||
{
|
||||
int ret = handle_client_command("from looper:out_0", NULL);
|
||||
ASSERT_EQ(0, ret, "handle_client_command('from looper:out_0', NULL) returns 0");
|
||||
const char *stored = get_stored_from();
|
||||
ASSERT_STR_EQ("looper:out_0", stored, "get_stored_from() returns 'looper:out_0'");
|
||||
}
|
||||
|
||||
/* Test to command */
|
||||
static void test_to_store(void)
|
||||
{
|
||||
int ret = handle_client_command("to plugin:in", NULL);
|
||||
ASSERT_EQ(0, ret, "handle_client_command('to plugin:in', NULL) returns 0");
|
||||
const char *stored = get_stored_to();
|
||||
ASSERT_STR_EQ("plugin:in", stored, "get_stored_to() returns 'plugin:in'");
|
||||
}
|
||||
|
||||
/* Test connect using stored from/to (should call plugin_connect with those ports, fail because no plugin) */
|
||||
static void test_connect_uses_stored(void)
|
||||
{
|
||||
/* Ensure stored from and to are set */
|
||||
handle_client_command("from looper:out_0", NULL);
|
||||
handle_client_command("to plugin:in", NULL);
|
||||
int id = -1;
|
||||
int ret = handle_client_command("connect", &id);
|
||||
/* Should return -1 because plugin_connect fails (no plugin loaded), but not -1 from missing args */
|
||||
ASSERT_EQ(-1, ret, "handle_client_command('connect', ...) returns -1 when plugin_connect fails (no JACK)");
|
||||
}
|
||||
|
||||
/* Test disconnect using stored from/to */
|
||||
static void test_disconnect_uses_stored(void)
|
||||
{
|
||||
handle_client_command("from looper:out_0", NULL);
|
||||
handle_client_command("to plugin:in", NULL);
|
||||
int id = -1;
|
||||
int ret = handle_client_command("disconnect", &id);
|
||||
/* plugin_disconnect returns 0 even without JACK, so we expect 0 */
|
||||
ASSERT_EQ(0, ret, "handle_client_command('disconnect', ...) returns 0 (safe stub)");
|
||||
}
|
||||
|
||||
/* Test rack/grid commands return 0 */
|
||||
static void test_rack_grid_commands(void)
|
||||
{
|
||||
int id = -1;
|
||||
int ret = handle_client_command("rack", &id);
|
||||
ASSERT_EQ(0, ret, "handle_client_command('rack', ...) returns 0");
|
||||
ret = handle_client_command("grid", &id);
|
||||
ASSERT_EQ(0, ret, "handle_client_command('grid', ...) returns 0");
|
||||
}
|
||||
|
||||
/* Test invalid commands */
|
||||
static void test_unknown_command(void)
|
||||
{
|
||||
@@ -105,6 +156,11 @@ int main(void)
|
||||
test_connect_no_args();
|
||||
test_connect_missing_to();
|
||||
test_connect_invalid_id();
|
||||
test_from_store();
|
||||
test_to_store();
|
||||
test_connect_uses_stored();
|
||||
test_disconnect_uses_stored();
|
||||
test_rack_grid_commands();
|
||||
|
||||
printf("\nResults: %d passed, %d failed\n", tests_passed, tests_failed);
|
||||
return tests_failed > 0 ? 1 : 0;
|
||||
|
||||
35
client/tests/test_integration.c
Normal file
35
client/tests/test_integration.c
Normal file
@@ -0,0 +1,35 @@
|
||||
#define TESTING 1
|
||||
#include "carla_host.h"
|
||||
#include <stdio.h>
|
||||
#include <assert.h>
|
||||
|
||||
int main(void)
|
||||
{
|
||||
printf("=== Integration test (requires JACK server) ===\n");
|
||||
|
||||
/* Fail if no JACK server */
|
||||
if (carla_init_jack() != 0) {
|
||||
fprintf(stderr, "FAIL: cannot initialise Carla/JACK – is the JACK server running?\n");
|
||||
return 1;
|
||||
}
|
||||
|
||||
/* Verify handle is now non‑NULL */
|
||||
CarlaHostHandle h = carla_get_handle();
|
||||
assert(h != NULL);
|
||||
|
||||
/* Test connection tracking without loading a real plugin.
|
||||
carla_test_add_connection adds a fake connection entry. */
|
||||
int ret = carla_test_add_connection(0, "test:out", "looper:in");
|
||||
assert(ret == 0);
|
||||
assert(carla_test_connection_count() == 1);
|
||||
|
||||
/* Disconnect plugin ID 0 – should clear the list */
|
||||
ret = carla_disconnect_plugin(0);
|
||||
assert(ret == 0);
|
||||
assert(carla_test_connection_count() == 0);
|
||||
|
||||
carla_cleanup_jack();
|
||||
|
||||
printf("PASS: all integration tests passed (with JACK server).\n");
|
||||
return 0;
|
||||
}
|
||||
Reference in New Issue
Block a user