private void testGenerateTernaryFunction(String function) throws GenerateConditionException { ConditionGenerator generator = new ConditionGenerator(); for (int i = 0; i < variableParams.size(); i++) { Condition condition = new Condition(function); condition.addParam(variableParams.get(i)); condition.addParam(stringParams.get(i)); condition.addParam(stringParams.get(i)); String expectedScript = buildTernaryConditionScript(function, variableParams.get(i), stringParams.get(i), stringParams.get(i)); assertEquals(expectedScript, generator.generateScript(condition)); } } }
private void onSetValue(Condition value) { if (functionSearchService.getFunction(value.getFunction()) != null) { initParams(value.getFunction(), value.getParams()); view.getVariableSelectorDropDown().setSelectedItem(value.getParams().get(0)); view.getConditionSelectorDropDown().setSelectedItem(value.getFunction()); valid = true; } else { view.getVariableSelectorDropDown().setSelectedItem(value.getParams().get(0)); view.setConditionError(translationService.getValue(FUNCTION_NOT_SUITED_FOR_VARIABLE, value.getFunction())); valid = false; } }
private void applyChange() { String variable = variableSearchSelectionHandler.getSelectedKey(); String type = variableSearchService.getOptionType(variable); String function = functionSearchSelectionHandler.getSelectedKey(); Condition condition = new Condition(); valid = true; if (!isEmpty(function)) { condition.setFunction(function); } else { valid = false; } if (!isEmpty(variable) && !isEmpty(type)) { condition.addParam(variable); } else { valid = false; } for (ConditionParamPresenter param : currentParams) { if (!param.validateParam(type)) { valid = false; } condition.getParams().add(param.getValue()); } Condition oldValue = value; value = condition; notifyChange(oldValue, value); }
@Test public void testConditionEqualsAndHashCode() { TestCaseBuilder.newTestCase() .addTrueCase(new Condition(), new Condition()) .addTrueCase(new Condition(null), new Condition(null)) .addTrueCase(new Condition(null, null), new Condition(null, null)) .addTrueCase(new Condition("function"), new Condition("function")) .addTrueCase(new Condition("function", Arrays.asList("param1", "param2")), new Condition("function", Arrays.asList("param1", "param2"))) .addFalseCase(new Condition("function"), new Condition()) .addFalseCase(new Condition("function"), new Condition("function1")) .addFalseCase(new Condition("function", Arrays.asList("param1", "param2")), new Condition("function")) .addFalseCase(new Condition("function", Arrays.asList("param1", "param2")), new Condition("function", Arrays.asList("param11", "param2"))) .test(); }
@Override public void setValue(Condition value) { super.setValue(value); clear(); if (value != null) { if (value.getParams().size() >= 1) { String type = variableSearchService.getOptionType(value.getParams().get(0)); if (type != null) { functionSearchService.reload(type, () -> onSetValue(value)); } else { view.setVariableError(translationService.getValue(VARIABLE_NOT_FOUND_ERROR, value.getParams().get(0))); } } else { //uncommon case view.setConditionError(translationService.getValue(CONDITION_MAL_FORMED)); } } }
@Test public void testParseConditionResultEqualsAndHashCode() { TestCaseBuilder.newTestCase() .addTrueCase(new ParseConditionResult(null, null), new ParseConditionResult(null, null)) .addTrueCase(new ParseConditionResult(new Condition(null, null)), new ParseConditionResult(new Condition(null, null))) .addTrueCase(new ParseConditionResult(new Condition("function", Arrays.asList("param1"))), new ParseConditionResult(new Condition("function", Arrays.asList("param1")))) .addTrueCase(new ParseConditionResult(new Condition("function", Arrays.asList("param1")), "error"), new ParseConditionResult(new Condition("function", Arrays.asList("param1")), "error")) .addFalseCase(new ParseConditionResult(new Condition(null, null), "error"), new ParseConditionResult(new Condition(null, null), null)) .addFalseCase(new ParseConditionResult(new Condition("function", Arrays.asList("param1"))), new ParseConditionResult(new Condition("function", null))) .addFalseCase(new ParseConditionResult(new Condition("function", Arrays.asList("param1")), "error"), new ParseConditionResult(new Condition("function1", Arrays.asList("param1")), "error")) .addFalseCase(new ParseConditionResult(new Condition("function", Arrays.asList("param1")), "error"), new ParseConditionResult(new Condition("function", Arrays.asList("param2")), "error")) .addFalseCase(new ParseConditionResult(new Condition("function", Arrays.asList("param1")), "error"), new ParseConditionResult(new Condition("function", Arrays.asList("param1")), "error1")) .test(); }
private void testGenerateBinaryFunction(String function) throws GenerateConditionException { ConditionGenerator generator = new ConditionGenerator(); for (int i = 0; i < variableParams.size(); i++) { Condition condition = new Condition(function); condition.addParam(variableParams.get(i)); condition.addParam(stringParams.get(i)); String expectedScript = buildBinaryConditionScript(function, variableParams.get(i), stringParams.get(i)); assertEquals(expectedScript, generator.generateScript(condition)); } }
if (!isValidFunction(condition.getFunction())) { throw new GenerateConditionException(MessageFormat.format(FUNCTION_NOT_FOUND_ERROR, condition.getFunction())); final String function = condition.getFunction().trim(); final StringBuilder script = new StringBuilder(); script.append("return "); script.append("("); boolean first = true; for (String param : condition.getParams()) { if (param == null || param.isEmpty()) { throw new GenerateConditionException(PARAMETER_NULL_EMPTY);
@Test public void testWhiteSpaces() throws Exception { Condition expectedCondition = new Condition("between", Arrays.asList("someVariable", "value1", "value2")); char[] whiteSpaceChars = {'\n', '\t', ' ', '\r'}; String conditionTemplate = "%sreturn%sKieFunctions.between(%ssomeVariable%s,%s\"value1\"%s,%s\"value2\"%s)%s;"; String condition; for (char whiteSpace : whiteSpaceChars) { condition = String.format(conditionTemplate, whiteSpace, whiteSpace, whiteSpace, whiteSpace, whiteSpace, whiteSpace, whiteSpace, whiteSpace, whiteSpace); assertEquals(expectedCondition, new ConditionParser(condition).parse()); } conditionTemplate = "%sreturn%sKieFunctions.between(%ssomeVariable%s.%ssomeMethod%s(%s)%s,%s\"value1\"%s,%s\"value2\"%s)%s;"; for (char whiteSpace : whiteSpaceChars) { condition = String.format(conditionTemplate, whiteSpace, whiteSpace, whiteSpace, whiteSpace, whiteSpace, whiteSpace, whiteSpace, whiteSpace, whiteSpace, whiteSpace, whiteSpace, whiteSpace, whiteSpace); expectedCondition = new Condition("between", Arrays.asList("someVariable.someMethod()", "value1", "value2")); assertEquals(expectedCondition, new ConditionParser(condition).parse()); } }
@Test public void testParamIsNullError() throws Exception { ConditionGenerator generator = new ConditionGenerator(); Condition condition = new Condition("startsWith"); condition.addParam("variable"); condition.addParam(null); expectedException.expectMessage("Parameter can not be null nor empty"); generator.generateScript(condition); }
private void testTernaryFunctionParsingSuccessful(String function) throws Exception { List<String> conditions = buildTernaryConditionScripts(function); for (int i = 0; i < conditions.size(); i++) { ConditionParser parser = new ConditionParser(conditions.get(i)); Condition condition = parser.parse(); assertEquals(function, condition.getFunction()); assertEquals(3, condition.getParams().size()); assertEquals(variableParams.get(i), condition.getParams().get(0)); assertEquals(stringParams.get(i), condition.getParams().get(1)); assertEquals(stringParams.get(i), condition.getParams().get(2)); } }
@Test public void testFunctionNotFoundError() throws Exception { ConditionGenerator generator = new ConditionGenerator(); Condition condition = new Condition("SomeNonExistingFunction"); expectedException.expectMessage("Function SomeNonExistingFunction was not found in current functions definitions"); generator.generateScript(condition); }
private void testGenerateConditionSuccessful(String function) { for (int i = 0; i < variableParams.size(); i++) { Condition condition = new Condition(function); condition.addParam(variableParams.get(i)); condition.addParam(stringParams.get(i)); GenerateConditionResult result = service.generateCondition(condition); assertFalse(result.hasError()); String expectedScript = buildBinaryConditionScript(function, variableParams.get(i), stringParams.get(i)); assertEquals(expectedScript, result.getExpression()); } } }
private void testBinaryFunctionParsingSuccessful(String function) throws Exception { List<String> conditions = buildBinaryConditionScripts(function); for (int i = 0; i < conditions.size(); i++) { ConditionParser parser = new ConditionParser(conditions.get(i)); Condition condition = parser.parse(); assertEquals(function, condition.getFunction()); assertEquals(2, condition.getParams().size()); assertEquals(variableParams.get(i), condition.getParams().get(0)); assertEquals(stringParams.get(i), condition.getParams().get(1)); } }
private Condition parse(FunctionDef functionDef) throws ParseException { parseReturnSentence(); functionName = parseFunctionName(); functionName = functionName.substring(KIE_FUNCTIONS.length()); parseFunctionOpen(); Condition condition = new Condition(functionName); String param; String[] variableParam; boolean first = true; for (ParamDef ignored : functionDef.getParams()) { if (first) { variableParam = parseVariableParam(); param = variableParam[0] + (variableParam[1] != null ? ("." + variableParam[1]) : ""); first = false; } else { parseParamDelimiter(); param = parseStringParameter(); } condition.addParam(param); } //all parameters were consumed parseFunctionClose(); parseSentenceClose(); return condition; }
private void testUnaryFunctionParsingSuccessful(String function) throws Exception { List<String> conditions = buildUnaryConditionScripts(function); for (int i = 0; i < conditions.size(); i++) { ConditionParser parser = new ConditionParser(conditions.get(i)); Condition condition = parser.parse(); assertEquals(function, condition.getFunction()); assertEquals(1, condition.getParams().size()); assertEquals(variableParams.get(i), condition.getParams().get(0)); } }
private void testGenerateUnaryCondition(String function) throws GenerateConditionException { ConditionGenerator generator = new ConditionGenerator(); for (String param : variableParams) { Condition condition = new Condition(function); condition.addParam(param); String expectedScript = buildUnaryConditionScript(function, param); assertEquals(expectedScript, generator.generateScript(condition)); } }
private void testParseConditionSuccessful(String function) { List<String> conditions = buildBinaryConditionScripts(function); for (int i = 0; i < conditions.size(); i++) { ParseConditionResult result = service.parseCondition(conditions.get(i)); assertFalse(result.hasError()); assertEquals(function, result.getCondition().getFunction()); assertEquals(2, result.getCondition().getParams().size()); assertEquals(variableParams.get(i), result.getCondition().getParams().get(0)); assertEquals(stringParams.get(i), result.getCondition().getParams().get(1)); } }
@Test public void testGenerateConditionUnSuccessful() { GenerateConditionResult result = service.generateCondition(null); assertTrue(result.hasError()); assertEquals("A condition must be provided", result.getError()); Condition condition = new Condition("SomeNonExistingFunction"); result = service.generateCondition(condition); assertTrue(result.hasError()); assertEquals("Function SomeNonExistingFunction was not found in current functions definitions", result.getError()); condition = new Condition("startsWith"); condition.addParam("variable"); condition.addParam(null); result = service.generateCondition(condition); assertTrue(result.hasError()); assertEquals("Parameter can not be null nor empty", result.getError()); }