@Override
  public String getName() {
    return FUNCTION_NAME;
  }
@Test
  public void instantiationTests()
      throws Exception {
    // Success case
    ExpressionContext expression = RequestContextUtils
        .getExpression(String.format("lookup('baseballTeams','teamName','teamID',%s)", STRING_SV_COLUMN));
    TransformFunction transformFunction = TransformFunctionFactory.get(expression, _dataSourceMap);
    Assert.assertTrue(transformFunction instanceof LookupTransformFunction);
    Assert.assertEquals(transformFunction.getName(), LookupTransformFunction.FUNCTION_NAME);

    // Wrong number of arguments
    Assert.assertThrows(BadQueryRequestException.class, () -> {
      TransformFunctionFactory
          .get(RequestContextUtils.getExpression(String.format("lookup('baseballTeams','teamName','teamID')")),
              _dataSourceMap);
    });

    // Wrong number of join keys
    Assert.assertThrows(BadQueryRequestException.class, () -> {
      TransformFunctionFactory.get(RequestContextUtils.getExpression(
          String.format("lookup('baseballTeams','teamName','teamID', %s, 'danglingKey')", STRING_SV_COLUMN)),
          _dataSourceMap);
    });

    // Non literal tableName argument
    Assert.assertThrows(BadQueryRequestException.class, () -> {
      TransformFunctionFactory.get(RequestContextUtils
              .getExpression(String.format("lookup(%s,'teamName','teamID', %s)", STRING_SV_COLUMN,
                  INT_SV_COLUMN)),
          _dataSourceMap);
    });

    // Non literal lookup columnName argument
    Assert.assertThrows(BadQueryRequestException.class, () -> {
      TransformFunctionFactory.get(RequestContextUtils.getExpression(
          String.format("lookup('baseballTeams',%s,'teamID',%s)", STRING_SV_COLUMN, INT_SV_COLUMN)), _dataSourceMap);
    });

    // Non literal lookup columnName argument
    Assert.assertThrows(BadQueryRequestException.class, () -> {
      TransformFunctionFactory.get(RequestContextUtils.getExpression(
          String.format("lookup('baseballTeams','teamName',%s,%s)", STRING_SV_COLUMN, INT_SV_COLUMN)), _dataSourceMap);
    });
  }