private MailboxAnnotation readNextAnnotation(ImapRequestLineReader request) throws DecodingException { try { String key = request.atom(); String value = request.nstring(); return Optional.ofNullable(value) .map(transforMailboxAnnotation(key)) .orElse(MailboxAnnotation.nil(createAnnotationKey(key))); } catch (IllegalArgumentException e) { throw new DecodingException(HumanReadableText.ILLEGAL_ARGUMENTS, "The key is not valid: " + e.getMessage()); } }
@Test public void sizeOfNilAnnotationShouldBeZero() throws Exception { MailboxAnnotation mailboxAnnotation = MailboxAnnotation.nil(ANNOTATION_KEY); assertThat(mailboxAnnotation.size()).isEqualTo(0); }
@Test public void isNilShouldReturnTrueForNilObject() throws Exception { MailboxAnnotation nilAnnotation = MailboxAnnotation.nil(ANNOTATION_KEY); assertThat(nilAnnotation.isNil()).isTrue(); }
@Test public void encodingShouldWellFormWhenNilReturnedAnnotation() throws Exception { AnnotationResponse response = new AnnotationResponse("INBOX", ImmutableList.of(MailboxAnnotation.nil(PRIVATE_KEY))); encoder.encode(response, composer, imapSession); assertThat(byteImapResponseWriter.getString()).isEqualTo("* METADATA \"INBOX\" ()\r\n"); } }
@Test public void nilInstanceShouldReturnAbsentValue() throws Exception { MailboxAnnotation annotation = MailboxAnnotation.nil(ANNOTATION_KEY); assertThat(annotation.getValue()).isEmpty(); }