コード例 #1
0
        private static async Task AssertMessage(
            string inputMessage,
            string expectedMessage,
            string inputSender,
            string expectedSender)
        {
            expectedMessage = expectedMessage ?? inputMessage;
            expectedSender  = expectedSender ?? inputSender;
            Stream newStream = null;

            try
            {
                var stream = new MemoryStream(Encoding.ASCII.GetBytes(
                                                  inputMessage));
                var headers = await MailUtilities.ParseHeadersAsync(stream);

                string newSender;

                (newStream, newSender) =
                    await MailDispatcher.ReplaceSenderAsync(headers, stream, inputSender, CancellationToken.None);

                if (inputMessage == expectedMessage && inputSender == expectedSender)
                {
                    Assert.Same(stream, newStream);
                }
                else
                {
                    Assert.NotSame(stream, newStream);
                    Assert.Throws <ObjectDisposedException>(() => stream.ReadByte());
                }

                Assert.Equal(0, newStream.Position);
                Assert.Equal(expectedSender, newSender);
                using (var reader = new StreamReader(newStream, Encoding.ASCII, false, 1024, true))
                {
                    Assert.Equal(expectedMessage, await reader.ReadToEndAsync());
                }
            }
            finally
            {
                newStream.Dispose();
            }
        }