@Test public void testDataEnums() { String pkg = "package org.test\n import org.drools.ide.common.client.modeldriven.SuggestionCompletionEngineTest.NestedClass"; SuggestionCompletionLoader loader = new SuggestionCompletionLoader(); List<String> enums = new ArrayList<String>(); enums.add("'Person.age' : [42, 43] \n 'Person.sex' : ['M', 'F']"); enums.add("'Driver.sex' : ['M', 'F']"); SuggestionCompletionEngine engine = loader.getSuggestionEngine( pkg, new ArrayList<JarInputStream>(), new ArrayList<DSLTokenizedMappingFile>(), enums); assertEquals( "String", engine.getFieldType("SuggestionCompletionEngineTest$NestedClass", "name")); assertEquals(3, engine.getDataEnumListsSize()); String[] items = engine.getDataEnumList("Person.age"); assertEquals(2, items.length); assertEquals("42", items[0]); assertEquals("43", items[1]); items = engine.getEnums("Person", null, "age").fixedList; assertEquals(2, items.length); assertEquals("42", items[0]); assertEquals("43", items[1]); assertNull(engine.getEnums("Nothing", null, "age")); assertEquals(null, engine.getEnums("Something", null, "else")); }
@Test public void testDataEnums3() { String pkg = "package org.test\n import org.drools.ide.common.client.modeldriven.SuggestionCompletionEngineTest.NestedClass"; SuggestionCompletionLoader loader = new SuggestionCompletionLoader(); List<String> enums = new ArrayList<String>(); enums.add( "'Fact.f1' : ['a1', 'a2'] \n 'Fact.f2' : ['def1', 'def2', 'def3'] \n 'Fact.f2[f1=a2]' : ['c1', 'c2']"); SuggestionCompletionEngine engine = loader.getSuggestionEngine( pkg, new ArrayList<JarInputStream>(), new ArrayList<DSLTokenizedMappingFile>(), enums); assertEquals( "String", engine.getFieldType("SuggestionCompletionEngineTest$NestedClass", "name")); FactPattern pat = new FactPattern("Fact"); SingleFieldConstraint f1 = new SingleFieldConstraint("f1"); f1.setValue("a1"); pat.addConstraint(f1); pat.addConstraint(new SingleFieldConstraint("f2")); DropDownData data = engine.getEnums(pat.getFactType(), pat.constraintList, "f2"); assertNotNull(data); assertEquals(3, data.fixedList.length); }
@Test public void testStringNonNumeric() { String pkg = "package org.test\n import org.drools.ide.common.client.modeldriven.Alert"; SuggestionCompletionLoader loader = new SuggestionCompletionLoader(); SuggestionCompletionEngine engine = loader.getSuggestionEngine( pkg, new ArrayList<JarInputStream>(), new ArrayList<DSLTokenizedMappingFile>()); assertEquals(SuggestionCompletionEngine.TYPE_STRING, engine.getFieldType("Alert", "message")); }
@Test public void testNestedImports() { String pkg = "package org.test\n import org.drools.ide.common.client.modeldriven.SuggestionCompletionEngineTest.NestedClass"; SuggestionCompletionLoader loader = new SuggestionCompletionLoader(); SuggestionCompletionEngine engine = loader.getSuggestionEngine( pkg, new ArrayList<JarInputStream>(), new ArrayList<DSLTokenizedMappingFile>()); assertEquals( "String", engine.getFieldType("SuggestionCompletionEngineTest$NestedClass", "name")); }
@Test public void testDataEnums2() { String pkg = "package org.test\n import org.drools.ide.common.client.modeldriven.SuggestionCompletionEngineTest.Fact"; SuggestionCompletionLoader loader = new SuggestionCompletionLoader(); List<String> enums = new ArrayList<String>(); enums.add( "'Fact.field1' : ['val1', 'val2'], 'Fact.field2' : ['val3', 'val4'], 'Fact.field2[field1=val1]' : ['f1val1a', 'f1val1b'], 'Fact.field2[field1=val2]' : ['f1val2a', 'f1val2b']"); SuggestionCompletionEngine engine = loader.getSuggestionEngine( pkg, new ArrayList<JarInputStream>(), new ArrayList<DSLTokenizedMappingFile>(), enums); assertEquals("String", engine.getFieldType("SuggestionCompletionEngineTest$Fact", "field1")); assertEquals("String", engine.getFieldType("SuggestionCompletionEngineTest$Fact", "field2")); assertEquals(4, engine.getDataEnumListsSize()); String[] items = engine.getDataEnumList("Fact.field2"); assertEquals(2, items.length); assertEquals("val3", items[0]); assertEquals("val4", items[1]); FactPattern pat = new FactPattern("Fact"); SingleFieldConstraint sfc = new SingleFieldConstraint("field2"); pat.addConstraint(sfc); items = engine.getEnums(pat.getFactType(), pat.constraintList, "field2").fixedList; assertEquals(2, items.length); assertEquals("val3", items[0]); assertEquals("val4", items[1]); items = engine.getDataEnumList("Fact.field1"); assertEquals(2, items.length); assertEquals("val1", items[0]); assertEquals("val2", items[1]); items = engine.getEnums("Fact", null, "field1").fixedList; assertEquals(2, items.length); assertEquals("val1", items[0]); assertEquals("val2", items[1]); }
@Test public void testDataTypes() { String pkg = "package org.test\n import org.drools.DataTypes"; SuggestionCompletionLoader loader = new SuggestionCompletionLoader(); SuggestionCompletionEngine engine = loader.getSuggestionEngine( pkg, new ArrayList<JarInputStream>(), new ArrayList<DSLTokenizedMappingFile>()); assertEquals( SuggestionCompletionEngine.TYPE_STRING, engine.getFieldType("DataTypes", "fieldString")); assertEquals( SuggestionCompletionEngine.TYPE_BOOLEAN, engine.getFieldType("DataTypes", "fieldBooleanObject")); assertEquals( SuggestionCompletionEngine.TYPE_DATE, engine.getFieldType("DataTypes", "fieldDate")); assertEquals( SuggestionCompletionEngine.TYPE_NUMERIC_BIGDECIMAL, engine.getFieldType("DataTypes", "fieldNumeric")); assertEquals( SuggestionCompletionEngine.TYPE_NUMERIC_BIGDECIMAL, engine.getFieldType("DataTypes", "fieldBigDecimal")); assertEquals( SuggestionCompletionEngine.TYPE_NUMERIC_BIGINTEGER, engine.getFieldType("DataTypes", "fieldBigInteger")); assertEquals( SuggestionCompletionEngine.TYPE_NUMERIC_BYTE, engine.getFieldType("DataTypes", "fieldByteObject")); assertEquals( SuggestionCompletionEngine.TYPE_NUMERIC_DOUBLE, engine.getFieldType("DataTypes", "fieldDoubleObject")); assertEquals( SuggestionCompletionEngine.TYPE_NUMERIC_FLOAT, engine.getFieldType("DataTypes", "fieldFloatObject")); assertEquals( SuggestionCompletionEngine.TYPE_NUMERIC_INTEGER, engine.getFieldType("DataTypes", "fieldIntegerObject")); assertEquals( SuggestionCompletionEngine.TYPE_NUMERIC_LONG, engine.getFieldType("DataTypes", "fieldLongObject")); assertEquals( SuggestionCompletionEngine.TYPE_NUMERIC_SHORT, engine.getFieldType("DataTypes", "fieldShortObject")); assertEquals( SuggestionCompletionEngine.TYPE_BOOLEAN, engine.getFieldType("DataTypes", "fieldBooleanPrimitive")); assertEquals( SuggestionCompletionEngine.TYPE_NUMERIC_BYTE, engine.getFieldType("DataTypes", "fieldBytePrimitive")); assertEquals( SuggestionCompletionEngine.TYPE_NUMERIC_DOUBLE, engine.getFieldType("DataTypes", "fieldDoublePrimitive")); assertEquals( SuggestionCompletionEngine.TYPE_NUMERIC_FLOAT, engine.getFieldType("DataTypes", "fieldFloatPrimitive")); assertEquals( SuggestionCompletionEngine.TYPE_NUMERIC_INTEGER, engine.getFieldType("DataTypes", "fieldIntegerPrimitive")); assertEquals( SuggestionCompletionEngine.TYPE_NUMERIC_LONG, engine.getFieldType("DataTypes", "fieldLongPrimitive")); assertEquals( SuggestionCompletionEngine.TYPE_NUMERIC_SHORT, engine.getFieldType("DataTypes", "fieldShortPrimitive")); }
@Test public void testCompletions() { final SuggestionCompletionEngine com = new SuggestionCompletionEngine(); com.setFactTypes(new String[] {"Person", "Vehicle"}); com.setFieldsForTypes( new HashMap<String, ModelField[]>() { { put( "Person", new ModelField[] { new ModelField( "age", Integer.class.getName(), FIELD_CLASS_TYPE.REGULAR_CLASS, SuggestionCompletionEngine.TYPE_NUMERIC_INTEGER), new ModelField( "rank", Integer.class.getName(), FIELD_CLASS_TYPE.REGULAR_CLASS, SuggestionCompletionEngine.TYPE_COMPARABLE), new ModelField( "name", String.class.getName(), FIELD_CLASS_TYPE.REGULAR_CLASS, SuggestionCompletionEngine.TYPE_STRING) }); put( "Vehicle", new ModelField[] { new ModelField( "make", String.class.getName(), FIELD_CLASS_TYPE.REGULAR_CLASS, SuggestionCompletionEngine.TYPE_STRING), new ModelField( "type", String.class.getName(), FIELD_CLASS_TYPE.REGULAR_CLASS, SuggestionCompletionEngine.TYPE_STRING) }); } }); com.setGlobalVariables( new HashMap<String, String>() { { put("bar", "Person"); put("baz", "Vehicle"); } }); String[] c = com.getConditionalElements(); assertEquals("not", c[0]); assertEquals("exists", c[1]); assertEquals("or", c[2]); c = com.getFactTypes(); assertEquals(2, c.length); assertContains("Person", c); assertContains("Vehicle", c); c = com.getFieldCompletions("Person"); assertEquals("age", c[0]); assertEquals("rank", c[1]); assertEquals("name", c[2]); c = com.getFieldCompletions("Vehicle"); assertEquals("type", c[1]); assertEquals("make", c[0]); c = com.getOperatorCompletions("Person", "name"); assertEquals(11, c.length); assertEquals("==", c[0]); assertEquals("!=", c[1]); assertEquals("<", c[2]); assertEquals(">", c[3]); assertEquals("<=", c[4]); assertEquals(">=", c[5]); assertEquals("matches", c[6]); assertEquals("soundslike", c[7]); assertEquals("== null", c[8]); assertEquals("!= null", c[9]); assertEquals("in", c[10]); c = com.getOperatorCompletions("Person", "age"); assertEquals(8, c.length); assertEquals(c[0], "=="); assertEquals(c[1], "!="); assertEquals(c[2], "<"); assertEquals(c[3], ">"); assertEquals(c[4], "<="); assertEquals(c[5], ">="); assertEquals(c[6], "== null"); assertEquals(c[7], "!= null"); c = com.getOperatorCompletions("Person", "rank"); assertEquals(8, c.length); assertEquals(c[0], "=="); assertEquals(c[1], "!="); assertEquals(c[2], "<"); assertEquals(c[3], ">"); assertEquals(c[4], "<="); assertEquals(c[5], ">="); assertEquals(c[6], "== null"); assertEquals(c[7], "!= null"); c = com.getConnectiveOperatorCompletions("Vehicle", "make"); assertEquals(13, c.length); assertEquals("|| ==", c[0]); assertEquals("|| !=", c[1]); assertEquals("&& !=", c[2]); assertEquals("&& >", c[3]); assertEquals("&& <", c[4]); assertEquals("|| >", c[5]); assertEquals("|| <", c[6]); assertEquals("&& >=", c[7]); assertEquals("&& <=", c[8]); assertEquals("|| <=", c[9]); assertEquals("|| >=", c[10]); assertEquals("&& matches", c[11]); assertEquals("|| matches", c[12]); c = com.getGlobalVariables(); assertEquals(2, c.length); assertEquals("baz", c[0]); assertEquals("bar", c[1]); c = com.getFieldCompletionsForGlobalVariable("bar"); assertEquals(3, c.length); assertEquals("age", c[0]); assertEquals("rank", c[1]); assertEquals("name", c[2]); c = com.getFieldCompletionsForGlobalVariable("baz"); assertEquals(2, c.length); assertEquals("make", c[0]); assertEquals("type", c[1]); // check that it has default operators for general objects c = com.getOperatorCompletions("Person", "wankle"); assertEquals(4, c.length); assertEquals("Integer", com.getFieldType("Person", "age")); }