/* * Copyright 2010 Red Hat, Inc. and/or its affiliates. * * 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; import static org.junit.Assert.assertFalse; import java.io.InputStream; import java.io.InputStreamReader; import java.io.Reader; import java.util.Collection; import java.util.Collections; import java.util.Map; import java.util.Set; import org.drools.compiler.compiler.DrlParser; import org.drools.compiler.lang.descr.PackageDescr; import org.drools.verifier.data.VerifierData; import org.drools.verifier.report.components.Cause; import org.drools.verifier.visitor.PackageDescrVisitor; import org.junit.Before; import org.kie.api.io.ResourceType; import org.kie.api.runtime.KieSession; import org.kie.internal.KnowledgeBase; import org.kie.internal.KnowledgeBaseFactory; import org.kie.internal.builder.KnowledgeBuilder; import org.kie.internal.builder.KnowledgeBuilderError; import org.kie.internal.builder.KnowledgeBuilderFactory; import org.kie.internal.builder.conf.LanguageLevelOption; import org.kie.internal.io.ResourceFactory; import org.kie.internal.runtime.StatefulKnowledgeSession; abstract public class TestBaseOld { @Before public void setUp() throws Exception { System.setProperty( "drools.dateformat", "dd-MMM-yyyy" ); } public KieSession getStatelessKieSession(InputStream stream) throws Exception { KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder(); kbuilder.add(ResourceFactory.newInputStreamResource(stream), ResourceType.DRL); assertFalse(kbuilder.hasErrors()); KnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase(); kbase.addKnowledgePackages(kbuilder.getKnowledgePackages()); return kbase.newStatefulKnowledgeSession(); } /** * Returns true if map contains redundancy where ruleName1 is redundant to * ruleName2. * * @param map * @param ruleName1 * @param ruleName2 * @return True if redundancy exists. */ protected static boolean mapContains(Map<String, Set<String>> map, String ruleName1, String ruleName2) { if ( map.containsKey( ruleName1 ) ) { Set<String> set = map.get( ruleName1 ); boolean exists = set.remove( ruleName2 ); // If set is empty remove key from map. if ( set.isEmpty() ) { map.remove( ruleName1 ); } return exists; } return false; } /** * Returns true if map contains redundancy where cause1 is redundant to * cause2. * * @param map * @param cause1 * @param cause2 * @return True if redundancy exists. */ protected static boolean causeMapContains(Map<Cause, Set<Cause>> map, Cause cause1, Cause cause2) { if ( map.containsKey( cause1 ) ) { Set<Cause> set = map.get( cause1 ); boolean exists = set.remove( cause2 ); // If set is empty remove key from map. if ( set.isEmpty() ) { map.remove( cause1 ); } return exists; } return false; } @SuppressWarnings("unchecked") public Collection< ? extends Object> getTestData(InputStream stream, VerifierData data) throws Exception { Reader drlReader = new InputStreamReader( stream ); PackageDescr descr = new DrlParser(LanguageLevelOption.DRL5).parse( drlReader ); PackageDescrVisitor packageDescrVisitor = new PackageDescrVisitor( data, Collections.EMPTY_LIST ); packageDescrVisitor.visitPackageDescr( descr ); // Rules with relations return data.getAll(); } }