diff options
Diffstat (limited to 'test')
| -rw-r--r-- | test/command.c | 79 | ||||
| -rw-r--r-- | test/main.c | 3 | ||||
| -rw-r--r-- | test/test.h | 1 |
3 files changed, 83 insertions, 0 deletions
diff --git a/test/command.c b/test/command.c new file mode 100644 index 0000000..738f5f9 --- /dev/null +++ b/test/command.c @@ -0,0 +1,79 @@ +#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); +} diff --git a/test/main.c b/test/main.c index f124f0c..8102a58 100644 --- a/test/main.c +++ b/test/main.c @@ -19,6 +19,9 @@ int main() { printf("\nš“ļø \x1b[1;36mRunning buffer tests...\x1b[0m\n"); run_buffer_tests(); + printf("\nš \x1b[1;36mRunning command tests...\x1b[0m\n"); + run_command_tests(); + printf("\nš \x1b[1;32mDone! All tests successful!\x1b[0m\n"); return 0; } diff --git a/test/test.h b/test/test.h index ae6f22d..3fdcd0d 100644 --- a/test/test.h +++ b/test/test.h @@ -9,3 +9,4 @@ void run_buffer_tests(); void run_utf8_tests(); void run_text_tests(); +void run_command_tests(); |
