public async Task GetMessages() { var messages = await service.GetMessagesAsync(YouMailService.InboxFolder, 96, DataFormat.MP3); Assert.IsTrue(messages != null, "Messages are null"); Assert.IsTrue(messages.LastUpdated <DateTime.Now + TimeSpan.FromSeconds(10) && messages.LastUpdated> DateTime.MinValue, $"Messages last updated: {messages.LastUpdated}, Now: {DateTime.Now}"); Assert.IsNotNull(messages.Data); // Validate that the messages are in creation order for (int i = 1; i < messages.Data.Length; i++) { Assert.IsTrue(messages.Data[i - 1].Created >= messages.Data[i].Created, "Messages are not sorted according to creation time"); } // Get one message var stream = await service.GetMessageDataAsync(messages.Data[0].MessageDataUrl); Assert.IsNotNull(stream); // Modify 2 messages int count = messages.Data.Length; int modified = Math.Min(count, 2); var messageIds = new long[modified]; // Change 2 messages. for (int i = 0; i < modified; i++) { messageIds[i] = messages.Data[i].Id; bool read = messages.Data[i].Status == MessageStatus.Read; await service.MarkMessageAsync(messageIds[i], !read, false); var message = await service.GetMessageAsync(messageIds[i], 200, DataFormat.MP3); Assert.AreNotEqual(read ? MessageStatus.Read : MessageStatus.New, message.Status); } var modifiedMessages = await service.GetUpdatedMessagesSinceAsync(messages.LastUpdated, 200, DataFormat.MP3); Assert.AreEqual(modified, modifiedMessages.Length); for (int i = 0; i < modifiedMessages.Length; i++) { bool found = false; for (int j = 0; j < modified; j++) { if (messageIds[j] == modifiedMessages[i].Id) { found = true; break; } } Assert.IsTrue(found); } // Find the messages from the inbox that have been updated since the last week var query = new YouMailMessageQuery(QueryType.GetMessagesSince) { FolderId = YouMailService.InboxFolder, IncludeFullName = true, UpdatedFrom = DateTime.Now - TimeSpan.FromDays(7) }; var lastWeekMessages = (await service.GetMessagesFromQueryAsync(query)).Data; int newMessages = 0; int readMessages = 0; foreach (var message in lastWeekMessages) { if (message.Status == MessageStatus.New) { newMessages++; } else if (message.Status == MessageStatus.Read) { readMessages++; } } // Get the messages based on a filter query.MessageStatusFilter = MessageStatus.New; var lastWeekNewMessages = (await service.GetMessagesFromQueryAsync(query)).Data; // Reset the page on the query query.Page = 0; query.MessageStatusFilter = MessageStatus.Read; var lastWeekReadMessages = (await service.GetMessagesFromQueryAsync(query)).Data; Assert.AreEqual(newMessages, lastWeekNewMessages.Length); Assert.AreEqual(readMessages, lastWeekReadMessages.Length); }