Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  /*
   * Copyright 2011 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.simulation.impl;
 
 import static org.drools.simulation.fluent.test.impl.ReflectiveMatcherFactory.matcher;
 import static org.junit.Assert.assertTrue;
 
 import java.util.List;
 
 import org.junit.Test;
 
 public class CompactFluentTest extends SimulateTestBase {
 
     @Test
     public void testSimpleForAllAssertionsTypes() throws IOException {
         SimulationFluent f = new DefaultSimulationFluent();
 
         VariableContext<Personpc = f.<PersongetVariableContext();
 
         List<Stringimports = new ArrayList<String>();
         imports.add"org.junit.Assert.assertThat" );
         imports.add"org.hamcrest.CoreMatchers.is" );
         imports.add"org.hamcrest.CoreMatchers.equalTo" );
         imports.add"org.hamcrest.CoreMatchers.allOf" );
 
         ReflectiveMatcherFactory rf = new ReflectiveMatcherFactoryimports );
 
         String str = "package org.drools.simulation.test\n" +
                      "import " + Person.class.getName() + "\n" +
                      "rule updateAge no-loop when  $p : Person() then modify( $p ) { setAge( $p.getAge() + 10 ) }; end\n";
         
         ReleaseId releaseId = createKJar"org.test.KBase1"str );
         
         // @formatter:off        
         f.newKieSessionreleaseId"org.test.KBase1.KSession1" )
             .insertnew Person"yoda", 150 ) ).set"y" )
             .fireAllRules()
             // show testing inside of ksession execution
             .test"y.name == 'yoda'" )
             .test"y.age == 160" )
 
             // test hamcrest
             .testrf.assertThat"y.name",
                                   matcher"equalTo",
                                            "'yoda'" ) ) )
             .testrf.assertThat"y.name, equalTo('yoda')" ) )
             .testrf.assertThat"y.age",
                                   matcher"equalTo",
                                            "160" ) ) )
             .testrf.assertThat"y.age, equalTo(160)" ) )
 
             // @ FIXME commented out until hamsandwich works in the build
             //             // test hamsandwich
             //             .test( rf.assertThat( "y", matcher( "allOf", matcher("name",  matcher( "equalTo", "'yoda'" ) ),
             //                                                          matcher("age",  matcher( "equalTo", "160" ) )
             //                                                )) )
             .end()
 
         // show complex testing after the ksession has finished
         .test"y.name == 'yoda'" )
         .test"y.age == 160" )
 
         // test hamcrest
         .testrf.assertThat"y.name",
                               matcher"equalTo",
                                        "'yoda'" ) ) )
         .testrf.assertThat"y.age",
                               matcher"equalTo",
                                        "160" ) ) )
         .runSimulation();
 
         // @ FIXME commented out until hamsandwich works in the build      
         //         // test hamsandwich
         //         .test( rf.assertThat( "y", matcher( "allOf", matcher("name",  matcher( "equalTo", "'yoda'" ) ),
         //                                                      matcher("age",  matcher( "equalTo", "160" ) )
         //                                            )) );                 
        // @formatter:on
    }
    @Test
    public void testAssertionsFail() throws IOException {
        SimulationFluent f = new DefaultSimulationFluent();
        VariableContext<Personpc = f.<PersongetVariableContext();
        List<Stringimports = new ArrayList<String>();
        imports.add"org.junit.Assert.assertThat" );
        imports.add"org.hamcrest.CoreMatchers.is" );
        imports.add"org.hamcrest.CoreMatchers.equalTo" );
        imports.add"org.hamcrest.CoreMatchers.allOf" );
        ReflectiveMatcherFactory rf = new ReflectiveMatcherFactoryimports );
        String str = "package org.drools.simulation.test\n" +
                     "import " + Person.class.getName() + "\n" +
                     "rule updateAge no-loop when  $p : Person() then modify( $p ) { setAge( $p.getAge() + 10 ) }; end\n";
        ReleaseId releaseId = createKJar"org.test.KBase1"str );
        // @formatter:off        
        f.newKieSession(releaseId"org.test.KBase1.KSession1")
            .insertnew Person"yoda", 150 ) ).set"y" )
            .fireAllRules()
            // show testing inside of ksession execution
            .test"y.age == 110" );
        // @formatter:on    
        boolean fail = false;
        try {
            f.runSimulation();
        } catch ( AssertionError e ) {
            fail = true;
        }
        assertTrue"Assertion should have failed",
                    fail );
        f = new DefaultSimulationFluent();
        // @formatter:off        
        f.newKieSession(releaseId"org.test.KBase1.KSession1")
             .insertnew Person"yoda", 150 ) ).set"y" )
             .fireAllRules()
             // show testing inside of ksession execution
             .testrf.assertThat"y.age"matcher"equalTo""120" ) ) )
             .testrf.assertThat"y.age, equalTo(120)" ) );        
        // @formatter:on    
        
        fail = false;
        try {
            f.runSimulation();
        } catch ( AssertionError e) {
            fail = true;
        } 
        assertTrue"Assertion should have failed"fail ); 
        // @ FIXME commented out until hamsandwich works in the build
        //        f = new FluentCompactSimulationImpl();
        //        
        //        // @formatter:off        
        //        f.newStatefulKnowledgeSession()
        //             .getKnowledgeBase()
        //                 .addKnowledgePackages( ResourceFactory.newByteArrayResource( str.getBytes() ),
        //                                        ResourceType.DRL )
        //             .end()
        //             .insert( new Person( "yoda", 150 ) ).set( "y" )
        //             .fireAllRules()
        //             // show testing inside of ksession execution
        //         .test( rf.assertThat( "y", matcher( "allOf", matcher("name",  matcher( "equalTo", "'yoda'" ) ),
        //                                                      matcher("age",  matcher( "equalTo", "160" ) )
        //                                            )) );            
        //        // @formatter:on    
        //        
        //        try {
        //            f.runSimulation();
        //            fail( "age is 160, so should fail" );
        //        } catch ( AssertionError e) {
        //            System.out.println( e );
        //        }          
    }
    @Test @Ignore("Doing newKSession on the same path twice doesn't make the second one the active one"// TODO FIXME
    public void testMultipleKsessionsWithSteps() throws IOException {
        SimulationFluent f = new DefaultSimulationFluent();
        VariableContext<Personpc = f.<PersongetVariableContext();
        List<Stringimports = new ArrayList<String>();
        imports.add"org.junit.Assert.assertThat" );
        imports.add"org.hamcrest.CoreMatchers.is" );
        imports.add"org.hamcrest.CoreMatchers.equalTo" );
        imports.add"org.hamcrest.CoreMatchers.allOf" );
        //        imports.add( PersonMatchers.class.getName() + ".name" );
        //        imports.add( PersonMatchers.class.getName() + ".age" );
        ReflectiveMatcherFactory rf = new ReflectiveMatcherFactoryimports );
        String str1 = "package org.drools.simulation.test\n" +
                      "import " + Person.class.getName() + "\n" +
                      "rule updateAge1 no-loop when  $p : Person() then modify( $p ) { setAge( $p.getAge() + 10 ) }; end\n";
        String str2 = "package org.drools.simulation.test\n" +
                      "import " + Person.class.getName() + "\n" +
                      "rule updateAge2 no-loop when  $p : Person() then modify( $p ) { setAge( $p.getAge() + 20 ) }; end\n";
        ReleaseId releaseId = createKJar"org.test.KBase1"str1,
                    "org.test.KBase2"str2 );
        // @formatter:off
        f.newRelativeStep( 100 )
        .newKieSession(releaseId"org.test.KBase1.KSession1")
            .insertnew Person"yoda1",
                                 150 ) ).set"y1" )
            .fireAllRules()
            .newRelativeStep( 200 )
            .insertnew Person"darth1",
                                 70 ) ).set"d1" )
            .fireAllRules()
            .end()
        .test"y1.age == 160" )
        .test"d1.age == 80" )
        .newRelativeStep( 100 )
        .newKieSession(releaseId"org.test.KBase2.KSession1")
            .insertnew Person"yoda2",
                                 150 ) ).set"y2" )
            .fireAllRules()
            .newRelativeStep( 200 )
            .insertnew Person"darth2",
                                 70 ) ).set"d2" )
            .fireAllRules()
            .end()
        .test"y2.age == 170" )
        .test"d2.age == 90" )
        .test"y1 == null" )
        .test"d1 == null" )
        .runSimulation();
        // @formatter:on
    }
New to GrepCode? Check out our FAQ X