package com.fsck.k9.mail.store.imap;
import java.util.Collections;
import java.util.List;
import org.junit.Test;
import static com.fsck.k9.mail.store.imap.ImapResponseHelper.createImapResponse;
import static java.util.Arrays.asList;
import static java.util.Collections.singletonList;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
public class SearchResponseTest {
@Test
public void parse_withSearchResponse_shouldExtractNumbers() throws Exception {
List<ImapResponse> responses = asList(createImapResponse("* SEARCH 1 2 3"),
createImapResponse("* 23 EXISTS"),
createImapResponse("* SEARCH 4"));
SearchResponse result = SearchResponse.parse(responses);
assertNotNull(result);
assertEquals(asList(1L, 2L, 3L, 4L), result.getNumbers());
}
@Test
public void parse_withTaggedSearchResponse_shouldReturnEmptyList() throws Exception {
List<ImapResponse> responses = singletonList(createImapResponse("x SEARCH 1 2 3"));
SearchResponse result = SearchResponse.parse(responses);
assertNotNull(result);
assertEquals(Collections.emptyList(), result.getNumbers());
}
@Test
public void parse_withTooShortResponse_shouldReturnEmptyList() throws Exception {
List<ImapResponse> responses = singletonList(createImapResponse("* SEARCH"));
SearchResponse result = SearchResponse.parse(responses);
assertNotNull(result);
assertEquals(Collections.emptyList(), result.getNumbers());
}
@Test
public void parse_withoutSearchResponse_shouldReturnEmptyList() throws Exception {
List<ImapResponse> responses = singletonList(createImapResponse("* 23 EXPUNGE"));
SearchResponse result = SearchResponse.parse(responses);
assertNotNull(result);
assertEquals(Collections.emptyList(), result.getNumbers());
}
@Test
public void parse_withSearchResponseContainingInvalidNumber_shouldReturnEmptyList() throws Exception {
List<ImapResponse> responses = singletonList(createImapResponse("* SEARCH A"));
SearchResponse result = SearchResponse.parse(responses);
assertNotNull(result);
assertEquals(Collections.emptyList(), result.getNumbers());
}
}