abstract
boolean
break
byte
case
catch
char
class
const
continue
default
do
double
else
extends
false
final
finally
float
for
function
goto
if
implements
import
in
instanceof
int
interface
long
native
new
null
package
private
protected
public
return
short
static
super
switch
synchronized
this
throw
throws
transient
true
try
var
void
while
with
%%
#include <stdlib.h>
#include <string.h>
static const char* testdata[] = {
  "bogus",
  "abstract",
  "boolean",
  "break",
  "byte",
  "case",
  "catch",
  "char",
  "class",
  "const",
  "continue",
  "default",
  "do",
  "double",
  "else",
  "extends",
  "false",
  "final",
  "finally",
  "float",
  "for",
  "function",
  "goto",
  "if",
  "implements",
  "import",
  "in",
  "instanceof",
  "int",
  "interface",
  "long",
  "native",
  "new",
  "null",
  "package",
  "private",
  "protected",
  "public",
  "return",
  "short",
  "static",
  "super",
  "switch",
  "synchronized",
  "this",
  "throw",
  "throws",
  "transient",
  "true",
  "try",
  "var",
  "void",
  "while",
  "with"
};
int main ()
{
  int i;
  for (i = 0; i < sizeof(testdata)/sizeof(testdata[0]); i++)
    {
#ifdef CPLUSPLUS_TEST
      const char * resword = Perfect_Hash::in_word_set(testdata[i],strlen(testdata[i]));
#else
      const char * resword = in_word_set(testdata[i],strlen(testdata[i]));
#endif
      if (i > 0)
        {
          if (!resword)
            exit (1);
          if (strcmp(testdata[i],resword))
            exit (1);
        }
      else
        {
          if (resword)
            exit (1);
        }
    }
  return 0;
}
