When you use Check.QuickThrowOnFailure
, it uses the Config.QuickThrowOnFailure
configuration, which has the following meanings:
> Config.QuickThrowOnFailure;; val it : Config = {MaxTest = 100; MaxFail = 1000; Replay = null; Name = ""; StartSize = 1; EndSize = 100; QuietOnSuccess = false; Every = <fun: get_Quick@342 >; EveryShrink = <fun: get_Quick@343-1 >; Arbitrary = []; Runner = <StartupCode$FsCheck> .$Runner+get_throwingRunner@355 ;}
The important values โโhere are StartSize
, but especially EndSize
. Some of the generators in FsCheck use a size context to determine the size or range of values โโthat it generates.
If you change EndSize
to, for example, 1,000
you can make your test fail:
> Check.One({Config.QuickThrowOnFailure with EndSize = 1000}, fun (a:int) -> (add a 0) = a);; System.Exception: Falsifiable, after 15 tests (0 shrinks) (StdGen (1912816373,296229213)): Original: 101 with exception: > System.Exception: nasty bug at FSI_0040.add(Int32 a, Int32 b) at FSI_0055.it@69-6.Invoke (Int32 a) at FsCheck.Testable.evaluate[a,b](FSharpFunc`2 body, aa) in C:\Users\Kurt\Projects\FsCheck\FsCheck\src\FsCheck\Testable.fs:line 161 at <StartupCode$FsCheck> .$Runner.get_throwingRunner@365-1.Invoke (String message) in C:\Users\Kurt\Projects\FsCheck\FsCheck\src\FsCheck\Runner.fs:line 365 at <StartupCode$FsCheck> .$Runner.get_throwingRunner@355.FsCheck-IRunner-OnFinished (String , TestResult ) in C:\Users\Kurt\Projects\FsCheck\FsCheck\src\FsCheck\Runner.fs:line 365 at FsCheck.Runner.check[a](Config config, ap) in C:\Users\Kurt\Projects\FsCheck\FsCheck\src\FsCheck\Runner.fs:line 275 at <StartupCode$FSI_0055> .$FSI_0055.main@ () Stopped due to error
source share