62 lines
2.4 KiB
C#
62 lines
2.4 KiB
C#
|
// Copyright (c) Microsoft Open Technologies, Inc. All rights reserved. See License.txt in the project root for license information.
|
|||
|
|
|||
|
namespace System.Data.Entity
|
|||
|
{
|
|||
|
using System.Diagnostics;
|
|||
|
using System.Linq;
|
|||
|
using System.Reflection;
|
|||
|
using Xunit;
|
|||
|
|
|||
|
public static class ExceptionTestExtensions
|
|||
|
{
|
|||
|
public static void ValidateMessage(
|
|||
|
this Exception exception,
|
|||
|
string expectedResourceKey,
|
|||
|
params object[] parameters)
|
|||
|
{
|
|||
|
Debug.Assert(exception != null);
|
|||
|
Debug.Assert(expectedResourceKey != null);
|
|||
|
|
|||
|
ValidateMessage(exception, TestBase.EntityFrameworkAssembly, expectedResourceKey, null, parameters);
|
|||
|
}
|
|||
|
|
|||
|
public static void ValidateMessage(
|
|||
|
this Exception exception,
|
|||
|
Assembly resourceAssembly,
|
|||
|
string expectedResourceKey,
|
|||
|
string resourceTable = null,
|
|||
|
params object[] parameters)
|
|||
|
{
|
|||
|
Debug.Assert(exception != null);
|
|||
|
Debug.Assert(resourceAssembly != null);
|
|||
|
Debug.Assert(expectedResourceKey != null);
|
|||
|
|
|||
|
if (resourceTable == null
|
|||
|
&& resourceAssembly == TestBase.EntityFrameworkAssembly)
|
|||
|
{
|
|||
|
resourceTable = "System.Data.Entity.Properties.Resources";
|
|||
|
}
|
|||
|
|
|||
|
var actualMessage = exception.Message;
|
|||
|
var argException = exception as ArgumentException;
|
|||
|
if (argException != null)
|
|||
|
{
|
|||
|
var paramPartIndex = argException.Message.LastIndexOf("\r\n");
|
|||
|
if (paramPartIndex != -1)
|
|||
|
{
|
|||
|
actualMessage = argException.Message.Substring(0, paramPartIndex);
|
|||
|
Assert.True(parameters.Length >= 1, "Expected first parameter to be param for ArgumentException.");
|
|||
|
Assert.Equal(parameters[0], argException.ParamName);
|
|||
|
parameters = parameters.Skip(1).ToArray();
|
|||
|
}
|
|||
|
}
|
|||
|
var assemblyResourceLookup
|
|||
|
= resourceTable == null
|
|||
|
? new AssemblyResourceLookup(resourceAssembly)
|
|||
|
: new AssemblyResourceLookup(resourceAssembly, resourceTable);
|
|||
|
|
|||
|
new StringResourceVerifier(assemblyResourceLookup)
|
|||
|
.VerifyMatch(expectedResourceKey, actualMessage, parameters);
|
|||
|
}
|
|||
|
}
|
|||
|
}
|