diff options
author | David Robillard <d@drobilla.net> | 2011-09-18 19:28:15 +0000 |
---|---|---|
committer | David Robillard <d@drobilla.net> | 2011-09-18 19:28:15 +0000 |
commit | e1808bb467f88679f3fae2bb220043b7cd6ba124 (patch) | |
tree | c7681efcdf6219407a675dc1523c28c3debcf16f /test | |
parent | 6651d4dbf74dc4591fbaf5250bfd6f7d58ce0363 (diff) | |
download | zix-e1808bb467f88679f3fae2bb220043b7cd6ba124.tar.gz zix-e1808bb467f88679f3fae2bb220043b7cd6ba124.tar.bz2 zix-e1808bb467f88679f3fae2bb220043b7cd6ba124.zip |
Add ZixStrindex.
git-svn-id: http://svn.drobilla.net/zix/trunk@15 df6676b4-ccc9-40e5-b5d6-7c4628a128e3
Diffstat (limited to 'test')
-rw-r--r-- | test/strindex_test.c | 59 |
1 files changed, 59 insertions, 0 deletions
diff --git a/test/strindex_test.c b/test/strindex_test.c new file mode 100644 index 0000000..91273b8 --- /dev/null +++ b/test/strindex_test.c @@ -0,0 +1,59 @@ +/* + Copyright 2011 David Robillard <http://drobilla.net> + + Permission to use, copy, modify, and/or distribute this software for any + purpose with or without fee is hereby granted, provided that the above + copyright notice and this permission notice appear in all copies. + + THIS SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. +*/ + +#include <stdarg.h> +#include <stdio.h> +#include <string.h> + +#include "zix/strindex.h" + +static int +test_fail(const char* fmt, ...) +{ + va_list args; + va_start(args, fmt); + fprintf(stderr, "error: "); + vfprintf(stderr, fmt, args); + va_end(args); + return 1; +} + +int +main(int argc, char** argv) +{ + const char* str = "BANANA"; + const size_t str_len = strlen(str); + ZixStrindex* strindex = zix_strindex_new(str); + + for (size_t l = 1; l <= str_len; ++l) { + for (size_t i = 0; i < str_len - l; ++i) { + char* match = NULL; + ZixStatus ret = zix_strindex_find(strindex, str + i, &match); + if (ret) { + return test_fail("No match for substring at %zu length %zu\n", + i, l); + } + + if (strncmp(str + i, match, l)) { + return test_fail("Bad match for substring at %zu length %zu\n", + i, l); + } + } + } + + zix_strindex_free(strindex); + return 0; +} |