From 47eafc2497abc6886cd77cd3707eddeafdd244dc Mon Sep 17 00:00:00 2001 From: Adam Dickmeiss Date: Thu, 8 Nov 2007 21:21:16 +0000 Subject: [PATCH] Added test of regexp patterns (DFA) --- dfa/Makefile.am | 7 +++++- dfa/test_dfa.c | 69 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 75 insertions(+), 1 deletion(-) create mode 100644 dfa/test_dfa.c diff --git a/dfa/Makefile.am b/dfa/Makefile.am index c3b1968..ad41169 100644 --- a/dfa/Makefile.am +++ b/dfa/Makefile.am @@ -1,9 +1,14 @@ -## $Id: Makefile.am,v 1.11 2006-07-05 15:03:45 adam Exp $ +## $Id: Makefile.am,v 1.12 2007-11-08 21:21:16 adam Exp $ noinst_LTLIBRARIES = libidzebra-dfa.la noinst_PROGRAMS = agrep lexer grepper +check_PROGRAMS = test_dfa +TESTS = $(check_PROGRAMS) + +test_dfa_SOURCES = test_dfa.c + AM_CPPFLAGS = -I$(srcdir)/../include $(YAZINC) LDADD = libidzebra-dfa.la ../util/libidzebra-util.la $(YAZLALIB) diff --git a/dfa/test_dfa.c b/dfa/test_dfa.c new file mode 100644 index 0000000..4b37b6f --- /dev/null +++ b/dfa/test_dfa.c @@ -0,0 +1,69 @@ +/* $Id: test_dfa.c,v 1.1 2007-11-08 21:21:16 adam Exp $ + Copyright (C) 1995-2007 + Index Data ApS + +This file is part of the Zebra server. + +Zebra is free software; you can redistribute it and/or modify it under +the terms of the GNU General Public License as published by the Free +Software Foundation; either version 2, or (at your option) any later +version. + +Zebra is distributed in the hope that it will be useful, but WITHOUT ANY +WARRANTY; without even the implied warranty of MERCHANTABILITY or +FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +for more details. + +You should have received a copy of the GNU General Public License +along with this program; if not, write to the Free Software +Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + +*/ + +#include +#include + +int test_parse(struct DFA *dfa, const char *pattern) +{ + int i; + const char *cp = pattern; + i = dfa_parse(dfa, &cp); + return i; +} + +static void tst(int argc, char **argv) +{ + struct DFA *dfa = dfa_init(); + YAZ_CHECK(dfa); + + YAZ_CHECK_EQ(test_parse(dfa, ""), 1); + YAZ_CHECK_EQ(test_parse(dfa, "a"), 0); + YAZ_CHECK_EQ(test_parse(dfa, "ab"), 0); + YAZ_CHECK_EQ(test_parse(dfa, "(a)"), 0); + YAZ_CHECK_EQ(test_parse(dfa, "(a"), 1); + YAZ_CHECK_EQ(test_parse(dfa, "a)"), 3); + YAZ_CHECK_EQ(test_parse(dfa, "a\001)"), 0); + YAZ_CHECK_EQ(test_parse(dfa, "a\\x01"), 0); + + + YAZ_CHECK_EQ(test_parse(dfa, "(\x01\x02)(CEO3EQC/\\x01\\x0C\\x01\\x0C)"), 0); + dfa_delete(&dfa); + YAZ_CHECK(!dfa); +} + +int main(int argc, char **argv) +{ + YAZ_CHECK_INIT(argc, argv); + YAZ_CHECK_LOG(); + tst(argc, argv); + YAZ_CHECK_TERM; +} + +/* + * Local variables: + * c-basic-offset: 4 + * indent-tabs-mode: nil + * End: + * vim: shiftwidth=4 tabstop=8 expandtab + */ + -- 1.7.10.4