public void VerificationPipelineSingleSuccessTest()
        {
            var mock = new Mock <IVerifier>();

            mock.Setup(x => x.VerificationPriority).Returns(1);
            mock.Setup(x => x.Verify(It.IsAny <InterceptionProcessingData>())).Returns(_successfulVerification);

            var verifiers = new IVerifier[] { mock.Object };
            var pipeline  = new VerificationPipeline(verifiers);

            var res = pipeline.VerifyInterception(TestClass.Method1Entry);

            Assert.IsFalse(res.HasAnyFailure);
        }
        public void VerificationPipelineMult_Failures_Added_To_Proc_Data()
        {
            var mock1 = new Mock <IVerifier>();

            mock1.Setup(x => x.VerificationPriority).Returns(1);
            mock1.Setup(x => x.Verify(It.IsAny <InterceptionProcessingData>())).Returns(new List <VerificationFailure>()
            {
                new TypeSerializationFailure(typeof(double))
            });

            var verifiers = new IVerifier[] { mock1.Object };
            var pipeline  = new VerificationPipeline(verifiers);

            var interception = TestClass.Method1Entry;
            var res          = pipeline.VerifyInterception(interception);

            Assert.IsTrue(interception.VerificationFailures.Any());
        }
        public void VerificationPipelineMult_Critical_Failure_Test()
        {
            var mock1 = new Mock <IVerifier>();

            mock1.Setup(x => x.VerificationPriority).Returns(1);
            mock1.Setup(x => x.Verify(It.IsAny <InterceptionProcessingData>())).Returns(new List <VerificationFailure>()
            {
                new CriticalFailure()
            });

            var mock2 = new Mock <IVerifier>();

            mock2.Setup(x => x.VerificationPriority).Returns(2);
            mock2.Setup(x => x.Verify(It.IsAny <InterceptionProcessingData>())).Returns(_successfulVerification);

            var verifiers = new IVerifier[] { mock2.Object, mock1.Object };
            var pipeline  = new VerificationPipeline(verifiers);

            var res = pipeline.VerifyInterception(TestClass.Method1Entry);

            Assert.IsTrue(res.HasAnyFailure);
            Assert.IsTrue(res.HasCriticalFailure);
            mock2.Verify(x => x.Verify(It.IsAny <InterceptionProcessingData>()), Times.Never);
        }