From c8bf38e5fb717d40635a2a89b22ed71b0de4266b Mon Sep 17 00:00:00 2001 From: Toni Uhlig Date: Tue, 1 Dec 2020 13:33:34 +0100 Subject: Squashed 'dependencies/uthash/' content from commit 8e67ced git-subtree-dir: dependencies/uthash git-subtree-split: 8e67ced1d1c5bd8141c542a22630e6de78aa6b90 --- tests/test76.c | 54 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 54 insertions(+) create mode 100644 tests/test76.c (limited to 'tests/test76.c') diff --git a/tests/test76.c b/tests/test76.c new file mode 100644 index 000000000..a18685cae --- /dev/null +++ b/tests/test76.c @@ -0,0 +1,54 @@ +#include /* printf */ +#include "utstring.h" + +int main() +{ + UT_string *s,*t; + char V_TestStr[] = "There are two needle\0s in this \0haystack with needle\0s."; + char V_NeedleStr[] = "needle\0s"; + long *V_KMP_Table; + long V_FindPos; + size_t V_StartPos; + size_t V_FindCnt; + + + utstring_new(s); + utstring_new(t); + + utstring_bincpy(s, V_TestStr, sizeof(V_TestStr)-1); + printf("\"%s\" len=%u\n", utstring_body(s), (unsigned)utstring_len(s)); + utstring_bincpy(t, V_NeedleStr, sizeof(V_NeedleStr)-1); + printf("\"%s\" len=%u\n", utstring_body(t), (unsigned)utstring_len(t)); + + V_KMP_Table = (long *)malloc(sizeof(long) * (utstring_len(t) + 1)); + if (V_KMP_Table != NULL) { + _utstring_BuildTable(utstring_body(t), utstring_len(t), V_KMP_Table); + + V_FindCnt = 0; + V_FindPos = 0; + V_StartPos = 0; + do { + V_FindPos = _utstring_find(utstring_body(s) + V_StartPos, + utstring_len(s) - V_StartPos, + utstring_body(t), + utstring_len(t), + V_KMP_Table); + if (V_FindPos >= 0) { + V_FindPos += V_StartPos; + V_FindCnt++; + V_StartPos = V_FindPos + 1; + } + printf("utstring_find()=%ld\n", V_FindPos); + } while (V_FindPos >= 0); + printf("FindCnt=%u\n", (unsigned)V_FindCnt); + + free(V_KMP_Table); + } else { + printf("malloc() failed...\n"); + } + + utstring_free(s); + utstring_free(t); + + return 0; +} -- cgit v1.2.3