diff options
Diffstat (limited to 'ACE/apps/gperf/tests/test.cpp')
-rw-r--r-- | ACE/apps/gperf/tests/test.cpp | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/ACE/apps/gperf/tests/test.cpp b/ACE/apps/gperf/tests/test.cpp new file mode 100644 index 00000000000..ba78028f00a --- /dev/null +++ b/ACE/apps/gperf/tests/test.cpp @@ -0,0 +1,35 @@ +// $Id$ + +// Tests the generated perfect hash function. + +// The -v option prints diagnostics as to whether a word is in the set +// or not. Without -v the program is useful for timing. + +#include "ace/OS_NS_string.h" +#include "ace/OS_NS_stdio.h" + + + +static const int MAX_LEN = 80; + +// Lookup function. +const char *in_word_set (const char *str, unsigned int len); + +int +ACE_TMAIN (int argc, ACE_TCHAR *argv[]) +{ + int verbose = argc > 1 && ACE_OS::strcmp (argv[1], ACE_TEXT("-v")) == 0 ? 1 : 0; + char buf[MAX_LEN]; + + while (ACE_OS::fgets (buf, sizeof buf, stdin) != 0) + { + size_t len = ACE_OS::strlen (buf) - 1; + buf[len] = '\0'; + if (in_word_set (buf, len) && verbose) + ACE_OS::printf ("in word set %s\n", buf); + else if (verbose) + ACE_OS::printf ("NOT in word set %s\n", buf); + } + + return 0; +} |