@Test public void testFilter() { final SuggestionCompletionEngine sce = new SuggestionCompletionEngine(); sce.setFactTypes(new String[] {"Person", "Vehicle"}); sce.setFieldsForTypes( new HashMap<String, ModelField[]>() { { put( "Person", new ModelField[] { new ModelField( "age", Integer.class.getName(), FIELD_CLASS_TYPE.REGULAR_CLASS, SuggestionCompletionEngine.TYPE_NUMERIC_INTEGER), }); put( "Vehicle", new ModelField[] { new ModelField( "make", String.class.getName(), FIELD_CLASS_TYPE.REGULAR_CLASS, SuggestionCompletionEngine.TYPE_STRING), }); } }); assertEquals(2, sce.getFactTypes().length); sce.setFactTypeFilter( new FactTypeFilter() { public boolean filter(String originalFact) { return "Person".equals(originalFact); } }); assertEquals(1, sce.getFactTypes().length); sce.setFilteringFacts(false); assertEquals(2, sce.getFactTypes().length); sce.setFilteringFacts(true); assertEquals(1, sce.getFactTypes().length); sce.setFactTypeFilter(null); assertEquals(2, sce.getFactTypes().length); }
@Test public void testAdd() { final SuggestionCompletionEngine com = new SuggestionCompletionEngine(); com.setFactTypes(new String[] {"Foo"}); com.setFieldsForTypes( new HashMap<String, ModelField[]>() { { put( "Foo", new ModelField[] { new ModelField( "a", String.class.getName(), FIELD_CLASS_TYPE.REGULAR_CLASS, "String") }); } }); assertEquals(1, com.getFactTypes().length); assertEquals("Foo", com.getFactTypes()[0]); assertEquals(1, com.getFieldCompletions("Foo").length); assertEquals("a", com.getFieldCompletions("Foo")[0]); }
@Test @SuppressWarnings("serial") public void testCEPCompletions() { final SuggestionCompletionEngine com = new SuggestionCompletionEngine(); com.setFactTypes(new String[] {"NotAnEvent", "AnEvent"}); com.setFieldsForTypes( new HashMap<String, ModelField[]>() { { put( "NotAnEvent", new ModelField[] { new ModelField( "dateField", Date.class.getName(), FIELD_CLASS_TYPE.REGULAR_CLASS, SuggestionCompletionEngine.TYPE_DATE) }); put( "AnEvent", new ModelField[] { new ModelField( "this", Object.class.getName(), FIELD_CLASS_TYPE.REGULAR_CLASS, "AnEvent"), new ModelField( "dateField", Date.class.getName(), FIELD_CLASS_TYPE.REGULAR_CLASS, SuggestionCompletionEngine.TYPE_DATE) }); } }); // Set-up annotation for Type 'AnEvent' Map<String, List<ModelAnnotation>> annotations = new HashMap<String, List<ModelAnnotation>>(); List<ModelAnnotation> eventAnnotations = new ArrayList<ModelAnnotation>(); ModelAnnotation ma = new ModelAnnotation(); ma.setAnnotationName("role"); Map<String, String> mav = new HashMap<String, String>(); mav.put("value", "event"); ma.setAnnotationValues(mav); eventAnnotations.add(ma); annotations.put("AnEvent", eventAnnotations); com.setAnnotationsForTypes(annotations); // Check completions String[] c = com.getFactTypes(); assertEquals(2, c.length); assertContains("NotAnEvent", c); assertContains("AnEvent", c); c = com.getOperatorCompletions("NotAnEvent", "dateField"); assertEquals(11, 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"); assertEquals(c[8], "after"); assertEquals(c[9], "before"); assertEquals(c[10], "coincides"); c = com.getOperatorCompletions("AnEvent", "this"); assertEquals(17, c.length); assertEquals(c[0], "=="); assertEquals(c[1], "!="); assertEquals(c[2], "== null"); assertEquals(c[3], "!= null"); assertEquals(c[4], "after"); assertEquals(c[5], "before"); assertEquals(c[6], "coincides"); assertEquals(c[7], "during"); assertEquals(c[8], "finishes"); assertEquals(c[9], "finishedby"); assertEquals(c[10], "includes"); assertEquals(c[11], "meets"); assertEquals(c[12], "metby"); assertEquals(c[13], "overlaps"); assertEquals(c[14], "overlappedby"); assertEquals(c[15], "starts"); assertEquals(c[16], "startedby"); }
@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")); }