⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 rulebaseimpltest.java

📁 jboss规则引擎
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
        /*
         * 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 + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -