Exemplo n.º 1
0
        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;
        }
Exemplo n.º 3
0
//		[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);
            }
        }
Exemplo n.º 5
0
 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;
 }
Exemplo n.º 6
0
 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");
     }
 }
Exemplo n.º 7
0
        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;
        }
Exemplo n.º 10
0
 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);
 }