private static void AssertMustUseRewriter(ContractFailureKind kind, string contractKind) { if (Contract._assertingMustUseRewriter) { Assert.Fail("Asserting that we must use the rewriter went reentrant.", "Didn't rewrite this mscorlib?"); } Contract._assertingMustUseRewriter = true; Assembly assembly1 = typeof(Contract).Assembly; StackTrace stackTrace = new StackTrace(); Assembly assembly2 = (Assembly)null; for (int index = 0; index < stackTrace.FrameCount; ++index) { Assembly assembly3 = stackTrace.GetFrame(index).GetMethod().DeclaringType.Assembly; if (assembly3 != assembly1) { assembly2 = assembly3; break; } } if (assembly2 == (Assembly)null) { assembly2 = assembly1; } string name = assembly2.GetName().Name; ContractHelper.TriggerFailure(kind, Environment.GetResourceString("MustUseCCRewrite", (object)contractKind, (object)name), (string)null, (string)null, (Exception)null); Contract._assertingMustUseRewriter = false; }
private static void AssertMustUseRewriter(ContractFailureKind kind, string contractKind) { if (Contract._assertingMustUseRewriter) { System.Diagnostics.Assert.Fail("Asserting that we must use the rewriter went reentrant.", "Didn't rewrite this mscorlib?"); } Contract._assertingMustUseRewriter = true; Assembly assembly = typeof(Contract).Assembly; StackTrace stackTrace = new StackTrace(); Assembly assembly2 = null; for (int i = 0; i < stackTrace.FrameCount; i++) { Assembly assembly3 = stackTrace.GetFrame(i).GetMethod().DeclaringType.Assembly; if (assembly3 != assembly) { assembly2 = assembly3; break; } } if (assembly2 == null) { assembly2 = assembly; } string name = assembly2.GetName().Name; ContractHelper.TriggerFailure(kind, Environment.GetResourceString("MustUseCCRewrite", new object[] { contractKind, name }), null, null, null); Contract._assertingMustUseRewriter = false; }
// [Ignore ("This causes NUnit crash on .NET 4.0")] public void TestTriggerFailure() { try { ContractHelper.TriggerFailure(ContractFailureKind.Assert, "Display", null, "Condition", null); Assert.Fail("TestTriggerFailure() failed to throw exception"); } catch (Exception ex) { Assert.AreEqual("Display", ex.Message, "TestTriggerFailure() wrong message"); } }
static void ReportFailure(ContractFailureKind kind, string userMessage, string conditionText, Exception innerException) { string msg = ContractHelper.RaiseContractFailedEvent(kind, userMessage, conditionText, innerException); // if msg is null, then it has been handled already, so don't do anything here if (msg != null) { ContractHelper.TriggerFailure(kind, msg, userMessage, conditionText, innerException); } }
private static void AssertMustUseRewriter(ContractFailureKind kind, string contractKind) { if (_assertingMustUseRewriter) { System.Diagnostics.Assert.Fail("Asserting that we must use the rewriter went reentrant.", "Didn't rewrite this mscorlib?"); } _assertingMustUseRewriter = true; ContractHelper.TriggerFailure(kind, "Must use the rewriter when using Contract." + contractKind, null, null, null); _assertingMustUseRewriter = false; }
public void TestTriggerFailure() { try { ContractHelper.TriggerFailure(ContractFailureKind.Assert, "Display", null, "Condition", null); Assert.Fail("TestTriggerFailure() failed to throw exception"); } catch (Exception ex) { Assert.IsInstanceOfType(typeof(NotImplementedException), ex, "TestTriggerFailure() wrong exception type"); //Assert.AreEqual ("Expression: Condition" + Environment.NewLine + "Description: Display", ex.Message, "TestTriggerFailure() wrong message"); } }
private static void ReportFailure(ContractFailureKind failureKind, string userMessage, string conditionText, Exception innerException) { if ((failureKind < ContractFailureKind.Precondition) || (failureKind > ContractFailureKind.Assume)) { throw new ArgumentException(Environment.GetResourceString("Arg_EnumIllegalVal", new object[] { failureKind }), "failureKind"); } string displayMessage = ContractHelper.RaiseContractFailedEvent(failureKind, userMessage, conditionText, innerException); if (displayMessage != null) { ContractHelper.TriggerFailure(failureKind, displayMessage, userMessage, conditionText, innerException); } }
private static void ReportFailure(ContractFailureKind failureKind, string userMessage, string conditionText, Exception innerException) { if (failureKind < ContractFailureKind.Precondition || failureKind > ContractFailureKind.Assume) { throw new ArgumentException(string.Format("Invalid enum value: {0}", failureKind), "failureKind"); } EndContractBlock(); // displayMessage == null means: yes we handled it. Otherwise it is the localized failure message var displayMessage = ContractHelper.RaiseContractFailedEvent(failureKind, userMessage, conditionText, innerException); if (displayMessage == null) { return; } ContractHelper.TriggerFailure(failureKind, displayMessage, userMessage, conditionText, innerException); }
private static void AssertMustUseRewriter(ContractFailureKind kind, string contractKind) { if (_assertingMustUseRewriter) { ContractHelperEx.Fail("Asserting that we must use the rewriter went reentrant."); // Didn't rewrite this mscorlib? } _assertingMustUseRewriter = true; // For better diagnostics, report which assembly is at fault. Walk up stack and // find the first non-mscorlib assembly. var thisAssembly = typeof(Contract).Assembly; // In case we refactor mscorlib, use Contract class instead of Object. var stack = new StackTrace(); Assembly probablyNotRewritten = null; for (var i = 0; i < stack.FrameCount; i++) { var declaringType = stack.GetFrame(i).GetMethod().DeclaringType; if (declaringType == null) { // Not standard method info - ignoring continue; } var caller = declaringType.Assembly; if (thisAssembly.Equals(caller)) { continue; } probablyNotRewritten = caller; break; } if (probablyNotRewritten == null) { probablyNotRewritten = thisAssembly; } var simpleName = probablyNotRewritten.GetName().Name; ContractHelper.TriggerFailure(kind, string.Format("The code has not been rewriten. ContractKind: {0} - Source: {1}", contractKind, simpleName), null, null, null); _assertingMustUseRewriter = false; }
public void TriggerFailure() { ContractHelper.TriggerFailure(ContractFailureKind.Assert, "displayMessage", "userMessage", "conditionText", new Exception()); }
static void AssertMustUseRewriter(ContractFailureKind kind, string message) { ContractHelper.TriggerFailure(kind, "Assembly must be re-written by the code contract rewritter", null, message, null); }