1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Reflection;

namespace TinyIoC.Tests
{
    internal class AssertHelper
    {
        internal static T ThrowsException<T>(Action callback)
            where T : Exception
        {
            try
            {
                callback();
                throw new InvalidOperationException("No exception was thrown.");
            }
            catch (Exception ex)
            {
                if (typeof(T).IsAssignableFrom(ex.GetType()))
                    return (T)ex;
                else
                    throw new InvalidOperationException(string.Format("Exception of type '{0}' expected, but got exception of type '{1}'.",
                        typeof(T), ex.GetType()), ex);
            }
        }
    }
}