### Question:
FunctionParser implements PostOrderTreeTraversalAlgo.Visitor { public int getFunctionCount() { return functionFactoryCache.getFunctionCount(); } FunctionParser(CairoConfiguration configuration, FunctionFactoryCache functionFactoryCache); static int getArgType(char c); static int validateSignatureAndGetNameSeparator(String sig); Function createIndexParameter(int variableIndex, ExpressionNode node); Function createNamedParameter(ExpressionNode node); Function parseFunction(
            ExpressionNode node,
            RecordMetadata metadata,
            SqlExecutionContext executionContext
    ); void setSqlCodeGenerator(SqlCodeGenerator sqlCodeGenerator); @Override void visit(ExpressionNode node); boolean isGroupBy(CharSequence token); int getFunctionCount();  }### Answer:
@Test public void testFunctionFactoryNullSignature() { functions.add(new FunctionFactory() { @Override public String getSignature() { return null; } @Override public Function newInstance(ObjList<Function> args, int position, CairoConfiguration configuration) { return new IntConstant(position, 0); } }); FunctionParser parser = createFunctionParser(); Assert.assertEquals(0, parser.getFunctionCount()); }