コード例 #1
0
ファイル: Suite.cs プロジェクト: kilfour/QuickDotNetCheck
        private SimplestFailCase Shrink(List <IFixture> fixtures, FalsifiableException previousFailure)
        {
            var simplestFailcase = ShrinkTransitionsList(fixtures, previousFailure);

            ShrinkFixtures(simplestFailcase, previousFailure);
            return(simplestFailcase);
        }
コード例 #2
0
ファイル: Suite.cs プロジェクト: kilfour/QuickDotNetCheck
 private void ShrinkFixtures(SimplestFailCase simplestFailcase, FalsifiableException previousFailure)
 {
     simplestFailcase
     .Fixtures
     .ForEach(
         f => f.Shrink(
             () => Fails(simplestFailcase.Fixtures, previousFailure)));
 }
コード例 #3
0
ファイル: Suite.cs プロジェクト: kilfour/QuickDotNetCheck
        private bool Fails(IEnumerable <IFixture> actions, FalsifiableException previousFailure)
        {
            var actionsCopy = actions.ToList();

            objects     = objectFuncs.Select(f => f()).ToList();
            disposables = disposableFuncs.Select(f => f()).ToList();
            for (int ix = 0; ix < actionsCopy.Count(); ix++)
            {
                try
                {
                    var fixture = actionsCopy.ElementAt(ix);
                    SetUsedState(fixture);
                    if (fixture.CanAct())
                    {
                        LastException = null;
                        try
                        {
                            fixture.Execute();
                        }
                        catch (Exception e)
                        {
                            LastException = e;
                        }

                        if (ix == actionsCopy.Count - 1)
                        {
                            if (previousFailure.Spec != null)
                            {
                                previousFailure.Spec.Verify();
                            }

                            if (previousFailure.InnerException != null)
                            {
                                if (LastException == null)
                                {
                                    return(false);
                                }
                                return(LastException.GetType() == previousFailure.InnerException.GetType());
                            }
                        }
                    }
                }
                catch (FalsifiableException)
                {
                    disposables.ForEach(d => d.Dispose());
                    return(true);
                }
            }
            disposables.ForEach(d => d.Dispose());
            return(false);
        }
コード例 #4
0
        public static string GetMessage(int testNumber, int fixtureNumber, FalsifiableException failure, SimplestFailCase simplestFailCase)
        {
            var sb = new StringBuilder();

            sb.AppendLine();
            sb.AppendFormat("Ran {0} test, {1} fixtures.", testNumber, fixtureNumber);
            sb.AppendLine();
            if (failure.Spec != null)
            {
                sb.AppendLine("Spec '" + failure.Spec.Name + "' does not hold.");
            }
            if (simplestFailCase != null)
            {
                sb.Append(simplestFailCase.Report());
            }
            return(sb.ToString());
        }
コード例 #5
0
ファイル: Suite.cs プロジェクト: kilfour/QuickDotNetCheck
        private SimplestFailCase ShrinkTransitionsList(List <IFixture> fixtures, FalsifiableException previousFailure)
        {
            var simplestFailCase = new SimplestFailCase(fixtures);
            var ix = 0;

            while (ix < simplestFailCase.Fixtures.Count - 1)
            {
                var lessActions = new List <IFixture>(simplestFailCase.Fixtures);
                lessActions.RemoveAt(ix);
                if (Fails(lessActions, previousFailure))
                {
                    simplestFailCase.Fixtures = lessActions;
                }
                else
                {
                    ix++;
                }
            }
            return(simplestFailCase);
        }
コード例 #6
0
 public RunReport(int testNumber, int fixtureNumber, FalsifiableException failure, SimplestFailCase simplestFailCase)
     : base(GetMessage(testNumber, fixtureNumber, failure, simplestFailCase), failure)
 {
     this.simplestFailCase = simplestFailCase;
 }