public static void Contains <T> (T token1, T token2, [CallerMemberName] string callerName = "", [CallerLineNumber] int callerLine = 0)
 {
     if (typeof(T) == typeof(System.String))
     {
         if (!((token2 as string)).Contains(token1 as string))
         {
             // throw new Exception ($"{token2} doesn't contain {token1}");
             TestRunner.AddResult(
                 new TestRunResult()
             {
                 CallerName   = callerName,
                 CallerLine   = callerLine.ToString(),
                 Success      = false,
                 Assertion    = "Contains<T>",
                 ErrorMessage = $"{token2} doesn't contain {token1}"
             });
         }
         else
         {
             TestRunner.AddResult(
                 new TestRunResult()
             {
                 CallerName = callerName,
                 CallerLine = callerLine.ToString(),
                 Success    = true,
                 Assertion  = "Contains<T>"
             });
         }
     }
     else
     {
         throw new Exception("It is not possible to use .Contains() method");
     }
 }
 public static void Equal <T> (T a, T b, [CallerMemberName] string callerName = "", [CallerLineNumber] int callerLine = 0)
 {
     if (!a.Equals(b))
     {
         // throw new Exception ($"{a} doesn't equal to {b}");
         TestRunner.AddResult(
             new TestRunResult()
         {
             CallerName   = callerName,
             CallerLine   = callerLine.ToString(),
             Success      = false,
             Assertion    = "Equal<T>",
             ErrorMessage = $"{a} doesn't equal to {b}"
         });
     }
     else
     {
         TestRunner.AddResult(
             new TestRunResult()
         {
             CallerName = callerName,
             CallerLine = callerLine.ToString(),
             Success    = true,
             Assertion  = "Single<T>"
         });
     }
 }
    public static void All <T> (IEnumerable <T> collection, Func <T, bool> predicate, [CallerMemberName] string callerName = "", [CallerLineNumber] int callerLine = 0)
    {
        bool res = collection.All(predicate);
        var  tr  = new TestRunResult()
        {
            CallerName = callerName,
            CallerLine = callerLine.ToString(),
            Success    = res,
            Assertion  = "All<T>"
        };

        TestRunner.AddResult(tr);
        if (!res)
        {
            tr.ErrorMessage = "Condition is not met for all members";
        }
    }
 public static void Equal <T> (IEnumerable <T> a,
                               IEnumerable <T> b, [CallerMemberName] string callerName = "", [CallerLineNumber] int callerLine = 0)
 {
     if (a.Count() != b.Count())
     {
         TestRunner.AddResult(
             new TestRunResult()
         {
             CallerName   = callerName,
             CallerLine   = callerLine.ToString(),
             Success      = false,
             Assertion    = "Equal<T>",
             ErrorMessage = $"a.{a.Count()} != b.{b.Count()}"
         });
     }
     else if (!a.SequenceEqual(b))
     {
         TestRunner.AddResult(
             new TestRunResult()
         {
             CallerName   = callerName,
             CallerLine   = callerLine.ToString(),
             Success      = false,
             Assertion    = "SequenceEqual<T>",
             ErrorMessage = $"Different sequences"
         });
     }
     else
     {
         TestRunner.AddResult(
             new TestRunResult()
         {
             CallerName = callerName,
             CallerLine = callerLine.ToString(),
             Success    = true,
             Assertion  = "Equal<T>"
         });
     }
 }
 public static void Single <T> (IEnumerable <T> collection, [CallerMemberName] string callerName = "", [CallerLineNumber] int callerLine = 0)
 {
     if (collection.Count() != 1)
     {
         // throw new Exception ("Collection doesn't contain 1 element");
         TestRunner.AddResult(
             new TestRunResult()
         {
             CallerName   = callerName,
             CallerLine   = callerLine.ToString(),
             Success      = false,
             Assertion    = "Single<T>",
             ErrorMessage = "Collection doesn't contain 1 element"
         });
     }
     TestRunner.AddResult(
         new TestRunResult()
     {
         CallerName = callerName,
         CallerLine = callerLine.ToString(),
         Success    = true,
         Assertion  = "Single<T>"
     });
 }