Package org.drools.analytics

Source Code of org.drools.analytics.RangeCheckIntegersTest

package org.drools.analytics;

import java.util.Collection;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;

import org.drools.StatelessSession;
import org.drools.StatelessSessionResult;
import org.drools.analytics.dao.AnalyticsData;
import org.drools.analytics.dao.AnalyticsDataFactory;
import org.drools.analytics.result.Gap;
import org.drools.base.RuleNameMatchesAgendaFilter;

/**
*
* @author Toni Rikkola
*
*/
public class RangeCheckIntegersTest extends TestBase {

  public void testSmallerOrEqual() throws Exception {
    StatelessSession session = getStatelessSession(this.getClass()
        .getResourceAsStream("rangeChecks/Integers.drl"));

    session
        .setAgendaFilter(new RuleNameMatchesAgendaFilter(
            "Range check for integers, if smaller than or equal is missing"));

    Collection<? extends Object> testData = getTestData(this.getClass()
        .getResourceAsStream("MissingRangesForInts.drl"));

    AnalyticsData data = AnalyticsDataFactory.getAnalyticsData();
    session.setGlobal("data", data);

    StatelessSessionResult sessionResult = session
        .executeWithResults(testData);

    Iterator iter = sessionResult.iterateObjects();

    Set<String> rulesThatHadErrors = new HashSet<String>();
    while (iter.hasNext()) {
      Object o = (Object) iter.next();
      if (o instanceof Gap) {
        rulesThatHadErrors.add(((Gap) o).getRuleName());
      }
      // System.out.println(o);
    }

    assertTrue(rulesThatHadErrors.remove("Integer gap rule 4a"));
    assertTrue(rulesThatHadErrors.remove("Integer gap rule 5a"));

    if (!rulesThatHadErrors.isEmpty()) {
      for (String string : rulesThatHadErrors) {
        fail("Rule " + string + " caused an error.");
      }
    }
  }

  public void testGreaterOrEqual() throws Exception {
    StatelessSession session = getStatelessSession(this.getClass()
        .getResourceAsStream("rangeChecks/Integers.drl"));

    session
        .setAgendaFilter(new RuleNameMatchesAgendaFilter(
            "Range check for integers, if greater than or equal is missing"));

    Collection<? extends Object> testData = getTestData(this.getClass()
        .getResourceAsStream("MissingRangesForInts.drl"));

    AnalyticsData data = AnalyticsDataFactory.getAnalyticsData();
    session.setGlobal("data", data);

    StatelessSessionResult sessionResult = session
        .executeWithResults(testData);

    Iterator iter = sessionResult.iterateObjects();

    Set<String> rulesThatHadErrors = new HashSet<String>();
    while (iter.hasNext()) {
      Object o = (Object) iter.next();
      if (o instanceof Gap) {
        rulesThatHadErrors.add(((Gap) o).getRuleName());
      }
      // System.out.println(o);
    }

    assertTrue(rulesThatHadErrors.remove("Integer gap rule 4b"));
    assertTrue(rulesThatHadErrors.remove("Integer gap rule 5b"));

    if (!rulesThatHadErrors.isEmpty()) {
      for (String string : rulesThatHadErrors) {
        fail("Rule " + string + " caused an error.");
      }
    }
  }

  public void testEqualAndGreaterThan() throws Exception {
    StatelessSession session = getStatelessSession(this.getClass()
        .getResourceAsStream("rangeChecks/Integers.drl"));

    session.setAgendaFilter(new RuleNameMatchesAgendaFilter(
        "Range check for integers, equal and greater than"));

    Collection<? extends Object> testData = getTestData(this.getClass()
        .getResourceAsStream("MissingRangesForInts.drl"));

    AnalyticsData data = AnalyticsDataFactory.getAnalyticsData();
    session.setGlobal("data", data);

    StatelessSessionResult sessionResult = session
        .executeWithResults(testData);

    Iterator iter = sessionResult.iterateObjects();

    Set<String> rulesThatHadErrors = new HashSet<String>();
    while (iter.hasNext()) {
      Object o = (Object) iter.next();
      if (o instanceof Gap) {
        rulesThatHadErrors.add(((Gap) o).getRuleName());
      }
      // System.out.println(o);
    }

    assertTrue(rulesThatHadErrors.remove("Integer gap rule 1"));
    assertTrue(rulesThatHadErrors.remove("Integer gap rule 7b"));
    assertTrue(rulesThatHadErrors.remove("Integer gap rule 3"));

    if (!rulesThatHadErrors.isEmpty()) {
      for (String string : rulesThatHadErrors) {
        fail("Rule " + string + " caused an error.");
      }
    }
  }

  public void testEqualAndSmallerThan() throws Exception {
    StatelessSession session = getStatelessSession(this.getClass()
        .getResourceAsStream("rangeChecks/Integers.drl"));

    session.setAgendaFilter(new RuleNameMatchesAgendaFilter(
        "Range check for integers, equal and smaller than"));

    Collection<? extends Object> testData = getTestData(this.getClass()
        .getResourceAsStream("MissingRangesForInts.drl"));

    AnalyticsData data = AnalyticsDataFactory.getAnalyticsData();
    session.setGlobal("data", data);

    StatelessSessionResult sessionResult = session
        .executeWithResults(testData);

    Iterator iter = sessionResult.iterateObjects();

    Set<String> rulesThatHadErrors = new HashSet<String>();
    while (iter.hasNext()) {
      Object o = (Object) iter.next();
      if (o instanceof Gap) {
        rulesThatHadErrors.add(((Gap) o).getRuleName());
      }
      // System.out.println(o);
    }

    assertTrue(rulesThatHadErrors.remove("Integer gap rule 1"));
    assertTrue(rulesThatHadErrors.remove("Integer gap rule 6b"));
    assertTrue(rulesThatHadErrors.remove("Integer gap rule 2"));

    if (!rulesThatHadErrors.isEmpty()) {
      for (String string : rulesThatHadErrors) {
        fail("Rule " + string + " caused an error.");
      }
    }
  }
}
TOP

Related Classes of org.drools.analytics.RangeCheckIntegersTest

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.