#include "assert.h" #include "test.h" #include "command.h" void test_command_registry_create() { struct commands cmds = command_registry_create(10); ASSERT(cmds.capacity == 10, "Expected capacity to be the specified value"); ASSERT(cmds.ncommands == 0, "Expected number of commands to initially be empty"); command_registry_destroy(&cmds); } int32_t fake_command(struct command_ctx ctx, int argc, const char *argv[]) { return 0; } struct commands single_fake_command(const char *name) { struct commands cmds = command_registry_create(10); struct command cmd = { .fn = fake_command, .name = name, .userdata = NULL, }; register_command(&cmds, cmd); return cmds; } void test_register_command() { struct commands cmds = command_registry_create(1); struct command cmd = { .fn = fake_command, .name = "fake", .userdata = NULL, }; register_command(&cmds, cmd); ASSERT(cmds.ncommands == 1, "Expected number of commands to be 1 after inserting one"); struct command multi[] = { {.fn = fake_command, .name = "fake1", .userdata = NULL}, {.fn = fake_command, .name = "fake2", .userdata = NULL}, }; register_commands(&cmds, multi, 2); ASSERT(cmds.ncommands == 3, "Expected number of commands to be 3 after inserting two more"); ASSERT(cmds.capacity > 1, "Expected capacity to have increased to accommodate new commands"); } void test_lookup_command() { struct commands cmds = single_fake_command("fake"); struct command *cmd = lookup_command(&cmds, "fake"); ASSERT(cmd != NULL, "Expected to be able to look up inserted command by name"); ASSERT_STR_EQ(cmd->name, "fake", "Expected the found function to have the correct name"); struct command *also_cmd = lookup_command_by_hash(&cmds, hash_command_name("fake")); ASSERT(cmd != NULL, "Expected to be able to look up inserted command by hash"); ASSERT_STR_EQ(cmd->name, "fake", "Expected the found function to have the correct name"); } void run_command_tests() { run_test(test_command_registry_create); run_test(test_register_command); run_test(test_lookup_command); }