Search in sources :

Example 1 with HierarchyEncoder

use of org.drools.traits.core.factmodel.HierarchyEncoder in project drools by kiegroup.

the class HierarchyTest method testHierEncoderAnotherSimpleInheritance.

@Test
public void testHierEncoderAnotherSimpleInheritance() {
    HierarchyEncoder encoder = new HierarchyEncoderImpl();
    encoder.encode("R", Collections.EMPTY_LIST);
    encoder.encode("A1", Arrays.asList("R"));
    encoder.encode("A2", Arrays.asList("R"));
    encoder.encode("A3", Arrays.asList("R"));
    encoder.encode("B1", Arrays.asList("R"));
    encoder.encode("B2", Arrays.asList("R"));
    encoder.encode("B3", Arrays.asList("R"));
    encoder.encode("B4", Arrays.asList("B1", "B2"));
    encoder.encode("B5", Arrays.asList("B1", "B3"));
    encoder.encode("B6", Arrays.asList("B2", "B3"));
    encoder.encode("B7", Arrays.asList("B4", "B5", "B6"));
    System.out.println(encoder);
    assertEquals(parseBitSet("0"), encoder.getCode("R"));
    assertEquals(parseBitSet("1"), encoder.getCode("A1"));
    assertEquals(parseBitSet("10"), encoder.getCode("A2"));
    assertEquals(parseBitSet("100"), encoder.getCode("A3"));
    assertEquals(parseBitSet("1000"), encoder.getCode("B1"));
    assertEquals(parseBitSet("10000"), encoder.getCode("B2"));
    assertEquals(parseBitSet("100000"), encoder.getCode("B3"));
    assertEquals(parseBitSet("11000"), encoder.getCode("B4"));
    assertEquals(parseBitSet("101000"), encoder.getCode("B5"));
    assertEquals(parseBitSet("110000"), encoder.getCode("B6"));
    assertEquals(parseBitSet("111000"), encoder.getCode("B7"));
}
Also used : HierarchyEncoder(org.drools.traits.core.factmodel.HierarchyEncoder) Test(org.junit.Test)

Example 2 with HierarchyEncoder

use of org.drools.traits.core.factmodel.HierarchyEncoder in project drools by kiegroup.

the class HierarchyTest method testHierEncoderSimpleInheritance.

@Test
public void testHierEncoderSimpleInheritance() {
    HierarchyEncoder encoder = new HierarchyEncoderImpl();
    encoder.encode("A", Collections.EMPTY_LIST);
    encoder.encode("B", Arrays.asList("A"));
    encoder.encode("C", Arrays.asList("A"));
    encoder.encode("D", Arrays.asList("B"));
    encoder.encode("E", Arrays.asList("B"));
    encoder.encode("F", Arrays.asList("C"));
    encoder.encode("G", Arrays.asList("C"));
    System.out.println(encoder);
    assertEquals(parseBitSet("0"), encoder.getCode("A"));
    assertEquals(parseBitSet("1"), encoder.getCode("B"));
    assertEquals(parseBitSet("10"), encoder.getCode("C"));
    assertEquals(parseBitSet("101"), encoder.getCode("D"));
    assertEquals(parseBitSet("1001"), encoder.getCode("E"));
    assertEquals(parseBitSet("110"), encoder.getCode("F"));
    assertEquals(parseBitSet("1010"), encoder.getCode("G"));
}
Also used : HierarchyEncoder(org.drools.traits.core.factmodel.HierarchyEncoder) Test(org.junit.Test)

Example 3 with HierarchyEncoder

use of org.drools.traits.core.factmodel.HierarchyEncoder in project drools by kiegroup.

the class HierarchyTest method testConflictArising.

@Test
public void testConflictArising() {
    HierarchyEncoder encoder = new HierarchyEncoderImpl();
    encoder.encode("A", Collections.EMPTY_LIST);
    encoder.encode("B", Arrays.asList("A"));
    encoder.encode("C", Arrays.asList("A"));
    encoder.encode("D", Arrays.asList("B"));
    encoder.encode("E", Arrays.asList("B"));
    encoder.encode("F", Arrays.asList("C"));
    encoder.encode("G", Arrays.asList("C"));
    encoder.encode("H", Arrays.asList("E"));
    System.out.println(encoder);
    assertEquals(parseBitSet("0"), encoder.getCode("A"));
    assertEquals(parseBitSet("1"), encoder.getCode("B"));
    assertEquals(parseBitSet("10"), encoder.getCode("C"));
    assertEquals(parseBitSet("101"), encoder.getCode("D"));
    assertEquals(parseBitSet("1001"), encoder.getCode("E"));
    assertEquals(parseBitSet("110"), encoder.getCode("F"));
    assertEquals(parseBitSet("1010"), encoder.getCode("G"));
    assertEquals(parseBitSet("11001"), encoder.getCode("H"));
    encoder.encode("I", Arrays.asList("E", "F"));
    System.out.println(encoder);
    assertEquals(parseBitSet("0"), encoder.getCode("A"));
    assertEquals(parseBitSet("1"), encoder.getCode("B"));
    assertEquals(parseBitSet("10"), encoder.getCode("C"));
    assertEquals(parseBitSet("101"), encoder.getCode("D"));
    assertEquals(parseBitSet("1000001"), encoder.getCode("E"));
    assertEquals(parseBitSet("100010"), encoder.getCode("F"));
    assertEquals(parseBitSet("1010"), encoder.getCode("G"));
    assertEquals(parseBitSet("1010001"), encoder.getCode("H"));
    assertEquals(parseBitSet("1100011"), encoder.getCode("I"));
    checkHier(encoder, 'I');
}
Also used : HierarchyEncoder(org.drools.traits.core.factmodel.HierarchyEncoder) Test(org.junit.Test)

Example 4 with HierarchyEncoder

use of org.drools.traits.core.factmodel.HierarchyEncoder in project drools by kiegroup.

the class HierarchyTest method testHierEncoderTrivial.

@Test
public void testHierEncoderTrivial() {
    HierarchyEncoder encoder = new HierarchyEncoderImpl();
    encoder.encode("A", Collections.EMPTY_LIST);
    encoder.encode("B", Arrays.asList("A"));
    encoder.encode("C", Arrays.asList("B"));
    encoder.encode("D", Arrays.asList("B", "C"));
    System.out.println(encoder);
    assertEquals(parseBitSet("0"), encoder.getCode("A"));
    assertEquals(parseBitSet("1"), encoder.getCode("B"));
    assertEquals(parseBitSet("11"), encoder.getCode("C"));
    assertEquals(parseBitSet("111"), encoder.getCode("D"));
}
Also used : HierarchyEncoder(org.drools.traits.core.factmodel.HierarchyEncoder) Test(org.junit.Test)

Example 5 with HierarchyEncoder

use of org.drools.traits.core.factmodel.HierarchyEncoder in project drools by kiegroup.

the class HierarchyTest method testDecoderDescendants.

@Test
public void testDecoderDescendants() {
    HierarchyEncoder encoder = new HierarchyEncoderImpl();
    encoder.encode("Thing", Collections.EMPTY_LIST);
    encoder.encode("A", Arrays.asList("Thing"));
    encoder.encode("Z", Arrays.asList("Thing"));
    encoder.encode("B", Arrays.asList("A", "Z"));
    encoder.encode("C", Arrays.asList("A", "Z"));
    encoder.encode("N", Arrays.asList("B", "C"));
    encoder.encode("P", Arrays.asList("Thing"));
    encoder.encode("Q", Arrays.asList("Thing"));
    encoder.encode("R", Arrays.asList("Thing"));
    encoder.encode("S", Arrays.asList("R"));
    encoder.encode("T", Arrays.asList("C", "Q"));
    encoder.encode("M", Arrays.asList("R", "Q"));
    encoder.encode("O", Arrays.asList("M", "P"));
    System.out.println(encoder);
    BitSet b;
    Collection x;
    b = parseBitSet("111");
    x = encoder.lowerDescendants(b);
    System.out.println("DESC " + x);
    assertEquals(3, x.size());
    assertTrue(x.contains("C"));
    assertTrue(x.contains("N"));
    assertTrue(x.contains("T"));
    b = parseBitSet("10");
    x = encoder.lowerDescendants(b);
    System.out.println("DESC " + x);
    assertEquals(5, x.size());
    assertTrue(x.contains("C"));
    assertTrue(x.contains("N"));
    assertTrue(x.contains("T"));
    assertTrue(x.contains("Z"));
    assertTrue(x.contains("B"));
    b = parseBitSet("100000");
    x = encoder.lowerDescendants(b);
    System.out.println("DESC " + x);
    assertEquals(4, x.size());
    assertTrue(x.contains("Q"));
    assertTrue(x.contains("T"));
    assertTrue(x.contains("M"));
    assertTrue(x.contains("O"));
    b = parseBitSet("100010");
    x = encoder.lowerDescendants(b);
    System.out.println("DESC " + x);
    assertEquals(1, x.size());
    assertTrue(x.contains("T"));
    b = parseBitSet("1111");
    x = encoder.lowerDescendants(b);
    System.out.println("DESC " + x);
    assertEquals(1, x.size());
    assertTrue(x.contains("N"));
    b = parseBitSet("1");
    x = encoder.lowerDescendants(b);
    System.out.println("DESC " + x);
    assertEquals(5, x.size());
    assertTrue(x.contains("A"));
    assertTrue(x.contains("B"));
    assertTrue(x.contains("C"));
    assertTrue(x.contains("N"));
    assertTrue(x.contains("T"));
    System.out.println(" +*******************************+ ");
    x = encoder.lowerDescendants(new BitSet());
    System.out.println("DESC " + x);
    assertEquals(13, x.size());
    assertTrue(x.contains("Z"));
    assertTrue(x.contains("Thing"));
}
Also used : HierarchyEncoder(org.drools.traits.core.factmodel.HierarchyEncoder) BitSet(java.util.BitSet) Collection(java.util.Collection) Test(org.junit.Test)

Aggregations

HierarchyEncoder (org.drools.traits.core.factmodel.HierarchyEncoder)20 Test (org.junit.Test)19 BitSet (java.util.BitSet)5 Collection (java.util.Collection)4 InternalFactHandle (org.drools.core.common.InternalFactHandle)1 Thing (org.drools.core.factmodel.traits.Thing)1 TraitRuntimeComponentFactory (org.drools.traits.core.reteoo.TraitRuntimeComponentFactory)1 FactHandle (org.kie.api.runtime.rule.FactHandle)1