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

📄 imapstoretest.java

📁 java 开发的邮件服务器平台。支持以下协议。 协议可以修改为自己的专门标识
💻 JAVA
字号:
/*********************************************************************** * Copyright (c) 2000-2004 The Apache Software Foundation.             * * All rights reserved.                                                * * ------------------------------------------------------------------- * * 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.apache.james.imapserver;import org.apache.james.imapserver.store.ImapMailbox;import org.apache.james.imapserver.store.ImapStore;import org.apache.james.imapserver.store.InMemoryStore;import org.apache.james.imapserver.store.MailboxException;import junit.framework.TestCase;import java.util.Collection;/** * A test for implementations of the {@link org.apache.james.imapserver.store.ImapStore} interface. * * TODO tests to write *   - Rename *   - List (various combinations) *   -  * * @version $Revision: 1.3.2.3 $ */public class ImapStoreTest extends TestCase        implements ImapConstants{    private ImapStore imapStore;    public ImapStoreTest( String s )    {        super( s );    }    protected void setUp() throws Exception    {        super.setUp();        imapStore = getStoreImplementation();    }    protected ImapStore getStoreImplementation()    {        return new InMemoryStore();    }    /**     * Tests creation of mailboxes in the Store.     */    public void testCreate() throws Exception    {        // Get the user namespace.        ImapMailbox root = imapStore.getMailbox( ImapConstants.USER_NAMESPACE );        // Create a single mailbox.        ImapMailbox test = create( root, "test" );        assertMailbox( "test", true );        // Create a single mailbox as noselect.        ImapMailbox noSelect = imapStore.createMailbox( root, "noSelect", false );        assertMailbox( "noSelect", false );        // Create children for these mailboxes.        create( test, "child" );        create( noSelect, "child" );        assertMailbox( "test", true );        assertMailbox( "test.child", true );        assertMailbox( "noSelect", false );        assertMailbox( "noSelect.child", true );        try {            imapStore.createMailbox( root, "bad.name", true );            fail( "Shouldn't create mailboxes with compound names." );        }        catch ( MailboxException e ) {}    }    /**     * Tests deletion of mailboxes from the store.     */    public void testDelete() throws Exception    {        // Simple create/delete        create("test" );        assertMailbox( "test", true );        delete( "test" );        assertNoMailbox( "test");        // Create a chain and attempt to delete the parent.        ImapMailbox one = create( "one" );        create( one, "two" );        assertMailbox( "one", true );        assertMailbox( "one.two", true );        try {            delete( "one");            fail( "Delete of mailbox with children should fail." );        }        catch ( MailboxException e ) {        }        assertMailbox( "one", true );        assertMailbox( "one.two", true );        // Delete the child, then the parent        delete( "one.two");        delete( "one");        assertNoMailbox( "one" );        assertNoMailbox( "one.two" );    }    /**     * Tests the {@link ImapStore#listMailboxes} method.     */    public void testListMailboxes() throws Exception    {        Collection coll;        coll = list("*");        assertTrue( coll.isEmpty() );        coll = list("%");        assertTrue( coll.isEmpty() );        ImapMailbox test = create( "test" );        ImapMailbox testOne = create( test, "one" );        ImapMailbox testTwo = create( test, "two" );        ImapMailbox testTwoAaa = create( testTwo, "aaa" );        ImapMailbox different = create( "different" );        ImapMailbox differentOne = create( different, "one" );        ImapMailbox differentTwo = create( different, "two" );        coll = list("*");        assertContents( coll, new ImapMailbox[]{test, testOne, testTwo, testTwoAaa, different, differentOne, differentTwo});        coll = list("%");        assertContents( coll, new ImapMailbox[]{test, different});        coll = list("te*");        assertContents( coll, new ImapMailbox[]{test, testOne, testTwo, testTwoAaa});        coll = list("te%");        assertContents( coll, new ImapMailbox[]{test});        coll = list("test*");        assertContents( coll, new ImapMailbox[]{test, testOne, testTwo, testTwoAaa});        // TODO - should this return children?        coll = list("test%");        assertContents( coll, new ImapMailbox[]{test});        coll = list("test.*");        assertContents( coll, new ImapMailbox[]{testOne, testTwo, testTwoAaa});        coll = list( "test.%" );        assertContents( coll, new ImapMailbox[]{testOne, testTwo});    }    /**     * Asserts that the supplied collection contains exactly the mailboxes in the     * array provided.     */    private void assertContents( Collection coll, ImapMailbox[] imapMailboxes )            throws Exception    {        assertEquals( coll.size(), imapMailboxes.length );        for ( int i = 0; i < imapMailboxes.length; i++ )        {            assertTrue( coll.contains( imapMailboxes[i] ) );        }    }    /**     * Checks that a mailbox with the supplied name exists, and that its     * NoSelect flag matches that expected.     */    private void assertMailbox( String name, boolean selectable )    {        ImapMailbox mailbox = imapStore.getMailbox( prefixUserNamespace( name ) );        assertNotNull( "Mailbox <" + name + "> expected to exist in store.",                       mailbox );        if ( selectable )        {            assertTrue( "Mailbox <" + name + "> not selectable.",                        mailbox.isSelectable() );        }        else        {            assertTrue( "Mailbox <" + name + "> should not be selectable.",                        ! mailbox.isSelectable() );        }    }    /**     * Asserts that a mailbox with the supplied name doesn't exist.     */    private void assertNoMailbox( String name )    {        ImapMailbox mailbox = imapStore.getMailbox( prefixUserNamespace( name ));        assertNull( "Mailbox <" + name + "> should not exist.",                    mailbox );    }    /**     * Creates a mailbox with the specified name in the root user namespace.     */    private ImapMailbox create( String name ) throws Exception    {        ImapMailbox root = imapStore.getMailbox( USER_NAMESPACE );        return create( root, name );    }    /**     * Creates a mailbox under the parent provided with the specified name.     */    private ImapMailbox create( ImapMailbox parent, String name )            throws MailboxException    {        return imapStore.createMailbox( parent, name, true );    }    /**     * Deletes a mailbox from the store.     */    private void delete( String name ) throws MailboxException    {        ImapMailbox mailbox = imapStore.getMailbox( prefixUserNamespace( name ) );        imapStore.deleteMailbox( mailbox );    }    /**     * Executes {@link ImapStore#listMailboxes} with the supplied pattern.     */    private Collection list( String pattern ) throws MailboxException    {        return imapStore.listMailboxes( prefixUserNamespace( pattern ) );    }    /**     * Prefixes a mailbox name with the "#mail" namespace.     */    private String prefixUserNamespace( String name )    {        return USER_NAMESPACE + HIERARCHY_DELIMITER + name;    }}

⌨️ 快捷键说明

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