You are viewing a plain text version of this content. The canonical link for it is here.
Posted to server-dev@james.apache.org by ma...@apache.org on 2016/07/25 08:33:56 UTC

[5/8] james-project git commit: MAILBOX-273 update LuceneMailboxMessageSearchIndexTest to match new standards

MAILBOX-273 update LuceneMailboxMessageSearchIndexTest to match new standards


Project: http://git-wip-us.apache.org/repos/asf/james-project/repo
Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/eff623d6
Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/eff623d6
Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/eff623d6

Branch: refs/heads/master
Commit: eff623d6e756e1c66297bb3c7cf5298e65fe4077
Parents: 72ace6a
Author: Matthieu Baechler <ma...@linagora.com>
Authored: Mon Jul 18 16:45:00 2016 +0200
Committer: Matthieu Baechler <ma...@linagora.com>
Committed: Mon Jul 25 10:13:30 2016 +0200

----------------------------------------------------------------------
 .../LuceneMailboxMessageSearchIndexTest.java    | 674 +++++++------------
 1 file changed, 261 insertions(+), 413 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/james-project/blob/eff623d6/mailbox/lucene/src/test/java/org/apache/james/mailbox/lucene/search/LuceneMailboxMessageSearchIndexTest.java
----------------------------------------------------------------------
diff --git a/mailbox/lucene/src/test/java/org/apache/james/mailbox/lucene/search/LuceneMailboxMessageSearchIndexTest.java b/mailbox/lucene/src/test/java/org/apache/james/mailbox/lucene/search/LuceneMailboxMessageSearchIndexTest.java
index f116bfb..f9d5158 100644
--- a/mailbox/lucene/src/test/java/org/apache/james/mailbox/lucene/search/LuceneMailboxMessageSearchIndexTest.java
+++ b/mailbox/lucene/src/test/java/org/apache/james/mailbox/lucene/search/LuceneMailboxMessageSearchIndexTest.java
@@ -18,9 +18,7 @@
  ****************************************************************/
 package org.apache.james.mailbox.lucene.search;
 
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertTrue;
+import static org.assertj.core.api.Assertions.assertThat;
 
 import java.nio.charset.Charset;
 import java.util.Arrays;
@@ -126,580 +124,436 @@ public class LuceneMailboxMessageSearchIndexTest {
 
 
     @Test
-    public void testBodyShouldMatchPhraseInBody() throws Exception {
+    public void bodySearchShouldMatchPhraseInBody() throws Exception {
         SearchQuery query = new SearchQuery();
         query.andCriteria(SearchQuery.bodyContains(CUSTARD));
         Iterator<Long> result = index.search(null, mailbox3, query);
-        assertEquals(10L, result.next().longValue());
-        assertFalse(result.hasNext());
-        
-        
-        query = new SearchQuery();
-        query.andCriteria(SearchQuery.bodyContains(CUSTARD + CUSTARD));
-        result = index.search(null, mailbox3, query);
-        assertFalse(result.hasNext());
+        assertThat(result).containsExactly(10L);
     }
 
     @Test
-    public void testBodyMatchShouldBeCaseInsensitive() throws Exception {
+    public void bodySearchShouldNotMatchAbsentPhraseInBody() throws Exception {
+        SearchQuery query = new SearchQuery();
+        query.andCriteria(SearchQuery.bodyContains(CUSTARD + CUSTARD));
+        Iterator<Long> result = index.search(null, mailbox3, query);
+        assertThat(result).isEmpty();
+    }
+    
+    @Test
+    public void bodySearchShouldBeCaseInsensitive() throws Exception {
         SearchQuery query = new SearchQuery();
         query.andCriteria(SearchQuery.bodyContains(RHUBARD));
         Iterator<Long> result = index.search(null, mailbox3, query);
-        assertEquals(10L, result.next().longValue());
-        assertFalse(result.hasNext());
+        assertThat(result).containsExactly(10L);
     }
 
     @Test
-    public void testBodyShouldNotMatchPhraseOnlyInHeader() throws Exception {
+    public void bodySearchNotMatchPhraseOnlyInFrom() throws Exception {
         SearchQuery query = new SearchQuery();
         query.andCriteria(SearchQuery.bodyContains(FROM_ADDRESS));
         Iterator<Long> result = index.search(null, mailbox3, query);
-        assertFalse(result.hasNext());
-        
-        query = new SearchQuery();
+        assertThat(result).isEmpty();
+    }
+
+    @Test
+    public void bodySearchShouldNotMatchPhraseOnlyInSubject() throws Exception {
+        SearchQuery query = new SearchQuery();
         query.andCriteria(SearchQuery.bodyContains(SUBJECT_PART));
-        result = index.search(null, mailbox3, query);
-        assertFalse(result.hasNext());
+        Iterator<Long> result = index.search(null, mailbox3, query);
+        assertThat(result).isEmpty();
     }
 
     @Test
-    public void testTextShouldMatchPhraseInBody() throws Exception {
+    public void textSearchShouldMatchPhraseInBody() throws Exception {
         SearchQuery query = new SearchQuery();
         query.andCriteria(SearchQuery.mailContains(CUSTARD));
         Iterator<Long> result = index.search(null, mailbox3, query);
-        assertEquals(10L, result.next().longValue());
-        assertFalse(result.hasNext());
-        
-        query = new SearchQuery();
-        query.andCriteria(SearchQuery.mailContains(CUSTARD + CUSTARD));
-        result = index.search(null, mailbox3, query);
-        assertFalse(result.hasNext());
+        assertThat(result).containsExactly(10L);
     }
 
     @Test
-    public void testTextMatchShouldBeCaseInsensitive() throws Exception {
+    public void textSearchShouldNotAbsentMatchPhraseInBody() throws Exception {
         SearchQuery query = new SearchQuery();
-        query.andCriteria(SearchQuery.mailContains(RHUBARD));
+        query.andCriteria(SearchQuery.mailContains(CUSTARD + CUSTARD));
         Iterator<Long> result = index.search(null, mailbox3, query);
-        assertEquals(10L, result.next().longValue());
-        assertFalse(result.hasNext());
-        
+        assertThat(result).isEmpty();
+    }
+
+    @Test
+    public void textSearchMatchShouldBeCaseInsensitive() throws Exception {
+        SearchQuery query = new SearchQuery();
         query.andCriteria(SearchQuery.mailContains(RHUBARD.toLowerCase(Locale.US)));
-        result = index.search(null, mailbox3, query);
-        assertEquals(10L, result.next().longValue());
-        assertFalse(result.hasNext());
+        Iterator<Long> result = index.search(null, mailbox3, query);
+        assertThat(result).containsExactly(10L);
     }
 
     @Test
-    public void testSearchAddress() throws Exception {
-        
+    public void addressSearchShouldMatchToFullAddress() throws Exception {
         SearchQuery query = new SearchQuery();
         query.andCriteria(SearchQuery.address(AddressType.To,FROM_ADDRESS));
         Iterator<Long> result = index.search(null, mailbox3, query);
-        assertEquals(10L, result.next().longValue());
-        assertFalse(result.hasNext());
-        
-        query = new SearchQuery();
+        assertThat(result).containsExactly(10L);
+    }
+
+    @Test
+    public void addressSearchShouldMatchToDisplayName() throws Exception {
+        SearchQuery query = new SearchQuery();
         query.andCriteria(SearchQuery.address(AddressType.To,"Harry"));
-        result = index.search(null, mailbox3, query);
-        assertEquals(10L, result.next().longValue());
-        assertFalse(result.hasNext());
-        
-        query = new SearchQuery();
+        Iterator<Long> result = index.search(null, mailbox3, query);
+        assertThat(result).containsExactly(10L);
+    }
+    
+    @Test
+    public void addressSearchShouldMatchToEmail() throws Exception {
+        SearchQuery query = new SearchQuery();
         query.andCriteria(SearchQuery.address(AddressType.To,"Harry@example.org"));
-        result = index.search(null, mailbox3, query);
-        assertEquals(10L, result.next().longValue());
-        assertFalse(result.hasNext());
+        Iterator<Long> result = index.search(null, mailbox3, query);
+        assertThat(result).containsExactly(10L);
     }
     
     @Test
-    public void testSearchAddressFrom() throws Exception {
-        
+    public void addressSearchShouldMatchFrom() throws Exception {
         SearchQuery query = new SearchQuery();
         query.andCriteria(SearchQuery.address(AddressType.From,"ser-from@domain.or"));
         Iterator<Long> result = index.search(null, mailbox3, query);
-        assertEquals(10L, result.next().longValue());
-        assertFalse(result.hasNext());
-        
-       
+        assertThat(result).containsExactly(10L);
     }
+
     @Test
-    public void testBodyShouldMatchPhraseOnlyInHeader() throws Exception {
-        
+    public void textSearchShouldMatchPhraseOnlyInToHeader() throws Exception {
         SearchQuery query = new SearchQuery();
         query.andCriteria(SearchQuery.mailContains(FROM_ADDRESS));
         Iterator<Long> result = index.search(null, mailbox3, query);
-        assertEquals(10L, result.next().longValue());
-        assertFalse(result.hasNext());
-        
+        assertThat(result).containsExactly(10L);
+    }
+    
+    @Test
+    public void textSearchShouldMatchPhraseOnlyInSubjectHeader() throws Exception {
+        SearchQuery query = new SearchQuery();
         query.andCriteria(SearchQuery.mailContains(SUBJECT_PART));
-        result = index.search(null, mailbox3, query);
-        assertEquals(10L, result.next().longValue());
-        assertFalse(result.hasNext());
+        Iterator<Long> result = index.search(null, mailbox3, query);
+        assertThat(result).containsExactly(10L);
     }
     
     @Test
-    public void testSearchAll() throws Exception {
+    public void searchAllShouldMatchAllMailboxEmails() throws Exception {
         SearchQuery query = new SearchQuery();
         query.andCriteria(SearchQuery.all());
-        Iterator<Long> it2 = index.search(null, mailbox2, query);
-        assertTrue(it2.hasNext());
-        assertEquals(1L, it2.next().longValue());
-        assertFalse(it2.hasNext());
+        Iterator<Long> result = index.search(null, mailbox2, query);
+        assertThat(result).containsExactly(1L);
     }
     
     @Test
-    public void testSearchFlag() throws Exception {
-
-        SearchQuery q = new SearchQuery();
-        q.andCriteria(SearchQuery.flagIsSet(Flag.DELETED));
-        Iterator<Long> it3 = index.search(null, mailbox, q);
-        assertEquals(2L, it3.next().longValue());
-        assertEquals(3L, it3.next().longValue());
-        assertFalse(it3.hasNext());
+    public void flagSearchShouldMatch() throws Exception {
+        SearchQuery query = new SearchQuery();
+        query.andCriteria(SearchQuery.flagIsSet(Flag.DELETED));
+        Iterator<Long> result = index.search(null, mailbox, query);
+        assertThat(result).containsExactly(2L, 3L);
     }
     
     @Test
-    public void testSearchBody() throws Exception {    
-        SearchQuery q2 = new SearchQuery();
-        q2.andCriteria(SearchQuery.bodyContains("body"));
-        Iterator<Long> it4 = index.search(null, mailbox, q2);
-        assertEquals(1L, it4.next().longValue());
-        assertEquals(2L, it4.next().longValue());
-        assertEquals(3L, it4.next().longValue());
-
-        assertFalse(it4.hasNext());
+    public void bodySearchShouldMatchSeveralEmails() throws Exception {    
+        SearchQuery query = new SearchQuery();
+        query.andCriteria(SearchQuery.bodyContains("body"));
+        Iterator<Long> result = index.search(null, mailbox, query);
+        assertThat(result).containsExactly(1L, 2L, 3L);
     }
     
     @Test
-    public void testSearchMail() throws Exception {    
-        SearchQuery q2 = new SearchQuery();
-        q2.andCriteria(SearchQuery.mailContains("body"));
-        Iterator<Long> it4 = index.search(null, mailbox, q2);
-        assertEquals(1L, it4.next().longValue());
-        assertEquals(2L, it4.next().longValue());
-        assertEquals(3L, it4.next().longValue());
-
-        assertFalse(it4.hasNext());
+    public void textSearchShouldMatchSeveralEmails() throws Exception {    
+        SearchQuery query = new SearchQuery();
+        query.andCriteria(SearchQuery.mailContains("body"));
+        Iterator<Long> result = index.search(null, mailbox, query);
+        assertThat(result).containsExactly(1L, 2L, 3L);
     }
     
     @Test
-    public void testSearchHeaderContains() throws Exception {
-        SearchQuery q2 = new SearchQuery();
-        q2.andCriteria(SearchQuery.headerContains("Subject", "test"));
-        Iterator<Long> it4 = index.search(null, mailbox, q2);
-        assertEquals(1L, it4.next().longValue());
-        assertEquals(3L, it4.next().longValue());
-
-        assertFalse(it4.hasNext());
+    public void headerSearchShouldMatch() throws Exception {
+        SearchQuery query = new SearchQuery();
+        query.andCriteria(SearchQuery.headerContains("Subject", "test"));
+        Iterator<Long> result = index.search(null, mailbox, query);
+        assertThat(result).containsExactly(1L, 3L);
     }
     
     @Test
-    public void testSearchHeaderExists() throws Exception {
-        SearchQuery q2 = new SearchQuery();
-        q2.andCriteria(SearchQuery.headerExists("Subject"));
-        Iterator<Long> it4 = index.search(null, mailbox, q2);
-        assertEquals(1L, it4.next().longValue());
-        assertEquals(3L, it4.next().longValue());
-
-        assertFalse(it4.hasNext());
+    public void headerExistsShouldMatch() throws Exception {
+        SearchQuery query = new SearchQuery();
+        query.andCriteria(SearchQuery.headerExists("Subject"));
+        Iterator<Long> result = index.search(null, mailbox, query);
+        assertThat(result).containsExactly(1L, 3L);
     }
     
     @Test
-    public void testSearchFlagUnset() throws Exception {
-        SearchQuery q2 = new SearchQuery();
-        q2.andCriteria(SearchQuery.flagIsUnSet(Flag.DRAFT));
-        Iterator<Long> it4 = index.search(null, mailbox, q2);
-        assertEquals(1L, it4.next().longValue());
-        assertEquals(2L, it4.next().longValue());
-        assertEquals(3L, it4.next().longValue());
-
-        assertFalse(it4.hasNext());
+    public void flagUnsetShouldMatch() throws Exception {
+        SearchQuery query = new SearchQuery();
+        query.andCriteria(SearchQuery.flagIsUnSet(Flag.DRAFT));
+        Iterator<Long> result = index.search(null, mailbox, query);
+        assertThat(result).containsExactly(1L, 2L, 3L);
     }
     
-    
     @Test
-    public void testSearchInternalDateBefore() throws Exception {
-        SearchQuery q2 = new SearchQuery();
+    public void internalDateBeforeShouldMatch() throws Exception {
+        SearchQuery query = new SearchQuery();
         Calendar cal = Calendar.getInstance();
         cal.setTime(new Date());
-        q2.andCriteria(SearchQuery.internalDateBefore(cal.getTime(), DateResolution.Day));
+        query.andCriteria(SearchQuery.internalDateBefore(cal.getTime(), DateResolution.Day));
         
-        Iterator<Long> it4 = index.search(null, mailbox, q2);
-        assertEquals(2L, it4.next().longValue());
-        assertFalse(it4.hasNext());
+        Iterator<Long> result = index.search(null, mailbox, query);
+        assertThat(result).containsExactly(2L);
     }
     
     
     @Test
-    public void testSearchInternalDateAfter() throws Exception {
-        SearchQuery q2 = new SearchQuery();
+    public void internalDateAfterShouldMatch() throws Exception {
+        SearchQuery query = new SearchQuery();
         Calendar cal = Calendar.getInstance();
         cal.setTime(new Date());
-        q2.andCriteria(SearchQuery.internalDateAfter(cal.getTime(), DateResolution.Day));
-        Iterator<Long> it4 = index.search(null, mailbox, q2);
-        assertEquals(3L, it4.next().longValue());
-        assertFalse(it4.hasNext());
+        query.andCriteria(SearchQuery.internalDateAfter(cal.getTime(), DateResolution.Day));
+        Iterator<Long> result = index.search(null, mailbox, query);
+        assertThat(result).containsExactly(3L);
     }
     
     
     
     @Test
-    public void testSearchInternalDateOn() throws Exception {
-        SearchQuery q2 = new SearchQuery();
+    public void internalDateOnShouldMatch() throws Exception {
+        SearchQuery query = new SearchQuery();
         Calendar cal = Calendar.getInstance();
         cal.setTime(new Date());
-        q2.andCriteria(SearchQuery.internalDateOn(cal.getTime(), DateResolution.Day));
-        Iterator<Long> it4 = index.search(null, mailbox, q2);
-        assertEquals(1L, it4.next().longValue());
-        assertFalse(it4.hasNext());
+        query.andCriteria(SearchQuery.internalDateOn(cal.getTime(), DateResolution.Day));
+        Iterator<Long> result = index.search(null, mailbox, query);
+        assertThat(result).containsExactly(1L);
     }
     
     @Test
-    public void testSearchUidMatch() throws Exception {
-        SearchQuery q2 = new SearchQuery();
+    public void uidSearchShouldMatch() throws Exception {
+        SearchQuery query = new SearchQuery();
         Calendar cal = Calendar.getInstance();
         cal.setTime(new Date());
-        q2.andCriteria(SearchQuery.uid(new SearchQuery.NumericRange[] {new SearchQuery.NumericRange(1)}));
-        Iterator<Long> it4 = index.search(null, mailbox, q2);
-        assertEquals(1L, it4.next().longValue());
-        assertFalse(it4.hasNext());
+        query.andCriteria(SearchQuery.uid(new SearchQuery.NumericRange[] {new SearchQuery.NumericRange(1)}));
+        Iterator<Long> result = index.search(null, mailbox, query);
+        assertThat(result).containsExactly(1L);
     }
     
-    
     @Test
-    public void testSearchUidRange() throws Exception {
-        SearchQuery q2 = new SearchQuery();
+    public void uidRangeSearchShouldMatch() throws Exception {
+        SearchQuery query = new SearchQuery();
         Calendar cal = Calendar.getInstance();
         cal.setTime(new Date());
-        q2.andCriteria(SearchQuery.uid(new SearchQuery.NumericRange[] {new SearchQuery.NumericRange(1), new SearchQuery.NumericRange(2,3)}));
-        Iterator<Long> it4 = index.search(null, mailbox, q2);
-        assertEquals(1L, it4.next().longValue());
-        assertEquals(2L, it4.next().longValue());
-        assertEquals(3L, it4.next().longValue());
-
-        assertFalse(it4.hasNext());
+        query.andCriteria(SearchQuery.uid(new SearchQuery.NumericRange[] {new SearchQuery.NumericRange(1), new SearchQuery.NumericRange(2,3)}));
+        Iterator<Long> result = index.search(null, mailbox, query);
+        assertThat(result).containsExactly(1L, 2L, 3L);
     }
     
-    
-    
     @Test
-    public void testSearchSizeEquals() throws Exception {
-        SearchQuery q2 = new SearchQuery();
-        q2.andCriteria(SearchQuery.sizeEquals(200));
-        Iterator<Long> it4 = index.search(null, mailbox, q2);
-        assertEquals(1L, it4.next().longValue());
-
-        assertFalse(it4.hasNext());
+    public void sizeEqualsShouldMatch() throws Exception {
+        SearchQuery query = new SearchQuery();
+        query.andCriteria(SearchQuery.sizeEquals(200));
+        Iterator<Long> result = index.search(null, mailbox, query);
+        assertThat(result).containsExactly(1L);
     }
     
     @Test
-    public void testSearchSizeLessThan() throws Exception {
-        SearchQuery q2 = new SearchQuery();
-        q2.andCriteria(SearchQuery.sizeLessThan(200));
-        Iterator<Long> it4 = index.search(null, mailbox, q2);
-        assertEquals(2L, it4.next().longValue());
-        assertEquals(3L, it4.next().longValue());
-
-        assertFalse(it4.hasNext());
+    public void sizeLessThanShouldMatch() throws Exception {
+        SearchQuery query = new SearchQuery();
+        query.andCriteria(SearchQuery.sizeLessThan(200));
+        Iterator<Long> result = index.search(null, mailbox, query);
+        assertThat(result).containsExactly(2L, 3L);
     }
     
-    
     @Test
-    public void testSearchSizeGreaterThan() throws Exception {
-        SearchQuery q2 = new SearchQuery();
-        q2.andCriteria(SearchQuery.sizeGreaterThan(6));
-        Iterator<Long> it4 = index.search(null, mailbox, q2);
-        assertEquals(1L, it4.next().longValue());
-        assertEquals(2L, it4.next().longValue());
-        assertEquals(3L, it4.next().longValue());
-
-        assertFalse(it4.hasNext());
+    public void sizeGreaterThanShouldMatch() throws Exception {
+        SearchQuery query = new SearchQuery();
+        query.andCriteria(SearchQuery.sizeGreaterThan(6));
+        Iterator<Long> result = index.search(null, mailbox, query);
+        assertThat(result).containsExactly(1L, 2L, 3L);
     }
     
     @Test
-    public void testSortUid() throws Exception {
-        SearchQuery q2 = new SearchQuery();
-        q2.andCriteria(SearchQuery.all());
-        Iterator<Long> it4 = index.search(null, mailbox, q2);
-        assertEquals(1L, it4.next().longValue());
-        assertEquals(2L, it4.next().longValue());
-        assertEquals(3L, it4.next().longValue());
-        assertFalse(it4.hasNext());
+    public void uidShouldBeSorted() throws Exception {
+        SearchQuery query = new SearchQuery();
+        query.andCriteria(SearchQuery.all());
+        Iterator<Long> result = index.search(null, mailbox, query);
+        assertThat(result).containsExactly(1L, 2L, 3L);
     }
     
     @Test
-    public void testSortUidReverse() throws Exception {
-        SearchQuery q2 = new SearchQuery();
-        q2.setSorts(Arrays.asList(new SearchQuery.Sort(SortClause.Uid, true)));
-        q2.andCriteria(SearchQuery.all());
-        Iterator<Long> it4 = index.search(null, mailbox, q2);
-        assertEquals(3L, it4.next().longValue());
-        assertEquals(2L, it4.next().longValue());
-        assertEquals(1L, it4.next().longValue());
-        assertFalse(it4.hasNext());
+    public void uidReverseSortShouldReturnWellOrderedResults() throws Exception {
+        SearchQuery query = new SearchQuery();
+        query.setSorts(Arrays.asList(new SearchQuery.Sort(SortClause.Uid, true)));
+        query.andCriteria(SearchQuery.all());
+        Iterator<Long> result = index.search(null, mailbox, query);
+        assertThat(result).containsExactly(3L, 2L, 1L);
     }
     
     @Test
-    public void testSortSentDate() throws Exception {
-        SearchQuery q2 = new SearchQuery();
-        q2.andCriteria(SearchQuery.all());
-        q2.setSorts(Arrays.asList(new SearchQuery.Sort(SortClause.SentDate, false)));
-
-        Iterator<Long> it4 = index.search(null, mailbox, q2);
-        assertEquals(2L, it4.next().longValue());
-        assertEquals(3L, it4.next().longValue());
-        assertEquals(1L, it4.next().longValue());
-
-        assertFalse(it4.hasNext());
+    public void sortOnSentDateShouldReturnWellOrderedResults() throws Exception {
+        SearchQuery query = new SearchQuery();
+        query.andCriteria(SearchQuery.all());
+        query.setSorts(Arrays.asList(new SearchQuery.Sort(SortClause.SentDate, false)));
+        Iterator<Long> result = index.search(null, mailbox, query);
+        assertThat(result).containsExactly(2L, 3L, 1L);
     }
     
     @Test
-    public void testSortSentDateReverse() throws Exception {
-        SearchQuery q2 = new SearchQuery();
-        q2.andCriteria(SearchQuery.all());
-        q2.setSorts(Arrays.asList(new SearchQuery.Sort(SortClause.SentDate, true)));
-
-        Iterator<Long> it4 = index.search(null, mailbox, q2);
-        assertEquals(1L, it4.next().longValue());
-        assertEquals(3L, it4.next().longValue());
-        assertEquals(2L, it4.next().longValue());
-        assertFalse(it4.hasNext());
+    public void reverseSortOnSentDateShouldReturnWellOrderedResults() throws Exception {
+        SearchQuery query = new SearchQuery();
+        query.andCriteria(SearchQuery.all());
+        query.setSorts(Arrays.asList(new SearchQuery.Sort(SortClause.SentDate, true)));
+        Iterator<Long> result = index.search(null, mailbox, query);
+        assertThat(result).containsExactly(1L, 3L, 2L);
     }
-    @Test
-    public void testSortBaseSubject() throws Exception {
-        SearchQuery q2 = new SearchQuery();
-        q2.andCriteria(SearchQuery.all());
-        q2.setSorts(Arrays.asList(new SearchQuery.Sort(SortClause.BaseSubject, false)));
 
-        Iterator<Long> it4 = index.search(null, mailbox, q2);
-        assertEquals(2L, it4.next().longValue());
-        assertEquals(1L, it4.next().longValue());
-        assertEquals(3L, it4.next().longValue());
-
-        assertFalse(it4.hasNext());
+    @Test
+    public void sortOnSubjectShouldReturnWellOrderedResults() throws Exception {
+        SearchQuery query = new SearchQuery();
+        query.andCriteria(SearchQuery.all());
+        query.setSorts(Arrays.asList(new SearchQuery.Sort(SortClause.BaseSubject, false)));
+        Iterator<Long> result = index.search(null, mailbox, query);
+        assertThat(result).containsExactly(2L, 1L, 3L);
     }
     
     @Test
-    public void testSortBaseSubjectReverse() throws Exception {
-        SearchQuery q2 = new SearchQuery();
-        q2.andCriteria(SearchQuery.all());
-        q2.setSorts(Arrays.asList(new SearchQuery.Sort(SortClause.BaseSubject, true)));
-
-        Iterator<Long> it4 = index.search(null, mailbox, q2);
-        assertEquals(3L, it4.next().longValue());
-        assertEquals(1L, it4.next().longValue());
-        assertEquals(2L, it4.next().longValue());
-        assertFalse(it4.hasNext());
+    public void reverseSortOnSubjectShouldReturnWellOrderedResults() throws Exception {
+        SearchQuery query = new SearchQuery();
+        query.andCriteria(SearchQuery.all());
+        query.setSorts(Arrays.asList(new SearchQuery.Sort(SortClause.BaseSubject, true)));
+        Iterator<Long> result = index.search(null, mailbox, query);
+        assertThat(result).containsExactly(3L, 1L, 2L);
     }
     
     @Test
-    public void testSortMailboxFrom() throws Exception {
-        SearchQuery q2 = new SearchQuery();
-        q2.andCriteria(SearchQuery.all());
-        q2.setSorts(Arrays.asList(new SearchQuery.Sort(SortClause.MailboxFrom, false)));
-
-        Iterator<Long> it4 = index.search(null, mailbox, q2);
-        assertEquals(2L, it4.next().longValue());
-        assertEquals(3L, it4.next().longValue());
-        assertEquals(1L, it4.next().longValue());
-
-        assertFalse(it4.hasNext());
+    public void sortOnMailboxFromShouldReturnWellOrderedResults() throws Exception {
+        SearchQuery query = new SearchQuery();
+        query.andCriteria(SearchQuery.all());
+        query.setSorts(Arrays.asList(new SearchQuery.Sort(SortClause.MailboxFrom, false)));
+        Iterator<Long> result = index.search(null, mailbox, query);
+        assertThat(result).containsExactly(2L, 3L, 1L);
     }
     
     @Test
-    public void  testSortMailboxFromReverse() throws Exception {
-        SearchQuery q2 = new SearchQuery();
-        q2.andCriteria(SearchQuery.all());
-        q2.setSorts(Arrays.asList(new SearchQuery.Sort(SortClause.MailboxFrom, true)));
-        Iterator<Long> it4 = index.search(null, mailbox, q2);
-        assertEquals(1L, it4.next().longValue());
-        assertEquals(3L, it4.next().longValue());
-        assertEquals(2L, it4.next().longValue());
-
-        assertFalse(it4.hasNext());
+    public void reverseSortOnMailboxFromShouldReturnWellOrderedResults() throws Exception {
+        SearchQuery query = new SearchQuery();
+        query.andCriteria(SearchQuery.all());
+        query.setSorts(Arrays.asList(new SearchQuery.Sort(SortClause.MailboxFrom, true)));
+        Iterator<Long> result = index.search(null, mailbox, query);
+        assertThat(result).containsExactly(1L, 3L, 2L);
     }
     
-    
     @Test
-    public void testSortMailboxCc() throws Exception {
-        SearchQuery q2 = new SearchQuery();
-        q2.andCriteria(SearchQuery.all());
-        q2.setSorts(Arrays.asList(new SearchQuery.Sort(SortClause.MailboxCc, false)));
-
-        Iterator<Long> it4 = index.search(null, mailbox, q2);
-        assertEquals(1L, it4.next().longValue());
-        assertEquals(2L, it4.next().longValue());
-        assertEquals(3L, it4.next().longValue());
-
-        assertFalse(it4.hasNext());
+    public void sortOnMailboxCCShouldReturnWellOrderedResults() throws Exception {
+        SearchQuery query = new SearchQuery();
+        query.andCriteria(SearchQuery.all());
+        query.setSorts(Arrays.asList(new SearchQuery.Sort(SortClause.MailboxCc, false)));
+        Iterator<Long> result = index.search(null, mailbox, query);
+        assertThat(result).containsExactly(1L, 2L, 3L);
     }
     
     @Test
-    public void  testSortMailboxCcReverse() throws Exception {
-        SearchQuery q2 = new SearchQuery();
-        q2.andCriteria(SearchQuery.all());
-        q2.setSorts(Arrays.asList(new SearchQuery.Sort(SortClause.MailboxCc, true)));
-
-        Iterator<Long> it4 = index.search(null, mailbox, q2);
-        assertEquals(2L, it4.next().longValue());
-        assertEquals(3L, it4.next().longValue());
-
-        assertEquals(1L, it4.next().longValue());
-
-        assertFalse(it4.hasNext());
+    public void reverseSortOnMailboxCCShouldReturnWellOrderedResults() throws Exception {
+        SearchQuery query = new SearchQuery();
+        query.andCriteria(SearchQuery.all());
+        query.setSorts(Arrays.asList(new SearchQuery.Sort(SortClause.MailboxCc, true)));
+        Iterator<Long> result = index.search(null, mailbox, query);
+        assertThat(result).containsExactly(2L, 3L, 1L);
     }
     
     @Test
-    public void testSortMailboxTo() throws Exception {
-        SearchQuery q2 = new SearchQuery();
-        q2.andCriteria(SearchQuery.all());
-        q2.setSorts(Arrays.asList(new SearchQuery.Sort(SortClause.MailboxTo, false)));
-
-        Iterator<Long> it4 = index.search(null, mailbox, q2);
-
-        assertEquals(3L, it4.next().longValue());
-        assertEquals(1L, it4.next().longValue());
-        assertEquals(2L, it4.next().longValue());
-
-        assertFalse(it4.hasNext());
+    public void sortOnMailboxToShouldReturnWellOrderedResults() throws Exception {
+        SearchQuery query = new SearchQuery();
+        query.andCriteria(SearchQuery.all());
+        query.setSorts(Arrays.asList(new SearchQuery.Sort(SortClause.MailboxTo, false)));
+        Iterator<Long> result = index.search(null, mailbox, query);
+        assertThat(result).containsExactly(3L, 1L, 2L);
     }
     
     @Test
-    public void  testSortMailboxToReverse() throws Exception {
-        SearchQuery q2 = new SearchQuery();
-        q2.andCriteria(SearchQuery.all());
-        q2.setSorts(Arrays.asList(new SearchQuery.Sort(SortClause.MailboxTo, true)));
-
-        Iterator<Long> it4 = index.search(null, mailbox, q2);
-        assertEquals(2L, it4.next().longValue());
-        assertEquals(1L, it4.next().longValue());
-        assertEquals(3L, it4.next().longValue());
-
-        assertFalse(it4.hasNext());
+    public void reverseSortOnMailboxToShouldReturnWellOrderedResults() throws Exception {
+        SearchQuery query = new SearchQuery();
+        query.andCriteria(SearchQuery.all());
+        query.setSorts(Arrays.asList(new SearchQuery.Sort(SortClause.MailboxTo, true)));
+        Iterator<Long> result = index.search(null, mailbox, query);
+        assertThat(result).containsExactly(2L, 1L, 3L);
     }
     
     @Test
-    public void testSortDisplayTo() throws Exception {
-        SearchQuery q2 = new SearchQuery();
-        q2.andCriteria(SearchQuery.all());
-        q2.setSorts(Arrays.asList(new SearchQuery.Sort(SortClause.DisplayTo, false)));
-
-        Iterator<Long> it4 = index.search(null, mailbox, q2);
-
-        assertEquals(3L, it4.next().longValue());
-        assertEquals(1L, it4.next().longValue());
-        assertEquals(2L, it4.next().longValue());
-
-        assertFalse(it4.hasNext());
+    public void sortOnDisplayToShouldReturnWellOrderedResults() throws Exception {
+        SearchQuery query = new SearchQuery();
+        query.andCriteria(SearchQuery.all());
+        query.setSorts(Arrays.asList(new SearchQuery.Sort(SortClause.DisplayTo, false)));
+        Iterator<Long> result = index.search(null, mailbox, query);
+        assertThat(result).containsExactly(3L, 1L, 2L);
     }
     
     @Test
-    public void  testSortDisplayToReverse() throws Exception {
-        SearchQuery q2 = new SearchQuery();
-        q2.andCriteria(SearchQuery.all());
-        q2.setSorts(Arrays.asList(new SearchQuery.Sort(SortClause.DisplayTo, true)));
-
-        Iterator<Long> it4 = index.search(null, mailbox, q2);
-        assertEquals(2L, it4.next().longValue());
-        assertEquals(1L, it4.next().longValue());
-        assertEquals(3L, it4.next().longValue());
-
-        assertFalse(it4.hasNext());
+    public void reverseSortOnDisplayToShouldReturnWellOrderedResults() throws Exception {
+        SearchQuery query = new SearchQuery();
+        query.andCriteria(SearchQuery.all());
+        query.setSorts(Arrays.asList(new SearchQuery.Sort(SortClause.DisplayTo, true)));
+        Iterator<Long> result = index.search(null, mailbox, query);
+        assertThat(result).containsExactly(2L, 1L, 3L);
     }
     
-    
     @Test
-    public void testSortDisplayFrom() throws Exception {
-        SearchQuery q2 = new SearchQuery();
-        q2.andCriteria(SearchQuery.all());
-        q2.setSorts(Arrays.asList(new SearchQuery.Sort(SortClause.DisplayFrom, false)));
-
-        Iterator<Long> it4 = index.search(null, mailbox, q2);
-
-        assertEquals(2L, it4.next().longValue());
-        assertEquals(3L, it4.next().longValue());
-        assertEquals(1L, it4.next().longValue());
-
-        assertFalse(it4.hasNext());
+    public void sortOnDisplayFromShouldReturnWellOrderedResults() throws Exception {
+        SearchQuery query = new SearchQuery();
+        query.andCriteria(SearchQuery.all());
+        query.setSorts(Arrays.asList(new SearchQuery.Sort(SortClause.DisplayFrom, false)));
+        Iterator<Long> result = index.search(null, mailbox, query);
+        assertThat(result).containsExactly(2L, 3L, 1L);
     }
     
     @Test
-    public void  testSortDisplayFromReverse() throws Exception {
-       
-        SearchQuery q2 = new SearchQuery();
-        q2.andCriteria(SearchQuery.all());
-        q2.setSorts(Arrays.asList(new SearchQuery.Sort(SortClause.DisplayFrom, true)));
-
-        Iterator<Long> it4 = index.search(null, mailbox, q2);
-        assertEquals(1L, it4.next().longValue());
-        assertEquals(3L, it4.next().longValue());
-        assertEquals(2L, it4.next().longValue());
-
-        assertFalse(it4.hasNext());
+    public void reverseSortOnDisplayFromShouldReturnWellOrderedResults() throws Exception {
+        SearchQuery query = new SearchQuery();
+        query.andCriteria(SearchQuery.all());
+        query.setSorts(Arrays.asList(new SearchQuery.Sort(SortClause.DisplayFrom, true)));
+        Iterator<Long> result = index.search(null, mailbox, query);
+        assertThat(result).containsExactly(1L, 3L, 2L);
     }
     
     @Test
-    public void testSortArrival() throws Exception {
-        SearchQuery q2 = new SearchQuery();
-        q2.andCriteria(SearchQuery.all());
-        q2.setSorts(Arrays.asList(new SearchQuery.Sort(SortClause.Arrival, false)));
-
-        Iterator<Long> it4 = index.search(null, mailbox, q2);
-        assertEquals(2L, it4.next().longValue());
-        assertEquals(1L, it4.next().longValue());
-        assertEquals(3L, it4.next().longValue());
-
-        assertFalse(it4.hasNext());
+    public void sortOnArrivalDateShouldReturnWellOrderedResults() throws Exception {
+        SearchQuery query = new SearchQuery();
+        query.andCriteria(SearchQuery.all());
+        query.setSorts(Arrays.asList(new SearchQuery.Sort(SortClause.Arrival, false)));
+        Iterator<Long> result = index.search(null, mailbox, query);
+        assertThat(result).containsExactly(2L, 1L, 3L);
     }
     
     @Test
-    public void testSortArrivalReverse() throws Exception {
-        SearchQuery q2 = new SearchQuery();
-        q2.andCriteria(SearchQuery.all());
-        q2.setSorts(Arrays.asList(new SearchQuery.Sort(SortClause.Arrival, true)));
-
-        Iterator<Long> it4 = index.search(null, mailbox, q2);
-        assertEquals(3L, it4.next().longValue());
-        assertEquals(1L, it4.next().longValue());
-        assertEquals(2L, it4.next().longValue());
-        assertFalse(it4.hasNext());
+    public void reverseSortOnArrivalDateShouldReturnWellOrderedResults() throws Exception {
+        SearchQuery query = new SearchQuery();
+        query.andCriteria(SearchQuery.all());
+        query.setSorts(Arrays.asList(new SearchQuery.Sort(SortClause.Arrival, true)));
+        Iterator<Long> result = index.search(null, mailbox, query);
+        assertThat(result).containsExactly(3L, 1L, 2L);
     }
+    
     @Test
-    public void testSortSize() throws Exception {
-        SearchQuery q2 = new SearchQuery();
-        q2.andCriteria(SearchQuery.all());
-        q2.setSorts(Arrays.asList(new SearchQuery.Sort(SortClause.Size, false)));
-
-        Iterator<Long> it4 = index.search(null, mailbox, q2);
-        assertEquals(2L, it4.next().longValue());
-        assertEquals(3L, it4.next().longValue());
-        assertEquals(1L, it4.next().longValue());
-
-        assertFalse(it4.hasNext());
+    public void sortOnSizeShouldReturnWellOrderedResults() throws Exception {
+        SearchQuery query = new SearchQuery();
+        query.andCriteria(SearchQuery.all());
+        query.setSorts(Arrays.asList(new SearchQuery.Sort(SortClause.Size, false)));
+        Iterator<Long> result = index.search(null, mailbox, query);
+        assertThat(result).containsExactly(2L, 3L, 1L);
     }
     
     @Test
-    public void testSortSizeReverse() throws Exception {
-        SearchQuery q2 = new SearchQuery();
-        q2.andCriteria(SearchQuery.all());
-        q2.setSorts(Arrays.asList(new SearchQuery.Sort(SortClause.Size, true)));
-
-        Iterator<Long> it4 = index.search(null, mailbox, q2);
-        assertEquals(1L, it4.next().longValue());
-        assertEquals(2L, it4.next().longValue());
-        assertEquals(3L, it4.next().longValue());
-        assertFalse(it4.hasNext());
+    public void reverseSortOnSizeShouldReturnWellOrderedResults() throws Exception {
+        SearchQuery query = new SearchQuery();
+        query.andCriteria(SearchQuery.all());
+        query.setSorts(Arrays.asList(new SearchQuery.Sort(SortClause.Size, true)));
+        Iterator<Long> result = index.search(null, mailbox, query);
+        assertThat(result).containsExactly(1L, 2L, 3L);
     }
     
     @Test
-    public void testNot() throws Exception {
-        SearchQuery q2 = new SearchQuery();
-        q2.andCriteria(SearchQuery.not(SearchQuery.uid(new SearchQuery.NumericRange[] { new SearchQuery.NumericRange(1)})));
-        Iterator<Long> it4 = index.search(null, mailbox, q2);
-        assertEquals(2L, it4.next().longValue());
-        assertEquals(3L, it4.next().longValue());
-        assertFalse(it4.hasNext());
+    public void notOperatorShouldReverseMatching() throws Exception {
+        SearchQuery query = new SearchQuery();
+        query.andCriteria(SearchQuery.not(SearchQuery.uid(new SearchQuery.NumericRange[] { new SearchQuery.NumericRange(1)})));
+        Iterator<Long> result = index.search(null, mailbox, query);
+        assertThat(result).containsExactly(2L, 3L);
     }
     
     private final class SimpleMailbox implements Mailbox {
@@ -742,17 +596,11 @@ public class LuceneMailboxMessageSearchIndexTest {
             return 0;
         }
 
-        /* (non-Javadoc)
-         * @see org.apache.james.mailbox.store.mail.model.Mailbox#getACL()
-         */
         @Override
         public MailboxACL getACL() {
             return SimpleMailboxACL.OWNER_FULL_ACL;
         }
 
-        /* (non-Javadoc)
-         * @see org.apache.james.mailbox.store.mail.model.Mailbox#setACL(org.apache.james.mailbox.MailboxACL)
-         */
         @Override
         public void setACL(MailboxACL acl) {
             throw new UnsupportedOperationException("Not supported");


---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org