@Test public void testAllNumbersSequence() throws Exception { IdRange[] range = { new IdRange(2), new IdRange(4), new IdRange(9), new IdRange(16), new IdRange(25), new IdRange(36), new IdRange(49), new IdRange(64), new IdRange(81), new IdRange(100) }; checkSequence("2,4,9,16,25,36,49,64,81,100", IdRange.mergeRanges(Arrays.asList(range)).toArray(new IdRange[0])); }
public static Input sequence() { IdRange[] range = { new IdRange(100, Long.MAX_VALUE), new IdRange(110), new IdRange(200, 201), new IdRange(400, Long.MAX_VALUE) }; SearchKey key = SearchKey.buildSequenceSet(IdRange.mergeRanges(Arrays.asList(range)).toArray(new IdRange[0])); return new Input("*:100,110,200:201,400:*", key); }
public static Input sequence() { IdRange[] range = { new IdRange(100, Long.MAX_VALUE), new IdRange(110), new IdRange(200, 201), new IdRange(400, Long.MAX_VALUE) }; SearchKey key = SearchKey.buildSequenceSet(IdRange.mergeRanges(Arrays.asList(range)).toArray(new IdRange[0])); return new Input("*:100,110,200:201,400:*", key); }
public Input sequence() { IdRange[] range = { new IdRange(100, Long.MAX_VALUE), new IdRange(110), new IdRange(200, 201), new IdRange(400, Long.MAX_VALUE) }; SearchKey key = SearchKey.buildSequenceSet(IdRange.mergeRanges(Arrays.asList(range)).toArray(new IdRange[0])); return new Input("*:100,110,200:201,400:*", key); }
@Test public void testMerge3() { IdRange r = new IdRange(0, 10); IdRange r2 = new IdRange(1, 4); IdRange r3 = new IdRange(10, 15); List<IdRange> ranges = new ArrayList<>(); ranges.add(r); ranges.add(r2); ranges.add(r3); List<IdRange> merged = IdRange.mergeRanges(ranges); assertThat(merged.size()).isEqualTo(1); Iterator<IdRange> rIt = merged.iterator(); checkIdRange(new IdRange(0, 15),rIt.next()); assertThat(rIt.hasNext()).isFalse(); }
@Test public void testShouldParseNotSequence() throws Exception { IdRange[] range = { new IdRange(100, Long.MAX_VALUE), new IdRange(110), new IdRange(200, 201), new IdRange(400, Long.MAX_VALUE) }; SearchKey notdKey = SearchKey.buildSequenceSet(IdRange.mergeRanges(Arrays.asList(range)).toArray(new IdRange[0])); SearchKey key = SearchKey.buildNot(notdKey); checkValid("NOT *:100,110,200:201,400:*\r\n", key); }
@Test public void testQuotaParsing() throws DecodingException { CopyCommandParser parser = new CopyCommandParser(); ImapCommand command = ImapCommand.anyStateCommand("Command"); String commandString = " 42:69 foo \n"; InputStream inputStream = new ByteArrayInputStream(commandString.getBytes()); ImapRequestStreamLineReader lineReader = new ImapRequestStreamLineReader(inputStream, null); CopyRequest request = (CopyRequest) parser.decode(command, lineReader, "A003", null); CopyRequest expected = new CopyRequest(command, new IdRange[] {new IdRange(42, 69)}, "foo", false, "A003"); assertThat(request).isEqualTo(expected); } }
private void checkSequenceSet(int number) throws Exception { IdRange[] range = { new IdRange(number) }; SearchKey key = SearchKey.buildSequenceSet(range); checkValid(number + "\r\n", key); }
@Test public void testQuotaParsing() throws DecodingException { MoveCommandParser parser = new MoveCommandParser(); ImapCommand command = ImapCommand.anyStateCommand("Command"); String commandString = " 42:69 foo \n"; InputStream inputStream = new ByteArrayInputStream(commandString.getBytes()); ImapRequestStreamLineReader lineReader = new ImapRequestStreamLineReader(inputStream, null); MoveRequest request = (MoveRequest) parser.decode(command, lineReader, "A003", null); MoveRequest expected = new MoveRequest(command, new IdRange[] {new IdRange(42, 69)}, "foo", false, "A003"); assertThat(request).isEqualTo(expected); } }
@Test public void processShouldNotHandleCopyRequests() { CopyRequest copyRequest = new CopyRequest(ImapCommand.anyStateCommand("Name"), new IdRange[] {new IdRange(4, 6)}, ImapConstants.INBOX_NAME, true, TAG); testee.process(copyRequest, mockResponder, mockImapSession); verify(mockNextProcessor).process(copyRequest, mockResponder, mockImapSession); verifyNoMoreInteractions(mockMailboxManager, mockResponder, mockNextProcessor); } }
@Test public void processShouldNotHandleMoveRequests() { MoveRequest moveRequest = new MoveRequest(ImapCommand.anyStateCommand("Name"), new IdRange[] {new IdRange(4, 6)}, ImapConstants.INBOX_NAME, true, TAG); testee.process(moveRequest, mockResponder, mockImapSession); verify(mockNextProcessor).process(moveRequest, mockResponder, mockImapSession); verifyNoMoreInteractions(mockMailboxManager, mockResponder, mockNextProcessor); }
@Test public void testShouldParseZeroAndLength() throws Exception { IdRange[] ranges = { new IdRange(1) }; FetchData data = new FetchData(); data.add(new BodyFetchElement("BODY[]", BodyFetchElement.CONTENT, null, null, new Long(0), new Long(100)), false); check("1 (BODY[]<0.100>)\r\n", ranges, false, data, "A01"); }
@Test public void testShouldParseNonZeroAndLength() throws Exception { IdRange[] ranges = { new IdRange(1) }; FetchData data = new FetchData(); data.add(new BodyFetchElement("BODY[]", BodyFetchElement.CONTENT, null, null, new Long(20), new Long(12342348)), false); check("1 (BODY[]<20.12342348>)\r\n", ranges, false, data, "A01"); }
@Test public void testSequenceSetMsnRange() throws Exception { expectsGetSelectedMailbox(); final IdRange[] ids = { new IdRange(1, 5) }; final SearchQuery.UidRange[] ranges = { new SearchQuery.UidRange(MessageUid.of(42), MessageUid.of(1729)) }; when(selectedMailbox.existsCount()).thenReturn(100L); when(selectedMailbox.uid(1)).thenReturn(Optional.of(MessageUid.of(42L))); when(selectedMailbox.uid(5)).thenReturn(Optional.of(MessageUid.of(1729L))); when(selectedMailbox.getFirstUid()).thenReturn(Optional.of(MessageUid.of(1L))); when(selectedMailbox.getLastUid()).thenReturn(Optional.of(MessageUid.MAX_VALUE)); allowUnsolicitedResponses(); check(SearchKey.buildSequenceSet(ids), SearchQuery.uid(ranges)); }
@Test public void testSequenceSetUpperUnlimited() throws Exception { expectsGetSelectedMailbox(); final IdRange[] ids = { new IdRange(1, Long.MAX_VALUE) }; final SearchQuery.UidRange[] ranges = { new SearchQuery.UidRange(MessageUid.of(42), MessageUid.of(100)) }; when(selectedMailbox.existsCount()).thenReturn(100L); when(selectedMailbox.uid(1)).thenReturn(Optional.of(MessageUid.of(42L))); when(selectedMailbox.getFirstUid()).thenReturn(Optional.of(MessageUid.of(1L))); when(selectedMailbox.getLastUid()).thenReturn(Optional.of(MessageUid.of(100L))); allowUnsolicitedResponses(); check(SearchKey.buildSequenceSet(ids), SearchQuery.uid(ranges)); }
@Test public void testSequenceSetSingleMsn() throws Exception { expectsGetSelectedMailbox(); final IdRange[] ids = { new IdRange(1) }; final SearchQuery.UidRange[] ranges = { new SearchQuery.UidRange(MessageUid.of(42)) }; when(selectedMailbox.existsCount()).thenReturn(1L); when(selectedMailbox.uid(1)).thenReturn(Optional.of(MessageUid.of(42L))); allowUnsolicitedResponses(); check(SearchKey.buildSequenceSet(ids), SearchQuery.uid(ranges)); }
@Test public void testShouldParseSilentDraftFlagged() throws Exception { IdRange[] ranges = { new IdRange(1) }; Flags flags = new Flags(); flags.add(Flags.Flag.DRAFT); flags.add(Flags.Flag.FLAGGED); check("1 FLAGS.SILENT (\\Draft \\Flagged)\r\n", ranges, true, null, flags, false, "A01"); }
@Test public void testShouldParseUnchangedSince() throws Exception { IdRange[] ranges = { new IdRange(1) }; Flags flags = new Flags(); flags.add(Flags.Flag.DRAFT); flags.add(Flags.Flag.FLAGGED); check("1 (UNCHANGEDSINCE 100) FLAGS.SILENT (\\Draft \\Flagged)\r\n", ranges, true, null, flags, false, "A01"); }