using System; using System.Threading.Tasks; using Xunit; namespace Microsoft.AspNet.Identity.InMemory.Test { public static class ExceptionHelper { public static async Task ThrowsWithError(Func act, string error) where TException : Exception { var e = await Assert.ThrowsAsync(act); if (e != null) { Assert.Equal(error, e.Message); } return e; } public static async Task ThrowsArgumentException(Func del, string exceptionMessage, string paramName) { var e = await Assert.ThrowsAsync(del); // Only check exception message on English build and OS, since some exception messages come from the OS // and will be in the native language. // TODO: needed? if (UnitTestHelper.EnglishBuildAndOS) //{ Assert.Equal(exceptionMessage, e.Message); Assert.Equal(paramName, e.ParamName);; //} return e; } public static Task ThrowsArgumentNullOrEmpty(Func del, string paramName) { return ThrowsArgumentException(del, "Value cannot be null or empty.\r\nParameter name: " + paramName, paramName); } public static async Task ThrowsArgumentNull(Func del, string paramName) { var e = await Assert.ThrowsAsync(del); Assert.Equal(paramName, e.ParamName); return e; } } }