Package org.drools.verifier.incompatibility

Source Code of org.drools.verifier.incompatibility.IncompatibilityPatternsTest

/*
* Copyright 2010 JBoss Inc
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
*      http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/

package org.drools.verifier.incompatibility;

import org.drools.core.base.RuleNameMatchesAgendaFilter;
import org.drools.verifier.TestBaseOld;
import org.drools.verifier.VerifierComponentMockFactory;
import org.drools.verifier.components.*;
import org.drools.verifier.report.components.Cause;
import org.drools.verifier.report.components.Incompatibility;
import org.junit.Test;
import org.kie.api.runtime.KieSession;

import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;

import static org.junit.Assert.assertTrue;
import static org.junit.Assert.fail;

public class IncompatibilityPatternsTest extends IncompatibilityBase {

    @Test
    public void testPatternsPossibilitiesIncompatibility() throws Exception {
        KieSession session = getStatelessKieSession(this.getClass().getResourceAsStream("Patterns.drl"));

        Collection<Object> data = new ArrayList<Object>();

        Pattern pattern1 = VerifierComponentMockFactory.createPattern1();
        Pattern pattern2 = VerifierComponentMockFactory.createPattern2();

        /*
         * Working pair
         */
        SubPattern pp1 = new SubPattern(pattern1,
                                        0);
        SubPattern pp2 = new SubPattern(pattern2,
                                        0);

        Restriction r1 = LiteralRestriction.createRestriction(pattern1,
                                                              "");
        pp1.add(r1);

        Restriction r2 = LiteralRestriction.createRestriction(pattern2,
                                                              "");
        pp2.add(r2);

        Restriction r3 = LiteralRestriction.createRestriction(pattern1,
                                                              "");
        pp1.add(r3);

        Restriction r4 = LiteralRestriction.createRestriction(pattern2,
                                                              "");
        pp2.add(r4);

        Incompatibility o1 = new Incompatibility(r1,
                                                 r2);
        Incompatibility o2 = new Incompatibility(r3,
                                                 r4);

        Pattern pattern3 = VerifierComponentMockFactory.createPattern(3);
        Pattern pattern4 = VerifierComponentMockFactory.createPattern(4);
        /*
         * Another working pair.
         */
        SubPattern pp3 = new SubPattern(pattern3,
                                        0);
        SubPattern pp4 = new SubPattern(pattern4,
                                        0);

        Restriction r5 = LiteralRestriction.createRestriction(pattern3,
                                                              "");
        pp3.add(r5);

        Restriction r6 = LiteralRestriction.createRestriction(pattern4,
                                                              "");
        pp4.add(r6);

        Restriction r7 = LiteralRestriction.createRestriction(pattern3,
                                                              "");
        pp3.add(r7);

        Restriction r8 = LiteralRestriction.createRestriction(pattern4,
                                                              "");
        pp4.add(r8);

        Incompatibility o3 = new Incompatibility(r5,
                                                 r6);

        data.add(r1);
        data.add(r2);
        data.add(r3);
        data.add(r4);
        data.add(r5);
        data.add(r6);
        data.add(r7);
        data.add(r8);
        data.add(pp1);
        data.add(pp2);
        data.add(pp3);
        data.add(pp4);
        data.add(o1);
        data.add(o2);
        data.add(o3);

        for (Object o : data) {
            session.insert(o);
        }
        session.fireAllRules(new RuleNameMatchesAgendaFilter("Incompatible Patterns"));

        Map<Cause, Set<Cause>> map = createIncompatibilityMap(VerifierComponentType.SUB_PATTERN,
                                                              (Iterator<Object>)session.getObjects().iterator());

        assertTrue((TestBaseOld.causeMapContains(map,
                                                 pp1,
                                                 pp2) ^ TestBaseOld.causeMapContains(map,
                                                                                     pp2,
                                                                                     pp1)));
        assertTrue((TestBaseOld.causeMapContains(map,
                                                 pp3,
                                                 pp4) ^ TestBaseOld.causeMapContains(map,
                                                                                     pp4,
                                                                                     pp3)));

        if (!map.isEmpty()) {
            fail("More opposites than was expected.");
        }
    }
}
TOP

Related Classes of org.drools.verifier.incompatibility.IncompatibilityPatternsTest

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.