PipelineFunctionLower implements PipelineFunction { @Override public PipelineElement apply(final PipelineElement element, final String paramsIncludingParentheses, final ExpressionResolver expressionResolver) { validateOrThrow(paramsIncludingParentheses); return element.map(String::toLowerCase); }  @Override String getName(); @Override LowerFunctionSignature getSignature(); @Override PipelineElement apply(final PipelineElement element, final String paramsIncludingParentheses,
            final ExpressionResolver expressionResolver);  }
@Test public void apply() { assertThat(function.apply(KNOWN_INPUT, "()", expressionResolver)).contains(LOWER_CASE); }
@Test public void throwsOnNonZeroParameters() { assertThatExceptionOfType(PlaceholderFunctionSignatureInvalidException.class) .isThrownBy(() -> function.apply(KNOWN_INPUT, "", expressionResolver)); assertThatExceptionOfType(PlaceholderFunctionSignatureInvalidException.class) .isThrownBy(() -> function.apply(KNOWN_INPUT, "(\"string\")", expressionResolver)); assertThatExceptionOfType(PlaceholderFunctionSignatureInvalidException.class) .isThrownBy(() -> function.apply(KNOWN_INPUT, "(\'string\')", expressionResolver)); assertThatExceptionOfType(PlaceholderFunctionSignatureInvalidException.class) .isThrownBy(() -> function.apply(KNOWN_INPUT, "(thing:id)", expressionResolver)); }