From d6113123b8666c32d4b718f089806a968aabe2d2 Mon Sep 17 00:00:00 2001
From: 3gg <3gg@shellblade.net>
Date: Mon, 30 Sep 2024 18:37:16 -0700
Subject: Add plugin test.

---
 plugin/test/hello_plugin.c |  3 +++
 plugin/test/plugin_test.c  | 31 +++++++++++++++++++++++++++++++
 2 files changed, 34 insertions(+)
 create mode 100644 plugin/test/hello_plugin.c
 create mode 100644 plugin/test/plugin_test.c

(limited to 'plugin/test')

diff --git a/plugin/test/hello_plugin.c b/plugin/test/hello_plugin.c
new file mode 100644
index 0000000..1ab290f
--- /dev/null
+++ b/plugin/test/hello_plugin.c
@@ -0,0 +1,3 @@
+#include <stdio.h>
+
+void SayHello() { printf("Hello!\n"); }
diff --git a/plugin/test/plugin_test.c b/plugin/test/plugin_test.c
new file mode 100644
index 0000000..d31bab6
--- /dev/null
+++ b/plugin/test/plugin_test.c
@@ -0,0 +1,31 @@
+#include "plugin.h"
+
+#include "test.h"
+
+#include <stdio.h>
+
+typedef void (*SayHelloFunc)(void);
+
+TEST_CASE(test_hello_plugin) {
+  PluginEngine* eng =
+      new_plugin_engine(&(PluginEngineDesc){.plugins_dir = "."});
+  TEST_TRUE(eng != 0);
+
+  Plugin* plugin = load_plugin(eng, "hello_plugin");
+  TEST_TRUE(plugin != 0);
+
+  plugin_call(plugin, SayHelloFunc, "SayHello");
+
+  printf("Now modify the plugin, build it, and press enter");
+  fflush(stdout);
+  getchar();
+
+  plugin_engine_update(eng);
+
+  plugin_call(plugin, SayHelloFunc, "SayHello");
+
+  delete_plugin_engine(&eng);
+  TEST_TRUE(eng == 0);
+}
+
+int main() { return 0; }
-- 
cgit v1.2.3