@Test public void testToDrl() { List<FieldMetaModel> fields = new ArrayList<FieldMetaModel>(); fields.add(new FieldMetaModel("f1", "int")); fields.add(new FieldMetaModel("f2", "String")); FactMetaModel mm = new FactMetaModel("FooBar", fields); FactModelContentHandler ch = new FactModelContentHandler(); String drl = ch.toDRL(mm); assertNotNull(drl); System.err.println(drl); assertEquals("declare FooBar\n\tf1: int\n\tf2: String\nend", drl); FactMetaModel mm2 = new FactMetaModel("BooBah", new ArrayList<FieldMetaModel>()); List<FactMetaModel> models = new ArrayList<FactMetaModel>(); models.add(mm); models.add(mm2); drl = ch.toDRL(models); System.err.println(drl); assertTrue(drl.indexOf("FooBar") > -1); assertTrue(drl.indexOf("BooBah") > drl.indexOf("FooBar")); }
@Test public void testFromEmptyDrl() throws Exception { String drl = ""; FactModelContentHandler ch = new FactModelContentHandler(); List<FactMetaModel> list = ch.toModel(drl); assertNotNull(list); }
@Test public void testFromDrlDeclarationEmpty() throws Exception { String drl = "declare FooBar\nend"; FactModelContentHandler ch = new FactModelContentHandler(); List<FactMetaModel> list = ch.toModel(drl); assertEquals(1, list.size()); FactMetaModel mm = list.get(0); assertEquals("FooBar", mm.getName()); assertEquals(0, mm.getFields().size()); }
@Test public void testAdvanced() throws Exception { String drl = "#advanced editor \ndeclare FooBar\n\t name: String \nend"; try { FactModelContentHandler ch = new FactModelContentHandler(); ch.toModel(drl); fail("should not parse this"); } catch (DroolsParserException e) { assertNotNull(e.getMessage()); } }
@Test public void testFromDrlDeclarationWithAnnotations() throws Exception { String drl = "declare FooBar\n\t@role(event)\nend"; FactModelContentHandler ch = new FactModelContentHandler(); List<FactMetaModel> list = ch.toModel(drl); assertEquals(1, list.size()); FactMetaModel mm = list.get(0); assertEquals("FooBar", mm.getName()); assertEquals(0, mm.getFields().size()); assertEquals(1, mm.getAnnotations().size()); assertEquals("event", mm.getAnnotations().get(0).values.get("value")); }
@Test public void testStore() throws Exception { FactModelContentHandler ch = new FactModelContentHandler(); RulesRepository repo = rulesRepository; PackageItem pkg = repo.loadDefaultPackage(); AssetItem asset = pkg.addAsset("testDeclaredTypeStore", ""); asset.updateFormat("model.drl"); asset.updateContent("declare Foo\n name: String\n end"); asset.checkin(""); RuleAsset ass = new RuleAsset(); ch.retrieveAssetContent(ass, asset); assertTrue(ass.getContent() instanceof FactModels); FactModels fm = (FactModels) ass.getContent(); assertEquals(1, fm.models.size()); FactMetaModel mm = (FactMetaModel) fm.models.get(0); assertEquals(1, mm.getFields().size()); assertEquals("Foo", mm.getName()); FieldMetaModel fmm = (FieldMetaModel) mm.getFields().get(0); assertEquals("name", fmm.name); mm.getFields().add(new FieldMetaModel("age", "int")); ch.storeAssetContent(ass, asset); assertTrue(asset.getContent().indexOf("age: int") > -1); asset.updateContent("rubbish here"); asset.checkin(""); ch.retrieveAssetContent(ass, asset); assertTrue(ass.getContent() instanceof RuleContentText); ch.storeAssetContent(ass, asset); assertEquals("rubbish here", asset.getContent()); }
@Test public void testFromDrlDeclarationWithFields() throws Exception { String drl = "declare FooBar\n\tf1: int\n\tf2: String\nend"; FactModelContentHandler ch = new FactModelContentHandler(); List<FactMetaModel> list = ch.toModel(drl); assertEquals(1, list.size()); FactMetaModel mm = list.get(0); assertEquals("FooBar", mm.getName()); assertEquals(2, mm.getFields().size()); for (int i = 0; i < mm.getFields().size(); i++) { FieldMetaModel fm = (FieldMetaModel) mm.getFields().get(1); if (fm.name.equals("f1")) { assertEquals("f1", fm.name); assertEquals("int", fm.type); } else { assertEquals("f2", fm.name); assertEquals("String", fm.type); } } }