rulebaseimpltest.java

来自「jboss规则引擎」· Java 代码 · 共 398 行 · 第 1/2 页

JAVA
398
字号
        /*
         * Now lets test the dispose method on the WorkingMemory itself. dispose
         * doesn't need GC
         */
        this.wm3.dispose();

        /* Check only wm3 was valid */
        assertLength( 3,
                      this.ruleBase.getWorkingMemories() );
        assertFalse( this.ruleBase.getWorkingMemories().contains( this.wm3 ) );
    }

    public void testNoKeepReference() throws Exception {
        final WorkingMemory wm5 = this.ruleBase.newWorkingMemory( false );
        final WorkingMemory wm6 = this.ruleBase.newWorkingMemory( false );
        assertLength( 4,
                      this.ruleBase.getWorkingMemories() );
        assertFalse( this.ruleBase.getWorkingMemories().contains( wm5 ) );
        assertFalse( this.ruleBase.getWorkingMemories().contains( wm6 ) );
    }

    public void testAddRuleBeforeFacts() throws Exception {

        assertEquals( 0,
                      this.handlesForRules.size() );

        this.ruleBaseAddRule.addRule( this.rule1 );
        this.ruleBaseAddRule.addRule( this.rule2 );
        this.workingMemory.assertObject( this.context1 );
        this.workingMemory.assertObject( this.context2 );
        // firing
        this.workingMemory.fireAllRules();
        // finally everything should be filled
        assertEquals( 4,
                      this.handlesForRules.size() );
        assertTrue( this.handlesForRules.contains( this.handle1Rule1 ) );
        assertTrue( this.handlesForRules.contains( this.handle2Rule1 ) );
        assertTrue( this.handlesForRules.contains( this.handle1Rule2 ) );
        assertTrue( this.handlesForRules.contains( this.handle2Rule2 ) );
    }

    public void testAddRuleMixedWithFacts() throws Exception {

        assertEquals( 0,
                      this.handlesForRules.size() );

        this.ruleBaseAddRule.addRule( this.rule1 );
        this.workingMemory.assertObject( this.context1 );
        this.ruleBaseAddRule.addRule( this.rule2 );
        this.workingMemory.assertObject( this.context2 );
        // firing
        this.workingMemory.fireAllRules();
        // finally everything should be filled
        assertEquals( 4,
                      this.handlesForRules.size() );
        assertTrue( this.handlesForRules.contains( this.handle1Rule1 ) );
        assertTrue( this.handlesForRules.contains( this.handle2Rule1 ) );
        assertTrue( this.handlesForRules.contains( this.handle1Rule2 ) );
        assertTrue( this.handlesForRules.contains( this.handle2Rule2 ) );
    }

    public void testAddRuleAfterFacts() throws Exception {

        assertEquals( 0,
                      this.handlesForRules.size() );
        this.workingMemory.assertObject( this.context1 );
        this.workingMemory.assertObject( this.context2 );
        this.ruleBaseAddRule.addRule( this.rule1 );
        this.ruleBaseAddRule.addRule( this.rule2 );
        // firing
        this.workingMemory.fireAllRules();
        // finally everything should be filled
        assertEquals( 4,
                      this.handlesForRules.size() );
        assertTrue( this.handlesForRules.contains( this.handle1Rule1 ) );
        assertTrue( this.handlesForRules.contains( this.handle2Rule1 ) );
        assertTrue( this.handlesForRules.contains( this.handle1Rule2 ) );
        assertTrue( this.handlesForRules.contains( this.handle2Rule2 ) );
    }

    public void testAddRuleBeforeFactsFiring() throws Exception {

        assertEquals( 0,
                      this.handlesForRules.size() );

        this.ruleBaseAddRule.addRule( this.rule1 );
        // firing
        this.workingMemory.fireAllRules();
        this.ruleBaseAddRule.addRule( this.rule2 );
        // firing
        this.workingMemory.fireAllRules();
        this.workingMemory.assertObject( this.context1 );
        // firing
        this.workingMemory.fireAllRules();
        this.workingMemory.assertObject( this.context2 );
        // firing
        this.workingMemory.fireAllRules();
        // finally everything should be filled
        assertEquals( 4,
                      this.handlesForRules.size() );
        assertTrue( this.handlesForRules.contains( this.handle1Rule1 ) );
        assertTrue( this.handlesForRules.contains( this.handle2Rule1 ) );
        assertTrue( this.handlesForRules.contains( this.handle1Rule2 ) );
        assertTrue( this.handlesForRules.contains( this.handle2Rule2 ) );
    }

    public void testAddRuleMixedWithFactsFiring1() throws Exception {

        assertEquals( 0,
                      this.handlesForRules.size() );

        this.ruleBaseAddRule.addRule( this.rule1 );
        // firing
        this.workingMemory.fireAllRules();
        this.workingMemory.assertObject( this.context1 );
        // firing
        this.workingMemory.fireAllRules();
        this.ruleBaseAddRule.addRule( this.rule2 );
        // firing
        this.workingMemory.fireAllRules();
        this.workingMemory.assertObject( this.context2 );
        // firing
        this.workingMemory.fireAllRules();
        // finally everything should be filled
        assertEquals( 4,
                      this.handlesForRules.size() );
        assertTrue( this.handlesForRules.contains( this.handle1Rule1 ) );
        assertTrue( this.handlesForRules.contains( this.handle2Rule1 ) );
        assertTrue( this.handlesForRules.contains( this.handle1Rule2 ) );
        assertTrue( this.handlesForRules.contains( this.handle2Rule2 ) );
    }

    public void testAddRuleMixedWithFactsFiring2() throws Exception {

        assertEquals( 0,
                      this.handlesForRules.size() );

        this.ruleBaseAddRule.addRule( this.rule2 );
        // firing
        this.workingMemory.fireAllRules();
        this.workingMemory.assertObject( this.context1 );
        // firing
        this.workingMemory.fireAllRules();
        // firing
        this.workingMemory.fireAllRules();
        this.workingMemory.assertObject( this.context2 );
        this.ruleBaseAddRule.addRule( this.rule1 );
        // firing
        this.workingMemory.fireAllRules();
        // finally everything should be filled
        assertEquals( 4,
                      this.handlesForRules.size() );
        assertTrue( this.handlesForRules.contains( this.handle1Rule1 ) );
        assertTrue( this.handlesForRules.contains( this.handle2Rule1 ) );
        assertTrue( this.handlesForRules.contains( this.handle1Rule2 ) );
        assertTrue( this.handlesForRules.contains( this.handle2Rule2 ) );
    }

    public void testAddRuleAfterFactsFiring() throws Exception {

        assertEquals( 0,
                      this.handlesForRules.size() );
        this.workingMemory.assertObject( this.context1 );
        // firing
        this.workingMemory.fireAllRules();
        this.workingMemory.assertObject( this.context2 );
        // firing
        this.workingMemory.fireAllRules();
        this.ruleBaseAddRule.addRule( this.rule1 );
        // firing
        this.workingMemory.fireAllRules();
        this.ruleBaseAddRule.addRule( this.rule2 );
        // firing
        this.workingMemory.fireAllRules();
        // finally everything should be filled
        assertEquals( 4,
                      this.handlesForRules.size() );
        assertTrue( this.handlesForRules.contains( this.handle1Rule1 ) );
        assertTrue( this.handlesForRules.contains( this.handle2Rule1 ) );
        assertTrue( this.handlesForRules.contains( this.handle1Rule2 ) );
        assertTrue( this.handlesForRules.contains( this.handle2Rule2 ) );
    }

    private FieldConstraint getLiteralConstraint(final Column column,
                                                 final String fieldName,
                                                 final Object fieldValue,
                                                 final Evaluator evaluator) {
        final Class clazz = ((ClassObjectType) column.getObjectType()).getClassType();

        final FieldExtractor extractor = new ClassFieldExtractor( clazz,
                                                                  fieldName );

        final FieldValue field = new MockField( fieldValue );

        return new LiteralConstraint( field,
                                      extractor,
                                      evaluator );
    }
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?