public void AddAndRemoveEmails() { var emailDeletionService = new MockEmailDeletionService(); var emailFolder = new EmailFolder(emailDeletionService); Assert.IsFalse(emailFolder.Emails.Any()); var email1 = new Email(); emailFolder.AddEmail(email1); Assert.AreEqual(email1, emailFolder.Emails.Single()); var email2 = new Email(); emailFolder.AddEmail(email2); Assert.IsTrue(emailFolder.Emails.SequenceEqual(new[] { email1, email2 })); bool deleteEmailCalled = false; emailDeletionService.DeleteEmailAction = (folder, email) => { deleteEmailCalled = true; Assert.AreEqual(emailFolder, folder); Assert.AreEqual(email1, email); }; emailFolder.RemoveEmail(email1); Assert.IsTrue(deleteEmailCalled); }