use of org.drools.traits.core.factmodel.HierarchyEncoder in project drools by kiegroup.
the class HierarchyTest method testHierEncoderDecoderUpper.
@Test
public void testHierEncoderDecoderUpper() {
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);
Collection x;
x = encoder.upperBorder(encoder.metMembersCode(Arrays.asList("B")));
System.out.println("LCS " + x);
assertEquals(1, x.size());
assertTrue(x.contains("B"));
x = encoder.immediateParents(encoder.metMembersCode(Arrays.asList("B")));
System.out.println("LCS " + x);
assertEquals(2, x.size());
assertTrue(x.contains("A"));
assertTrue(x.contains("Z"));
x = encoder.upperBorder(encoder.jointMembersCode(Arrays.asList("Z", "Q")));
System.out.println("LCS " + x);
assertEquals(1, x.size());
assertTrue(x.contains("Thing"));
x = encoder.immediateParents(encoder.jointMembersCode(Arrays.asList("Z", "Q")));
System.out.println("LCS " + x);
assertEquals(1, x.size());
assertTrue(x.contains("Thing"));
x = encoder.upperBorder(encoder.jointMembersCode(Arrays.asList("B", "C")));
System.out.println("LCS " + x);
assertEquals(2, x.size());
assertTrue(x.contains("A"));
assertTrue(x.contains("Z"));
x = encoder.immediateParents(encoder.jointMembersCode(Arrays.asList("B", "C")));
System.out.println("LCS " + x);
assertEquals(2, x.size());
assertTrue(x.contains("A"));
assertTrue(x.contains("Z"));
x = encoder.upperBorder(encoder.jointMembersCode(Arrays.asList("T")));
System.out.println("LCS " + x);
assertEquals(1, x.size());
assertTrue(x.contains("T"));
x = encoder.immediateParents(encoder.jointMembersCode(Arrays.asList("T")));
System.out.println("LCS " + x);
assertEquals(2, x.size());
assertTrue(x.contains("C"));
assertTrue(x.contains("Q"));
}
use of org.drools.traits.core.factmodel.HierarchyEncoder in project drools by kiegroup.
the class HierarchyTest method testHierEncoderAnotherSimpleInheritanceChangeOrder.
@Test
public void testHierEncoderAnotherSimpleInheritanceChangeOrder() {
HierarchyEncoder encoder = new HierarchyEncoderImpl();
encoder.encode("R", Collections.EMPTY_LIST);
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"));
encoder.encode("A1", Arrays.asList("R"));
encoder.encode("A2", Arrays.asList("R"));
encoder.encode("A3", Arrays.asList("R"));
System.out.println(encoder);
assertEquals(parseBitSet("0"), encoder.getCode("R"));
assertEquals(parseBitSet("1"), encoder.getCode("B1"));
assertEquals(parseBitSet("10"), encoder.getCode("B2"));
assertEquals(parseBitSet("100"), encoder.getCode("B3"));
assertEquals(parseBitSet("11"), encoder.getCode("B4"));
assertEquals(parseBitSet("101"), encoder.getCode("B5"));
assertEquals(parseBitSet("110"), encoder.getCode("B6"));
assertEquals(parseBitSet("111"), encoder.getCode("B7"));
assertEquals(parseBitSet("1000"), encoder.getCode("A1"));
assertEquals(parseBitSet("10000"), encoder.getCode("A2"));
assertEquals(parseBitSet("100000"), encoder.getCode("A3"));
}
use of org.drools.traits.core.factmodel.HierarchyEncoder in project drools by kiegroup.
the class HierarchyTest method testHierManyRoots.
@Test
public void testHierManyRoots() {
HierarchyEncoder encoder = new HierarchyEncoderImpl();
encoder.encode("A", Collections.EMPTY_LIST);
encoder.encode("B", Collections.EMPTY_LIST);
encoder.encode("C", Collections.EMPTY_LIST);
encoder.encode("D", Collections.EMPTY_LIST);
encoder.encode("E", Collections.EMPTY_LIST);
System.out.println(encoder);
assertEquals(parseBitSet("1"), encoder.getCode("A"));
assertEquals(parseBitSet("10"), encoder.getCode("B"));
assertEquals(parseBitSet("100"), encoder.getCode("C"));
assertEquals(parseBitSet("1000"), encoder.getCode("D"));
assertEquals(parseBitSet("10000"), encoder.getCode("E"));
assertEquals(5, encoder.size());
assertEquals(5, encoder.getSortedMembers().size());
assertEquals(5, encoder.getSortedMap().size());
}
use of org.drools.traits.core.factmodel.HierarchyEncoder in project drools by kiegroup.
the class HierarchyTest method testDecoderAncestors.
@Test
public void testDecoderAncestors() {
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("1100111");
x = encoder.upperAncestors(b);
System.out.println("ANC " + x);
assertTrue(x.contains("A"));
assertTrue(x.contains("Z"));
assertTrue(x.contains("C"));
assertTrue(x.contains("Q"));
assertTrue(x.contains("T"));
assertTrue(x.contains("R"));
assertTrue(x.contains("S"));
assertTrue(x.contains("M"));
assertTrue(x.contains("Thing"));
assertEquals(9, x.size());
b = parseBitSet("100000");
x = encoder.upperAncestors(b);
System.out.println("ANC " + x);
assertEquals(2, x.size());
assertTrue(x.contains("Q"));
assertTrue(x.contains("Thing"));
b = parseBitSet("1111");
x = encoder.upperAncestors(b);
System.out.println("ANC " + x);
assertEquals(6, x.size());
assertTrue(x.contains("A"));
assertTrue(x.contains("Z"));
assertTrue(x.contains("B"));
assertTrue(x.contains("C"));
assertTrue(x.contains("N"));
assertTrue(x.contains("Thing"));
b = parseBitSet("111");
x = encoder.upperAncestors(b);
System.out.println("ANC " + x);
assertEquals(4, x.size());
assertTrue(x.contains("A"));
assertTrue(x.contains("Z"));
assertTrue(x.contains("C"));
assertTrue(x.contains("Thing"));
b = parseBitSet("1");
x = encoder.upperAncestors(b);
System.out.println("ANC " + x);
assertEquals(2, x.size());
assertTrue(x.contains("A"));
assertTrue(x.contains("Thing"));
b = parseBitSet("10");
x = encoder.upperAncestors(b);
System.out.println("ANC " + x);
assertEquals(2, x.size());
assertTrue(x.contains("Z"));
assertTrue(x.contains("Thing"));
b = parseBitSet("0");
x = encoder.upperAncestors(b);
System.out.println("ANC " + x);
assertEquals(1, x.size());
assertTrue(x.contains("Thing"));
b = parseBitSet("1011");
x = encoder.upperAncestors(b);
System.out.println("ANC " + x);
assertEquals(4, x.size());
assertTrue(x.contains("Thing"));
assertTrue(x.contains("A"));
assertTrue(x.contains("B"));
assertTrue(x.contains("Z"));
}
use of org.drools.traits.core.factmodel.HierarchyEncoder in project drools by kiegroup.
the class HierarchyTest method testHierEncoderBipartiteStarInheritance.
@Test
public void testHierEncoderBipartiteStarInheritance() {
HierarchyEncoder encoder = new HierarchyEncoderImpl();
encoder.encode("R", Collections.EMPTY_LIST);
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"));
encoder.encode("A1", Arrays.asList("R"));
encoder.encode("A2", Arrays.asList("R"));
encoder.encode("A3", Arrays.asList("R"));
encoder.encode("A4", Arrays.asList("A1", "A2", "A3"));
encoder.encode("A5", Arrays.asList("A4"));
encoder.encode("A6", Arrays.asList("A4"));
encoder.encode("A7", Arrays.asList("A4"));
System.out.println(encoder);
assertEquals(parseBitSet("0"), encoder.getCode("R"));
assertEquals(parseBitSet("1"), encoder.getCode("B1"));
assertEquals(parseBitSet("10"), encoder.getCode("B2"));
assertEquals(parseBitSet("100"), encoder.getCode("B3"));
assertEquals(parseBitSet("11"), encoder.getCode("B4"));
assertEquals(parseBitSet("101"), encoder.getCode("B5"));
assertEquals(parseBitSet("110"), encoder.getCode("B6"));
assertEquals(parseBitSet("111"), encoder.getCode("B7"));
assertEquals(parseBitSet("1000"), encoder.getCode("A1"));
assertEquals(parseBitSet("10000"), encoder.getCode("A2"));
assertEquals(parseBitSet("100000"), encoder.getCode("A3"));
assertEquals(parseBitSet("111000"), encoder.getCode("A4"));
assertEquals(parseBitSet("1111000"), encoder.getCode("A5"));
assertEquals(parseBitSet("10111000"), encoder.getCode("A6"));
assertEquals(parseBitSet("100111000"), encoder.getCode("A7"));
}
Aggregations