diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/DotNetOpenAuth/ContractRuntimeFailureMethods.cs | 34 |
1 files changed, 33 insertions, 1 deletions
diff --git a/src/DotNetOpenAuth/ContractRuntimeFailureMethods.cs b/src/DotNetOpenAuth/ContractRuntimeFailureMethods.cs index dc239fd..9fb1f63 100644 --- a/src/DotNetOpenAuth/ContractRuntimeFailureMethods.cs +++ b/src/DotNetOpenAuth/ContractRuntimeFailureMethods.cs @@ -8,6 +8,7 @@ namespace DotNetOpenAuth { using System; using System.Diagnostics; + using System.Diagnostics.Contracts; using DotNetOpenAuth.Messaging; /// <summary> @@ -18,7 +19,7 @@ namespace DotNetOpenAuth { /// The Code Contracts assembly rewriter (ccrewrite) tool causes all calls to Contract.*() /// to redirect to this class. /// </remarks> - internal static class ContractRuntimeFailureMethods { + public static class ContractRuntimeFailureMethods { [DebuggerStepThrough] public static void Requires(bool condition, string userMessage, string conditionText) { if (!condition) { @@ -34,6 +35,13 @@ namespace DotNetOpenAuth { } [DebuggerStepThrough] + public static void EnsuresOnThrow(bool condition, string userMessage, string conditionText) { + if (!condition) { + throw new InternalErrorException(userMessage ?? conditionText); + } + } + + [DebuggerStepThrough] public static void Assert(bool condition, string userMessage, string conditionText) { if (!condition) { throw new InternalErrorException(userMessage ?? conditionText); @@ -53,5 +61,29 @@ namespace DotNetOpenAuth { throw new InternalErrorException(userMessage ?? conditionText); } } + + [DebuggerStepThrough] + public static void Failure(ContractFailureKind failureKind, string userProvidedMessage, string condition, Exception originalException) { + switch (failureKind) { + case ContractFailureKind.Assert: + Assert(false, userProvidedMessage, condition); + break; + case ContractFailureKind.Assume: + Assume(false, userProvidedMessage, condition); + break; + case ContractFailureKind.Invariant: + Invariant(false, userProvidedMessage, condition); + break; + case ContractFailureKind.Postcondition: + Ensures(false, userProvidedMessage, condition); + break; + case ContractFailureKind.Precondition: + Requires(false, userProvidedMessage, condition); + break; + default: + ErrorUtilities.ThrowInternal(userProvidedMessage ?? condition); + break; + } + } } } |