@Test
public void testCubeOrder3() throws Exception {

    DataFrame df = new DataFrame();
    String[] col1 = {"a1", "a2", "a1", "a1"};
    String[] col2 = {"b1", "b1", "b2", "b1"};
    String[] col3 = {"c1", "c1", "c1", "c2"};
    double[] counts = {100, 300, 400, 500};
    double[] oCounts = {30, 5, 5, 7};
    df.addColumn("col1", col1);
    df.addColumn("col2", col2);
    df.addColumn("col3", col3);
    df.addColumn("counts", counts);
    df.addColumn("oCounts", oCounts);
    List<String> explanationAttributes = Arrays.asList(
            "col1",
            "col2",
            "col3"
    );
    APLOutlierSummarizer summ = new APLOutlierSummarizer(false);
    summ.setCountColumn("counts");
    summ.setOutlierColumn("oCounts");
    summ.setMinSupport(.1);
    summ.setMinRatioMetric(3.0);
    summ.setAttributes(explanationAttributes);
    summ.process(df);
    APLExplanation e = summ.getResults();
    assertEquals(1, e.getResults().size());
    assertTrue(e.prettyPrint().contains("col1=a1"));
    assertEquals(47.0, e.numOutliers(), 1e-10);
}