1 package org.columba.mail.folder.imap; 2 3 import java.io.IOException ; 4 import java.util.Arrays ; 5 import java.util.Collections ; 6 import java.util.List ; 7 8 import junit.framework.TestCase; 9 10 import org.columba.core.command.CommandCancelledException; 11 import org.columba.mail.imap.TestHeaderList; 12 import org.columba.mail.imap.TestServer; 13 import org.columba.mail.message.ColumbaHeader; 14 import org.columba.mail.message.IPersistantHeaderList; 15 import org.columba.ristretto.imap.IMAPException; 16 import org.columba.ristretto.imap.MailboxStatus; 17 18 public class IMAPSyncTest extends TestCase { 19 20 public void testSimpleNewMails() throws IOException , CommandCancelledException, IMAPException, Exception { 21 IPersistantHeaderList testList = new TestHeaderList(); 22 MailboxStatus status = new MailboxStatus(); 23 status.setMessages(100); 24 status.setUidNext(101); 25 TestServer testServer = new TestServer(status); 26 27 IMAPFolder folder = new IMAPFolder(testList, testServer); 28 29 for( int i=1; i<=100; i++) { 31 ColumbaHeader header = new ColumbaHeader(); 32 header.set("columba.uid", i); 33 34 testList.add(header, i); 35 testServer.addHeader(header,i); 36 } 37 38 39 for( int i=1; i<=10; i++) { 41 ColumbaHeader header = new ColumbaHeader(); 42 header.set("columba.uid", i+100); 43 testServer.addHeader(header,i+100); 44 } 45 status.setMessages(110); 46 status.setUidNext(111); 47 48 assertEquals(100, testList.count()); 49 folder.synchronizeHeaderlist(); 50 51 assertEquals(110, testList.count()); 53 List keys = Arrays.asList(testList.getUids()); 54 Collections.sort(keys); 55 int testUid = 1; 56 for( Object uid: keys) { 57 assertEquals(testUid++, uid); 58 } 59 60 assertEquals(111, testUid); 61 } 62 63 public void testSimpleRemovedMails() throws IOException , CommandCancelledException, IMAPException, Exception { 64 IPersistantHeaderList testList = new TestHeaderList(); 65 MailboxStatus status = new MailboxStatus(); 66 status.setMessages(100); 67 status.setUidNext(101); 68 TestServer testServer = new TestServer(status); 69 70 IMAPFolder folder = new IMAPFolder(testList, testServer); 71 72 for( int i=1; i<=100; i++) { 74 ColumbaHeader header = new ColumbaHeader(); 75 header.set("columba.uid", i); 76 77 testList.add(header, i); 78 testServer.addHeader(header,i); 79 } 80 81 82 for( int i=1; i<=10; i++) { 84 testServer.removeHeader(100 - 3 * i); 85 } 86 status.setMessages(90); 87 88 assertEquals(100, testList.count()); 89 folder.synchronizeHeaderlist(); 90 91 assertEquals(90, testList.count()); 93 List keys = Arrays.asList(testList.getUids()); 94 for( Object uid: keys) { 95 if(testServer.getHeaderList().exists(uid) == false) { 96 System.out.println("UID is removed but not from headerlist: " + uid); 97 assertTrue(false); 98 } 99 } 100 } 101 102 public void testNewAndRemovedMails() throws IOException , CommandCancelledException, IMAPException, Exception { 103 IPersistantHeaderList testList = new TestHeaderList(); 104 MailboxStatus status = new MailboxStatus(); 105 status.setMessages(100); 106 status.setUidNext(101); 107 TestServer testServer = new TestServer(status); 108 109 IMAPFolder folder = new IMAPFolder(testList, testServer); 110 111 for( int i=1; i<=100; i++) { 113 ColumbaHeader header = new ColumbaHeader(); 114 header.set("columba.uid", i); 115 116 testList.add(header, i); 117 testServer.addHeader(header,i); 118 119 } 120 121 122 for( int i=1; i<=10; i++) { 125 ColumbaHeader header = new ColumbaHeader(); 126 header.set("columba.uid", i+100); 127 testServer.addHeader(header,i+100); 128 testServer.removeHeader(100 - 3 * i); 129 130 } 131 status.setMessages(100); 132 status.setUidNext(111); 133 134 assertEquals(100, testList.count()); 135 folder.synchronizeHeaderlist(); 136 137 assertEquals(100, testList.count()); 139 List keys = Arrays.asList(testList.getUids()); 140 for( Object uid: keys) { 141 if(testServer.getHeaderList().exists(uid) == false) { 142 System.out.println("UID is removed but not from headerlist: " + uid); 143 assertTrue(false); 144 } 145 } 146 } 147 148 } 149 | Popular Tags |