ExtensionMethod.NET Home of 880 C#, Visual Basic, F# and Javascript extension methods

Is

simple fluent assert for MSTest

Source

using System;
using System.Collections.Generic;
using System.Linq;

namespace Microsoft.VisualStudio.TestTools.UnitTesting
{
    public static class Test
    {
        /// <summary>IsNull</summary>
        public static void Is<T>(this T value)
        {
            Assert.IsNull(value);
        }

        public static void Is<T>(this T actual, T expected, string message = "")
        {
            Assert.AreEqual(expected, actual, message);
        }

        public static void Is<T>(this T actual, Func<T, bool> expected, string message = "")
        {
            Assert.IsTrue(expected(actual), message);
        }

        public static void Is<T>(this IEnumerable<T> actual, IEnumerable<T> expected, string message = "")
        {
            CollectionAssert.AreEqual(expected.ToArray(), actual.ToArray(), message);
        }

        public static void Is<T>(this IEnumerable<T> actual, params T[] expected)
        {
            Is(actual, expected.AsEnumerable());
        }

        public static void Is<T>(this IEnumerable<T> actual, IEnumerable<Func<T, bool>> expected)
        {
            var count = 0;
            foreach (var cond in actual.Zip(expected, (v, pred) => pred(v)))
            {
                Assert.IsTrue(cond, "Index = " + count++);
            }
        }

        public static void Is<T>(this IEnumerable<T> actual, params Func<T, bool>[] expected)
        {
            Is(actual, expected.AsEnumerable());
        }
    }
}

Example

[TestMethod]
public void Test()
{
    // actual.Is(expected)
    "foo".Is("bar");
    // actual.Is(x => bool(expected cond))
    "foobar".Is(s => s.StartsWith("f") && s.EndsWith("r"));
    // IEnumerable<T>.Is(params expected) (CollectionAssert)
    Enumerable.Range(1, 5).Is(1, 2, 3, 4, 5);
}

Author: neuecc

Submitted on: 18 okt. 2010

Language: C#

Type: System.Object

Views: 5249