Example #1
0
 private void gatherFixtures(
     List<Fixture> output,
     FixturesMap dataInput,
     CallFixtureMap callOnDataInput,
     FixtureList verifyFact,
     FixtureList verifyRule,
     FixtureList retractFacts,
     boolean end) {
   if (verifyRule.size() > 0) output.add(verifyRule);
   if (verifyFact.size() > 0) output.add(verifyFact);
   if (retractFacts.size() > 0) dataInput.put(RETRACT_KEY, retractFacts);
   if (dataInput.size() > 0 || !end)
     output.add(dataInput); // want to have a place holder for the GUI
   if (callOnDataInput.size() > 0 || !end) output.add(callOnDataInput);
 }
Example #2
0
  /**
   * Called lumpy map - as this takes a flat list of fixtures, and groups things together. It will
   * return a list - of which each element will either be a list - or a map. If its a map - then its
   * a map of FactData to the fact type. If its a list, then it will be expectations or retractions.
   *
   * <p>Man, this will be so much nicer with generics.
   *
   * @return List<List<VeryifyRuleFired or VerifyFact or RetractFact> OR Map<String, List<FactData>>
   *     OR ExecutionTrace>
   */
  public List<Fixture> lumpyMap(List<Fixture> fixtures) {
    List<Fixture> output = new ArrayList<Fixture>();

    FixturesMap dataInput = new FixturesMap();
    CallFixtureMap callOnDataInput = new CallFixtureMap();
    FixtureList verifyFact = new FixtureList();
    FixtureList verifyRule = new FixtureList();
    FixtureList retractFacts = new FixtureList();
    for (Fixture fixture : fixtures) {
      if (fixture instanceof FactData) {
        accumulateDataForFactData(dataInput, (FactData) fixture);
      } else if (fixture instanceof CallMethod) {
        accumulateCallMethod(callOnDataInput, (CallMethod) fixture);
      } else if (fixture instanceof ActivateRuleFlowGroup) {
        accumulateDataForActivateRuleFlowGroup(dataInput, fixture);
      } else if (fixture instanceof RetractFact) {
        retractFacts.add(fixture);
      } else if (fixture instanceof VerifyRuleFired) {
        verifyRule.add(fixture);
      } else if (fixture instanceof VerifyFact) {
        verifyFact.add(fixture);
      } else if (fixture instanceof ExecutionTrace) {
        gatherFixtures(
            output, dataInput, callOnDataInput, verifyFact, verifyRule, retractFacts, false);

        output.add(fixture);

        verifyRule = new FixtureList();
        verifyFact = new FixtureList();
        retractFacts = new FixtureList();
        callOnDataInput = new CallFixtureMap();
        dataInput = new FixturesMap();
      }
    }
    gatherFixtures(output, dataInput, callOnDataInput, verifyFact, verifyRule, retractFacts, true);

    return output;
  }