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