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