aboutsummaryrefslogtreecommitdiff
path: root/tests/functional/streq.c
diff options
context:
space:
mode:
Diffstat (limited to 'tests/functional/streq.c')
-rw-r--r--tests/functional/streq.c36
1 files changed, 36 insertions, 0 deletions
diff --git a/tests/functional/streq.c b/tests/functional/streq.c
new file mode 100644
index 0000000..bbf3763
--- /dev/null
+++ b/tests/functional/streq.c
@@ -0,0 +1,36 @@
+#include <assert.h>
+#include <stdbool.h>
+#include <string.h>
+#include <sqlite3ext.h>
+
+
+
+SQLITE_EXTENSION_INIT1
+static void
+streq(sqlite3_context *const ctx, const int argc, sqlite3_value **const argv) {
+ assert(argc == 2);
+ const char *const str1 = (const char *)sqlite3_value_text(argv[0]);
+ const char *const str2 = (const char *)sqlite3_value_text(argv[1]);
+ const bool equal = strcmp(str1, str2) == 0;
+ const int result = equal ? 1 : 0;
+ sqlite3_result_int(ctx, result);
+}
+
+int
+sqlite3_extension_init(
+ sqlite3 *const db,
+ const char *const *const errmsg,
+ const sqlite3_api_routines *const api
+) {
+ SQLITE_EXTENSION_INIT2(api);
+ return sqlite3_create_function(
+ db,
+ "streq",
+ 2,
+ SQLITE_UTF8,
+ (void *)db,
+ streq,
+ NULL,
+ NULL
+ );
+}