"\n";
KnowledgeBase kBase = loadKnowledgeBaseFromString(drl);
TraitFactory.setMode( mode, kBase );
StatefulKnowledgeSession kSession = kBase.newStatefulKnowledgeSession();
FactType parent = kBase.getFactType("org.drools.traits.test", "PosTrait");
assertEquals(0, ((FieldDefinition) parent.getField("field0")).getIndex());
assertEquals(1, ((FieldDefinition) parent.getField("field1")).getIndex());
assertEquals(2, ((FieldDefinition) parent.getField("field2")).getIndex());
FactType child = kBase.getFactType("org.drools.traits.test", "MultiInhPosTrait");
assertEquals(0, ((FieldDefinition) child.getField("field0")).getIndex());
assertEquals(1, ((FieldDefinition) child.getField("field1")).getIndex());
assertEquals(2, ((FieldDefinition) child.getField("mfield1")).getIndex());
assertEquals(3, ((FieldDefinition) child.getField("field2")).getIndex());
assertEquals(4, ((FieldDefinition) child.getField("mfield0")).getIndex());
drl = "" +
"package org.drools.traits.test;\n" +
"import org.drools.factmodel.traits.Traitable;\n" +
"\n" +
"global java.util.List list;\n" +
"\n" +
"\n" +
"declare Pos\n" +
"@propertyReactive\n" +
"@Traitable\n" +
"end\n" +
"\n" +
"declare trait PosTrait\n" +
"@propertyReactive\n" +
" field0 : int = 100 //@position(0)\n" +
" field1 : int = 101 //@position(1)\n" +
" field2 : int = 102 @position(1)\n" +
"end\n" +
"\n" +
"declare trait MultiInhPosTrait extends PosTrait\n" +
"@propertyReactive\n" +
" mfield0 : int = 200 @position(0)\n" +
" mfield1 : int = 201 @position(2)\n" +
"end\n" +
"\n" +
"\n";
kBase = loadKnowledgeBaseFromString(drl);
TraitFactory.setMode( mode, kBase );
parent = kBase.getFactType("org.drools.traits.test", "PosTrait");
assertEquals(0, ((FieldDefinition) parent.getField("field0")).getIndex());
assertEquals(1, ((FieldDefinition) parent.getField("field2")).getIndex());
assertEquals(2, ((FieldDefinition) parent.getField("field1")).getIndex());
child = kBase.getFactType("org.drools.traits.test", "MultiInhPosTrait");
assertEquals(0, ((FieldDefinition) child.getField("mfield0")).getIndex());
assertEquals(1, ((FieldDefinition) child.getField("field2")).getIndex());
assertEquals(2, ((FieldDefinition) child.getField("mfield1")).getIndex());
assertEquals(3, ((FieldDefinition) child.getField("field0")).getIndex());
assertEquals(4, ((FieldDefinition) child.getField("field1")).getIndex());
drl = "" +
"package org.drools.traits.test;\n" +
"import org.drools.factmodel.traits.Traitable;\n" +
"\n" +
"global java.util.List list;\n" +
"\n" +
"\n" +
"declare Pos\n" +
"@propertyReactive\n" +
"@Traitable\n" +
"end\n" +
"\n" +
"declare trait PosTrait\n" +
"@propertyReactive\n" +
" field0 : int = 100 @position(5)\n" +
" field1 : int = 101 @position(0)\n" +
" field2 : int = 102 @position(1)\n" +
"end\n" +
"\n" +
"declare trait MultiInhPosTrait extends PosTrait\n" +
"@propertyReactive\n" +
" mfield0 : int = 200 @position(0)\n" +
" mfield1 : int = 201 @position(1)\n" +
"end\n" +
"\n" +
"\n";
kBase = loadKnowledgeBaseFromString(drl);
TraitFactory.setMode( mode, kBase );
parent = kBase.getFactType("org.drools.traits.test", "PosTrait");
assertEquals(0, ((FieldDefinition) parent.getField("field1")).getIndex());
assertEquals(1, ((FieldDefinition) parent.getField("field2")).getIndex());
assertEquals(2, ((FieldDefinition) parent.getField("field0")).getIndex());
child = kBase.getFactType("org.drools.traits.test", "MultiInhPosTrait");
assertEquals(0, ((FieldDefinition) child.getField("field1")).getIndex());
assertEquals(1, ((FieldDefinition) child.getField("mfield0")).getIndex());
assertEquals(2, ((FieldDefinition) child.getField("field2")).getIndex());
assertEquals(3, ((FieldDefinition) child.getField("mfield1")).getIndex());
assertEquals(4, ((FieldDefinition) child.getField("field0")).getIndex());
drl = "" +
"package org.drools.traits.test;\n" +
"import org.drools.factmodel.traits.Traitable;\n" +
"\n" +
"global java.util.List list;\n" +
"\n" +
"\n" +
"declare Pos\n" +
"@propertyReactive\n" +
"@Traitable\n" +
"end\n" +
"\n" +
"declare trait PosTrait\n" +
"@propertyReactive\n" +
" field0 : int = 100 //@position(5)\n" +
" field1 : int = 101 //@position(0)\n" +
" field2 : int = 102 //@position(1)\n" +
"end\n" +
"\n" +
"declare trait MultiInhPosTrait extends PosTrait\n" +
"@propertyReactive\n" +
" mfield0 : int = 200 //@position(0)\n" +
" mfield1 : int = 201 //@position(1)\n" +
"end\n" +
"\n" +
"\n";
kBase = loadKnowledgeBaseFromString(drl);
TraitFactory.setMode( mode, kBase );
parent = kBase.getFactType("org.drools.traits.test", "PosTrait");
assertEquals(0, ((FieldDefinition) parent.getField("field0")).getIndex());
assertEquals(1, ((FieldDefinition) parent.getField("field1")).getIndex());
assertEquals(2, ((FieldDefinition) parent.getField("field2")).getIndex());
child = kBase.getFactType("org.drools.traits.test", "MultiInhPosTrait");
assertEquals(0, ((FieldDefinition) child.getField("field0")).getIndex());
assertEquals(1, ((FieldDefinition) child.getField("field1")).getIndex());
assertEquals(2, ((FieldDefinition) child.getField("field2")).getIndex());
assertEquals(3, ((FieldDefinition) child.getField("mfield0")).getIndex());
assertEquals(4, ((FieldDefinition) child.getField("mfield1")).getIndex());
}