コード例 #1
0
ファイル: HeaderSetTests.cs プロジェクト: zamis/MailKit
        public void TestArgumentExceptions()
        {
            var headers = new HeaderSet();
            var array   = new string[10];

            Assert.Throws <ArgumentOutOfRangeException> (() => headers.Add(HeaderId.Unknown));
            Assert.Throws <ArgumentNullException> (() => headers.AddRange((IEnumerable <HeaderId>)null));
            Assert.Throws <ArgumentException> (() => headers.AddRange(new HeaderId[] { HeaderId.Unknown }));

            Assert.Throws <ArgumentNullException> (() => headers.Add(null));
            Assert.Throws <ArgumentException> (() => headers.Add(string.Empty));
            Assert.Throws <ArgumentException> (() => headers.Add("This is invalid"));
            Assert.Throws <ArgumentNullException> (() => headers.AddRange((IEnumerable <string>)null));
            Assert.Throws <ArgumentException> (() => headers.AddRange(new string[] { "This is invalid" }));

            Assert.Throws <ArgumentNullException> (() => ((ICollection <string>)headers).Add(null));
            Assert.Throws <ArgumentException> (() => ((ICollection <string>)headers).Add(string.Empty));
            Assert.Throws <ArgumentException> (() => ((ICollection <string>)headers).Add("This is invalid"));

            Assert.Throws <ArgumentNullException> (() => headers.CopyTo(null, 0));
            Assert.Throws <ArgumentOutOfRangeException> (() => headers.CopyTo(array, -1));
            Assert.Throws <ArgumentException> (() => headers.CopyTo(array, 11));

            Assert.Throws <ArgumentOutOfRangeException> (() => headers.Contains(HeaderId.Unknown));
            Assert.Throws <ArgumentNullException> (() => headers.Contains(null));

            Assert.Throws <ArgumentOutOfRangeException> (() => headers.Remove(HeaderId.Unknown));
            Assert.Throws <ArgumentNullException> (() => headers.Remove(null));
        }
コード例 #2
0
ファイル: HeaderSetTests.cs プロジェクト: zamis/MailKit
        public void TestBasicFunctionality()
        {
            var headers = new HeaderSet();

            Assert.IsTrue(headers.Add("From"), "Adding From");
            Assert.IsFalse(headers.Add("From"), "Adding From duplicate #1");
            Assert.IsFalse(headers.Add("FROM"), "Adding From duplicate #2");
            Assert.IsFalse(headers.Add("fRoM"), "Adding From duplicate #3");
            Assert.IsFalse(headers.Add(HeaderId.From), "Adding From duplicate #4");
            Assert.AreEqual(1, headers.Count, "Count #1");

            Assert.IsTrue(headers.Remove(HeaderId.From), "Removing From");
            Assert.IsFalse(headers.Remove("From"), "Removing From duplicate #1");
            Assert.IsFalse(headers.Remove(HeaderId.From), "Removing From duplicate #2");
            Assert.AreEqual(0, headers.Count, "Count #2");

            headers.AddRange(new HeaderId[] { HeaderId.Sender, HeaderId.From, HeaderId.ReplyTo });
            Assert.AreEqual(3, headers.Count, "Count #3");

            headers.AddRange(new string[] { "to", "cc", "bcc" });
            Assert.AreEqual(6, headers.Count, "Count #4");

            Assert.IsTrue(headers.Contains(HeaderId.To), "Contains #1");
            Assert.IsTrue(headers.Contains("reply-to"), "Contains #2");

            var results = new string[headers.Count];

            headers.CopyTo(results, 0);
            Array.Sort(results);
            Assert.AreEqual("BCC", results[0]);
            Assert.AreEqual("CC", results[1]);
            Assert.AreEqual("FROM", results[2]);
            Assert.AreEqual("REPLY-TO", results[3]);
            Assert.AreEqual("SENDER", results[4]);
            Assert.AreEqual("TO", results[5]);

            foreach (var header in headers)
            {
                Assert.IsTrue(results.Contains(header));
            }

            foreach (string header in ((IEnumerable)headers))
            {
                Assert.IsTrue(results.Contains(header));
            }

            headers.Clear();
            Assert.AreEqual(0, headers.Count, "Count after Clear");
        }
コード例 #3
0
 public Unsubscriber(IInterceptDispatcher dispatcher, HeaderSet headers, Action <InterceptArgs> callback)
 {
     _dispatcher = dispatcher;
     _headers    = headers;
     _callback   = callback;
 }
コード例 #4
0
 /// <summary>
 /// Registers a callback that is invoked when a packet with a matching header is intercepted.
 /// </summary>
 /// <param name="interceptor">The interceptor.</param>
 /// <param name="headers">Specifies which headers to intercept.</param>
 /// <param name="callback">The callback to invoke when a message is intercepted.</param>
 public static void OnIntercept(this IInterceptor interceptor, HeaderSet headers, Action <InterceptArgs> callback)
 => interceptor.Dispatcher.AddIntercept(headers, callback, interceptor.Client);
コード例 #5
0
 /// <summary>
 /// Asynchronously captures a packet with any of the specified headers.
 /// </summary>
 public static Task <IPacket> ReceiveAsync(this IInterceptor interceptor, ITuple headers, int timeout = -1, bool block = false, CancellationToken cancellationToken = default)
 => ReceiveAsync(interceptor, HeaderSet.FromTuple(headers), timeout, block, cancellationToken);
コード例 #6
0
 /// <summary>
 /// Asynchronously receives a packet with any of the specified headers.
 /// </summary>
 public static Task <IPacket> ReceiveAsync(this IInterceptor interceptor, HeaderSet headers, int timeout = -1, bool block = false, CancellationToken cancellationToken = default)
 => new CaptureMessageTask(interceptor, headers, block).ExecuteAsync(timeout, cancellationToken);