final SymbolTable st = new SymbolTable();
// fake functions for this unit test
st.setFunction("day_of_query", new SizzleFunction(new SizzleInt(), new SizzleType[] {}, "Nonexistant.day_of_query()"));
st.setFunction("month_of_query", new SizzleFunction(new SizzleInt(), new SizzleType[] {}, "Nonexistant.month_of_query()"));
st.setFunction("words_from_query", new SizzleFunction(new SizzleArray(new SizzleString()), new SizzleType[] {}, "Nonexistant.words_from_query()"));
SizzleParser.ReInit(new StringReader(source));
TestTypeCheckingVisitor.typeChecker.visit(SizzleParser.Start(), st);
Assert.assertEquals("out is not an unweighted table of ints indexed by various",
new SizzleTable(new SizzleInt(), Arrays.asList(new SizzleString(), new SizzleInt(), new SizzleInt()), null), st.get("out"));
Assert.assertEquals("keywords is not an array of strings", new SizzleArray(new SizzleString()), st.get("keywords"));
Assert.assertEquals("querywords is not an array of strings", new SizzleArray(new SizzleString()), st.get("querywords"));
Assert.assertEquals("month is not an int", new SizzleInt(), st.get("month"));
Assert.assertEquals("day is not an int", new SizzleInt(), st.get("day"));
}