/* * Copyright 2016 Red Hat, Inc. and/or its affiliates. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.kie.workbench.common.stunner.bpmn.client.forms.util; import java.util.Arrays; import java.util.List; import org.junit.Assert; import org.junit.Test; import org.kie.workbench.common.stunner.bpmn.client.forms.fields.assignmentsEditor.ActivityDataIOEditorViewImpl; import org.kie.workbench.common.stunner.bpmn.client.forms.fields.model.AssignmentData; public class ListBoxValuesTest { /** * General test for adding custom values to ProcessVar ListBoxValues */ @Test public void testProcessVarListBoxValues() { List<String> processVarStartValues = Arrays.asList( "** Variable Definitions **", "employee", "reason", "performance" ); ListBoxValues processVarValues = new ListBoxValues("Constant ...", "Edit ", null); processVarValues.addValues(processVarStartValues); processVarValues.addCustomValue("\"abc\"", ""); processVarValues.update("\"abc\""); processVarValues.update("reason"); processVarValues.addCustomValue("\"ghi\"", ""); processVarValues.update("\"ghi\""); processVarValues.addCustomValue("\"def\"", "\"ghi\""); processVarValues.update("\"def\""); processVarValues.update("reason"); // Add Constant with same value as a ProcessVar processVarValues.addCustomValue("\"employee\"", ""); processVarValues.update("\"employee\""); processVarValues.update("performance"); processVarValues.addCustomValue("123", ""); processVarValues.update("123"); processVarValues.update("\"reason\""); processVarValues.addCustomValue("\"jkl\"", "\"reason\""); processVarValues.update("\"jkl\""); String[] acceptableValuesWithoutCustomValues = { "** Variable Definitions **", "employee", "reason", "performance" }; String[] expectedAcceptableValuesWithCustomValues = { "", "\"jkl\"", "Edit \"jkl\" ...", "123", "\"employee\"", "\"def\"", "\"abc\"", "Constant ...", "** Variable Definitions **", "employee", "reason", "performance" }; Assert.assertArrayEquals(acceptableValuesWithoutCustomValues, processVarValues.getAcceptableValuesWithoutCustomValues().toArray()); Assert.assertArrayEquals(expectedAcceptableValuesWithCustomValues, processVarValues.getAcceptableValuesWithCustomValues().toArray()); } /** * General test for adding custom values to DataTypes ListBoxValues */ String sDataTypes1 = "String:String, Integer:Integer, Boolean:Boolean, Float:Float, Object:Object, ******:******,UserCommand [org.jbpm.examples.cmd]:org.jbpm.examples.cmd.UserCommand,User [org.jbpm.examples.data]:org.jbpm.examples.data.User,Invoice [org.kie.test]:org.kie.test.Invoice,InvoiceLine [org.kie.test]:org.kie.test.InvoiceLine,PositionTest1 [org.kie.test]:org.kie.test.PositionTest1,PositionTest2 [org.kie.test]:org.kie.test.PositionTest2,PositionTest3 [org.kie.test]:org.kie.test.PositionTest3,PositionTest5 [org.kie.test]:org.kie.test.PositionTest5,SubComponent [org.kie.test]:org.kie.test.SubComponent,TestFormulas [org.kie.test]:org.kie.test.TestFormulas,TestPatterns [org.kie.test]:org.kie.test.TestPatterns,TestTypes [org.kie.test]:org.kie.test.TestTypes,TestTypesLine [org.kie.test]:org.kie.test.TestTypesLine"; AssignmentData assignmentData1 = new AssignmentData(null, null, null, null, sDataTypes1, null); @Test public void testDataTypeListBoxValues() { ListBoxValues dataTypeValues = new ListBoxValues("Custom ...", "Edit ", new ListBoxValues.ValueTester() { public String getNonCustomValueForUserString(String userValue) { if (assignmentData1 != null) { return assignmentData1.getDataTypeDisplayNameForUserString(userValue); } else { return null; } } }); dataTypeValues.addValues(assignmentData1.getDataTypeDisplayNames()); dataTypeValues.addCustomValue("com.test.MyType", ""); dataTypeValues.update("com.test.MyType"); dataTypeValues.update("String"); dataTypeValues.addCustomValue("com.test.YourType", "String"); dataTypeValues.update("com.test.YourType"); // Get known type for SimpleType entered by user String nonCustomValue = dataTypeValues.getNonCustomValueForUserString("InvoiceLine"); dataTypeValues.update(nonCustomValue); dataTypeValues.addCustomValue("com.test.HisType", ""); dataTypeValues.update("com.test.HisType"); String[] acceptableValuesWithoutCustomValues = { "String", "Integer", "Boolean", "Float", "Object", "UserCommand [org.jbpm.examples.cmd]", "User [org.jbpm.examples.data]", "Invoice [org.kie.test]", "InvoiceLine [org.kie.test]", "PositionTest1 [org.kie.test]", "PositionTest2 [org.kie.test]", "PositionTest3 [org.kie.test]", "PositionTest5 [org.kie.test]", "SubComponent [org.kie.test]", "TestFormulas [org.kie.test]", "TestPatterns [org.kie.test]", "TestTypes [org.kie.test]", "TestTypesLine [org.kie.test]" }; String[] expectedAcceptableValuesWithCustomValues = { "", "com.test.HisType", "Edit com.test.HisType ...", "com.test.YourType", "com.test.MyType", "Custom ...", "Integer", "Boolean", "Float", "Object", "UserCommand [org.jbpm.examples.cmd]", "User [org.jbpm.examples.data]", "Invoice [org.kie.test]", "InvoiceLine [org.kie.test]", "PositionTest1 [org.kie.test]", "PositionTest2 [org.kie.test]", "PositionTest3 [org.kie.test]", "PositionTest5 [org.kie.test]", "SubComponent [org.kie.test]", "TestFormulas [org.kie.test]", "TestPatterns [org.kie.test]", "TestTypes [org.kie.test]", "TestTypesLine [org.kie.test]" }; Assert.assertArrayEquals(acceptableValuesWithoutCustomValues, dataTypeValues.getAcceptableValuesWithoutCustomValues().toArray()); Assert.assertArrayEquals(expectedAcceptableValuesWithCustomValues, dataTypeValues.getAcceptableValuesWithCustomValues().toArray()); } @Test public void testAddDisplayValue() { List<String> processVarStartValues = Arrays.asList( "** Variable Definitions **", "employee", "reason", "performance" ); ListBoxValues processVarValues = new ListBoxValues("Constant ...", "Edit ", null, ActivityDataIOEditorViewImpl.CONSTANT_MAX_DISPLAY_LENGTH); // not double-quoted string - displayValue is the same String value = "sVar1"; String displayValue = processVarValues.addDisplayValue(value); Assert.assertEquals(value, displayValue); // double-quoted string shorter than max - displayValue is the same value = "\"hello\""; displayValue = processVarValues.addDisplayValue(value); Assert.assertEquals(value, displayValue); // value less than MAX and not a quoted string - displayValue is the same value = "sVar"; displayValue = processVarValues.addDisplayValue(value); Assert.assertEquals(value, displayValue); // value less than MAX and a quoted string - displayValue is the same value = "\"abcdeabcde\""; displayValue = processVarValues.addDisplayValue(value); Assert.assertEquals(value, displayValue); // value longer than MAX and not a quoted string - displayValue is the same value = "sLongVar123"; displayValue = processVarValues.addDisplayValue(value); Assert.assertEquals(value, displayValue); // value much longer than MAX and not a quoted string - displayValue is the same value = "sVeryLongVariableName123"; displayValue = processVarValues.addDisplayValue(value); Assert.assertEquals(value, displayValue); // value longer than MAX and a quoted string - displayValue is truncated with "(01)" value = "\"abcdeabcde1\""; displayValue = processVarValues.addDisplayValue(value); Assert.assertEquals("\"abcdeabcde...(01)\"", displayValue); // value longer than MAX and a quoted string - displayValue is 1st truncated value = "\"0123456789x\""; displayValue = processVarValues.addDisplayValue(value); Assert.assertEquals("\"0123456789...\"", displayValue); // value longer than MAX and a quoted string - displayValue is 2nd truncated value = "\"0123456789y\""; displayValue = processVarValues.addDisplayValue(value); Assert.assertEquals("\"0123456789...(01)\"", displayValue); // value longer than MAX and a quoted string - displayValue is 3rd truncated value = "\"0123456789z\""; displayValue = processVarValues.addDisplayValue(value); Assert.assertEquals("\"0123456789...(02)\"", displayValue); // value longer than MAX and a quoted string - displayValue is 1st truncated value = "\"hello then goodbye\""; displayValue = processVarValues.addDisplayValue(value); Assert.assertEquals("\"hello then...\"", displayValue); // value longer than MAX and a quoted string - displayValue is 2nd truncated value = "\"hello then hello\""; displayValue = processVarValues.addDisplayValue(value); Assert.assertEquals("\"hello then...(01)\"", displayValue); // value longer than MAX but not a quoted string - displayValue is the same value = "hello then hello"; displayValue = processVarValues.addDisplayValue(value); Assert.assertEquals(value, displayValue); // Test getValueForDisplayValue for the entries above // not double-quoted string - displayValue is the same displayValue = "sVar1"; value = processVarValues.getValueForDisplayValue(displayValue); Assert.assertEquals(displayValue, value); // double-quoted string shorter than max - displayValue is the same displayValue = "\"hello\""; value = processVarValues.getValueForDisplayValue(displayValue); Assert.assertEquals(displayValue, value); // value less than MAX and not a quoted string - displayValue is the same displayValue = "sVar"; value = processVarValues.getValueForDisplayValue(displayValue); Assert.assertEquals(displayValue, value); // value less than MAX and a quoted string - displayValue is the same displayValue = "\"abcdeabcde\""; value = processVarValues.getValueForDisplayValue(displayValue); Assert.assertEquals(displayValue, value); // value longer than MAX and not a quoted string - displayValue is the same displayValue = "sLongVar123"; value = processVarValues.getValueForDisplayValue(displayValue); Assert.assertEquals(displayValue, value); // value much longer than MAX and not a quoted string - displayValue is the same displayValue = "sVeryLongVariableName123"; value = processVarValues.getValueForDisplayValue(displayValue); Assert.assertEquals(displayValue, value); // value longer than MAX and a quoted string - displayValue is truncated with "(01)" displayValue = "\"abcdeabcde...(01)\""; value = processVarValues.getValueForDisplayValue(displayValue); Assert.assertEquals("\"abcdeabcde1\"", value); // value longer than MAX and a quoted string - displayValue is 1st truncated displayValue = "\"0123456789...\""; value = processVarValues.getValueForDisplayValue(displayValue); Assert.assertEquals("\"0123456789x\"", value); // value longer than MAX and a quoted string - displayValue is 2nd truncated displayValue = "\"0123456789...(01)\""; value = processVarValues.getValueForDisplayValue(displayValue); Assert.assertEquals("\"0123456789y\"", value); // value longer than MAX and a quoted string - displayValue is 3rd truncated displayValue = "\"0123456789...(02)\""; value = processVarValues.getValueForDisplayValue(displayValue); Assert.assertEquals("\"0123456789z\"", value); // value longer than MAX and a quoted string - displayValue is 1st truncated displayValue = "\"hello then...\""; value = processVarValues.getValueForDisplayValue(displayValue); Assert.assertEquals("\"hello then goodbye\"", value); // value longer than MAX and a quoted string - displayValue is 2nd truncated displayValue = "\"hello then...(01)\""; value = processVarValues.getValueForDisplayValue(displayValue); Assert.assertEquals("\"hello then hello\"", value); // value longer than MAX but not a quoted string - displayValue is the same displayValue = "hello then hello"; value = processVarValues.getValueForDisplayValue(displayValue); Assert.assertEquals(displayValue, value); } }