/* See LICENSE file for copyright and license details. */ #include "common.h" int main(void) { LIBAUTOMATA_KMP_AUTOMATON *a1, *a2; const char *r; EXPECT((a1 = libautomata_compile_kmp_automaton(MEM("es"), 1))); EXPECT((a2 = libautomata_clone_kmp_automaton(a1))); r = libautomata_execute_kmp_automaton(a1, MEM("test")); EXPECT(r); EXPECT(!strcmp(r, "t")); r = libautomata_execute_kmp_automaton(a1, MEM("test")); EXPECT(r); EXPECT(!strcmp(r, "t")); libautomata_reset_kmp_automaton(a1); r = libautomata_execute_kmp_automaton(a1, MEM("test")); EXPECT(r); EXPECT(!strcmp(r, "t")); r = libautomata_execute_kmp_automaton(a2, MEM("test")); EXPECT(r); EXPECT(!strcmp(r, "t")); r = libautomata_execute_kmp_automaton(a1, MEM("te")); EXPECT(!r); r = libautomata_execute_kmp_automaton(a1, MEM("sting")); EXPECT(r); EXPECT(!strcmp(r, "ting")); r = libautomata_execute_kmp_automaton(a1, MEM("te")); EXPECT(!r); libautomata_reset_kmp_automaton(a1); r = libautomata_execute_kmp_automaton(a1, MEM("sting")); EXPECT(!r); free(a1); free(a2); EXPECT((a1 = libautomata_compile_kmp_automaton(MEM("nano"), 1))); r = libautomata_execute_kmp_automaton(a1, MEM("searching for a nanostring")); EXPECT(r); EXPECT(!strcmp(r, "string")); free(a1); return 0; }