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

📄 agendaitemmaptest.java

📁 drools 一个开放源码的规则引擎
💻 JAVA
字号:
package org.drools.reteoo;

import junit.framework.TestCase;

import org.drools.rule.Declaration;
import org.drools.rule.Rule;
import org.drools.spi.ObjectType;

/**
 * @author <a href="mailto:michael.neale@gmail.com"> Michael Neale</a>
 */
public class AgendaItemMapTest extends TestCase
{

    /**
     * The simples test that should work.
     */
    public void testPutGetMatch()
    {
        AgendaItemMap map = new AgendaItemMap( );
        ObjectType objType = getMockObjectType( );

        Declaration dec = new Declaration( "somthing",
                                           objType,
                                           1 );
        TupleKey key = new TupleKey( dec,
                                     new FactHandleImpl( 1 ) );
        Rule rule = new Rule( "name1" );
        map.put( rule,
                 key,
                 "item1" );

        Object result = map.remove( rule,
                                    key );

        assertEquals( "item1",
                      result );

        result = map.remove( rule,
                             key );
        assertNull( result );

    }

    public void testMoreComplex()
    {
        AgendaItemMap map = new AgendaItemMap( );
        ObjectType objType = getMockObjectType( );

        Declaration dec = new Declaration( "somthing",
                                           objType,
                                           1 );
        TupleKey key = new TupleKey( dec,
                                     new FactHandleImpl( 1 ) );

        map.put( new Rule( "name1" ),
                 key,
                 "item1" );
        map.put( new Rule( "name2" ),
                 key,
                 "item2" );

        TupleKey key2 = new TupleKey( dec,
                                      new FactHandleImpl( 2 ) );
        map.put( new Rule( "name2" ),
                 key2,
                 "item3" );

        Object result = map.remove( new Rule( "name2" ),
                                    key );

        assertNotSame( "item1",
                       result );

        result = map.remove( new Rule( "name2" ),
                             key2 );

        assertEquals( "item3",
                      result );

        // now check null returns
        result = map.remove( new Rule( "missing rule" ),
                             key2 );
        assertNull( result );

        TupleKey missingKey = new TupleKey( dec,
                                            new FactHandleImpl( 42 ) );
        result = map.remove( new Rule( "name2" ),
                             missingKey );
        assertNull( result );
    }

    public void testRemoveAll()
    {
        AgendaItemMap map = new AgendaItemMap( );
        ObjectType objType = getMockObjectType( );

        Declaration dec = new Declaration( "somthing",
                                           objType,
                                           1 );
        TupleKey key = new TupleKey( dec,
                                     new FactHandleImpl( 1 ) );
        map.put( new Rule( "name1" ),
                 key,
                 "item1" );
        map.put( new Rule( "name2" ),
                 key,
                 "item1" );
        map.put( new Rule( "name3" ),
                 key,
                 "item1" );
        map.removeAll( getRemoveDelegate( ) );

        assertNull( map.remove( new Rule( "name1" ),
                                key ) );
        assertNull( map.remove( new Rule( "name2" ),
                                key ) );
        assertNull( map.remove( new Rule( "name3" ),
                                key ) );
    }

    public void testIsEmpty()
    {
        AgendaItemMap map = new AgendaItemMap( );
        assertTrue( map.isEmpty( ) );
        ObjectType objType = getMockObjectType( );

        Declaration dec = new Declaration( "somthing",
                                           objType,
                                           1 );
        TupleKey key = new TupleKey( dec,
                                     new FactHandleImpl( 1 ) );
        map.put( new Rule( "name1" ),
                 key,
                 "item1" );
        assertFalse( map.isEmpty( ) );
        AgendaItemMap.RemoveDelegate del = getRemoveDelegate( );
        map.removeAll( del );
        assertTrue( map.isEmpty( ) );

        map.put( new Rule( "name1" ),
                 key,
                 "item1" );
        map.remove( new Rule( "name1" ),
                    key );
        assertTrue( map.isEmpty( ) );

    }

    private AgendaItemMap.RemoveDelegate getRemoveDelegate()
    {
        AgendaItemMap.RemoveDelegate del = new AgendaItemMap.RemoveDelegate( ) {
            public void processRemove(Object obj)
            {
            }
        };
        return del;
    }

    private ObjectType getMockObjectType()
    {
        return new ObjectType( ) {

            public boolean matches(Object object)
            {
                return false;
            }

        };
    }

}

⌨️ 快捷键说明

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