@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(); }
@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 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 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)); } }
@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()); } }
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 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; }
@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 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 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 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); }
@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()); }