SubstringBeforeFunction extends BaseFEELFunction { public FEELFnResult<String> invoke(@ParameterName("string") String string, @ParameterName("match") String match) { if ( string == null ) { return FEELFnResult.ofError( new InvalidParametersEvent( Severity.ERROR, "string", "cannot be null" ) ); } if ( match == null ) { return FEELFnResult.ofError( new InvalidParametersEvent( Severity.ERROR, "match", "cannot be null" ) ); } int index = string.indexOf( match ); if ( index > 0 ) { return FEELFnResult.ofResult( string.substring( 0, index ) ); } else { return FEELFnResult.ofResult( "" ); } } SubstringBeforeFunction(); FEELFnResult<String> invoke(@ParameterName("string") String string, @ParameterName("match") String match);  }
@Test public void invokeNull() { FunctionTestUtil.assertResultError(substringBeforeFunction.invoke((String) null, null), InvalidParametersEvent.class); FunctionTestUtil.assertResultError(substringBeforeFunction.invoke(null, "test"), InvalidParametersEvent.class); FunctionTestUtil.assertResultError(substringBeforeFunction.invoke("test", null), InvalidParametersEvent.class); }
@Test public void invokeMatchExists() { FunctionTestUtil.assertResult(substringBeforeFunction.invoke("foobar", "ob"), "fo"); FunctionTestUtil.assertResult(substringBeforeFunction.invoke("foobar", "o"), "f"); }
@Test public void invokeMatchNotExists() { FunctionTestUtil.assertResult(substringBeforeFunction.invoke("foobar", "oook"), ""); }