From 8713ee852ddba132d7667afc0af7b81ec08b0125 Mon Sep 17 00:00:00 2001 From: Nicolas DUBIEN Date: Sun, 12 May 2019 20:00:53 +0200 Subject: [PATCH] Add no regression tests for commands (#355) * Add no regression tests for commands * No regression tests not display absolute paths --- test/e2e/NoRegression.spec.ts | 35 ++ .../__snapshots__/NoRegression.spec.ts.snap | 356 ++++++++++++++++++ test/e2e/model/CommandsArbitrary.spec.ts | 71 +--- test/e2e/model/CounterCommands.ts | 44 +++ test/e2e/model/StepCommands.ts | 20 + 5 files changed, 464 insertions(+), 62 deletions(-) create mode 100644 test/e2e/model/CounterCommands.ts create mode 100644 test/e2e/model/StepCommands.ts diff --git a/test/e2e/NoRegression.spec.ts b/test/e2e/NoRegression.spec.ts index a5a9ce64740..1daee39c947 100644 --- a/test/e2e/NoRegression.spec.ts +++ b/test/e2e/NoRegression.spec.ts @@ -1,4 +1,11 @@ import fc from '../../src/fast-check'; +import { + IncreaseCommand, + DecreaseCommand, + EvenCommand, + OddCommand, + CheckLessThanCommand +} from './model/CounterCommands'; const testFunc = (value: unknown) => { const repr = fc.stringify(value); @@ -213,4 +220,32 @@ describe(`NoRegression`, () => { it('emailAddress', () => { expect(() => fc.assert(fc.property(fc.emailAddress(), v => testFunc(v)), settings)).toThrowErrorMatchingSnapshot(); }); + it('commands', () => { + expect(() => + fc.assert( + fc.property( + fc.commands([ + fc.nat().map(n => new IncreaseCommand(n)), + fc.nat().map(n => new DecreaseCommand(n)), + fc.constant(new EvenCommand()), + fc.constant(new OddCommand()), + fc.nat().map(n => new CheckLessThanCommand(n + 1)) + ]), + cmds => { + const setup = () => ({ + model: { count: 0 }, + real: {} + }); + try { + fc.modelRun(setup, cmds); + return true; + } catch (err) { + return false; + } + } + ), + settings + ) + ).toThrowErrorMatchingSnapshot(); + }); }); diff --git a/test/e2e/__snapshots__/NoRegression.spec.ts.snap b/test/e2e/__snapshots__/NoRegression.spec.ts.snap index 00ff831b56d..effa9c4814b 100644 --- a/test/e2e/__snapshots__/NoRegression.spec.ts.snap +++ b/test/e2e/__snapshots__/NoRegression.spec.ts.snap @@ -238,6 +238,362 @@ Execution summary: . . . . √ [\\"\\"]" `; +exports[`NoRegression commands 1`] = ` +"Property failed after 7 tests +{ seed: 42, path: \\"6:2:3:4:7:8:11:13:16:19:21:22:23:24:28:28:31:1:1:1:1:1:1:1:1:1:1:1:1:1:1:1:1:1:1:1:1:1:1:1:1:1:1:1:1:1:1:1\\", endOnFailure: true } +Counterexample: [inc[1],check[1] /*replayPath=\\"CF/d:N\\"*/] +Shrunk 47 time(s) +Got error: Property failed by returning false + +Execution summary: +√ [even,check[1543881035],dec[1608259546] /*replayPath=\\"CF/d:N\\"*/] +√ [dec[1316205021],check[1171636923],odd,dec[977777033],even,inc[1812988429],check[831446369] /*replayPath=\\"CF/d:N\\"*/] +√ [inc[654967732],even,inc[412600644],dec[296544841],odd /*replayPath=\\"CF/d:N\\"*/] +√ [check[1054861728] /*replayPath=\\"CF/d:N\\"*/] +√ [ /*replayPath=\\"CF/d:N\\"*/] +√ [inc[713596199] /*replayPath=\\"CF/d:N\\"*/] +× [dec[269459861],inc[1835338276],check[1274587504] /*replayPath=\\"CF/d:N\\"*/] +. √ [ /*replayPath=\\"CF/d:N\\"*/] +. √ [check[1274587504] /*replayPath=\\"CF/d:N\\"*/] +. × [inc[1835338276],check[1274587504] /*replayPath=\\"CF/d:N\\"*/] +. . √ [check[1274587504] /*replayPath=\\"CF/d:N\\"*/] +. . √ [inc[0],check[1274587504] /*replayPath=\\"CF/d:N\\"*/] +. . √ [inc[917669138],check[1274587504] /*replayPath=\\"CF/d:N\\"*/] +. . × [inc[1376503707],check[1274587504] /*replayPath=\\"CF/d:N\\"*/] +. . . √ [check[1274587504] /*replayPath=\\"CF/d:N\\"*/] +. . . √ [inc[688251854],check[1274587504] /*replayPath=\\"CF/d:N\\"*/] +. . . √ [inc[1032377781],check[1274587504] /*replayPath=\\"CF/d:N\\"*/] +. . . √ [inc[1204440744],check[1274587504] /*replayPath=\\"CF/d:N\\"*/] +. . . × [inc[1290472226],check[1274587504] /*replayPath=\\"CF/d:N\\"*/] +. . . . √ [check[1274587504] /*replayPath=\\"CF/d:N\\"*/] +. . . . √ [inc[645236113],check[1274587504] /*replayPath=\\"CF/d:N\\"*/] +. . . . √ [inc[967854170],check[1274587504] /*replayPath=\\"CF/d:N\\"*/] +. . . . √ [inc[1129163198],check[1274587504] /*replayPath=\\"CF/d:N\\"*/] +. . . . √ [inc[1209817712],check[1274587504] /*replayPath=\\"CF/d:N\\"*/] +. . . . √ [inc[1250144969],check[1274587504] /*replayPath=\\"CF/d:N\\"*/] +. . . . √ [inc[1270308598],check[1274587504] /*replayPath=\\"CF/d:N\\"*/] +. . . . × [inc[1280390412],check[1274587504] /*replayPath=\\"CF/d:N\\"*/] +. . . . . √ [check[1274587504] /*replayPath=\\"CF/d:N\\"*/] +. . . . . √ [inc[640195206],check[1274587504] /*replayPath=\\"CF/d:N\\"*/] +. . . . . √ [inc[960292809],check[1274587504] /*replayPath=\\"CF/d:N\\"*/] +. . . . . √ [inc[1120341611],check[1274587504] /*replayPath=\\"CF/d:N\\"*/] +. . . . . √ [inc[1200366012],check[1274587504] /*replayPath=\\"CF/d:N\\"*/] +. . . . . √ [inc[1240378212],check[1274587504] /*replayPath=\\"CF/d:N\\"*/] +. . . . . √ [inc[1260384312],check[1274587504] /*replayPath=\\"CF/d:N\\"*/] +. . . . . √ [inc[1270387362],check[1274587504] /*replayPath=\\"CF/d:N\\"*/] +. . . . . × [inc[1275388887],check[1274587504] /*replayPath=\\"CF/d:N\\"*/] +. . . . . . √ [check[1274587504] /*replayPath=\\"CF/d:N\\"*/] +. . . . . . √ [inc[637694444],check[1274587504] /*replayPath=\\"CF/d:N\\"*/] +. . . . . . √ [inc[956541666],check[1274587504] /*replayPath=\\"CF/d:N\\"*/] +. . . . . . √ [inc[1115965277],check[1274587504] /*replayPath=\\"CF/d:N\\"*/] +. . . . . . √ [inc[1195677082],check[1274587504] /*replayPath=\\"CF/d:N\\"*/] +. . . . . . √ [inc[1235532985],check[1274587504] /*replayPath=\\"CF/d:N\\"*/] +. . . . . . √ [inc[1255460936],check[1274587504] /*replayPath=\\"CF/d:N\\"*/] +. . . . . . √ [inc[1265424912],check[1274587504] /*replayPath=\\"CF/d:N\\"*/] +. . . . . . √ [inc[1270406900],check[1274587504] /*replayPath=\\"CF/d:N\\"*/] +. . . . . . √ [inc[1272897894],check[1274587504] /*replayPath=\\"CF/d:N\\"*/] +. . . . . . √ [inc[1274143391],check[1274587504] /*replayPath=\\"CF/d:N\\"*/] +. . . . . . × [inc[1274766139],check[1274587504] /*replayPath=\\"CF/d:N\\"*/] +. . . . . . . √ [check[1274587504] /*replayPath=\\"CF/d:N\\"*/] +. . . . . . . √ [inc[637383070],check[1274587504] /*replayPath=\\"CF/d:N\\"*/] +. . . . . . . √ [inc[956074605],check[1274587504] /*replayPath=\\"CF/d:N\\"*/] +. . . . . . . √ [inc[1115420372],check[1274587504] /*replayPath=\\"CF/d:N\\"*/] +. . . . . . . √ [inc[1195093256],check[1274587504] /*replayPath=\\"CF/d:N\\"*/] +. . . . . . . √ [inc[1234929698],check[1274587504] /*replayPath=\\"CF/d:N\\"*/] +. . . . . . . √ [inc[1254847919],check[1274587504] /*replayPath=\\"CF/d:N\\"*/] +. . . . . . . √ [inc[1264807029],check[1274587504] /*replayPath=\\"CF/d:N\\"*/] +. . . . . . . √ [inc[1269786584],check[1274587504] /*replayPath=\\"CF/d:N\\"*/] +. . . . . . . √ [inc[1272276362],check[1274587504] /*replayPath=\\"CF/d:N\\"*/] +. . . . . . . √ [inc[1273521251],check[1274587504] /*replayPath=\\"CF/d:N\\"*/] +. . . . . . . √ [inc[1274143695],check[1274587504] /*replayPath=\\"CF/d:N\\"*/] +. . . . . . . √ [inc[1274454917],check[1274587504] /*replayPath=\\"CF/d:N\\"*/] +. . . . . . . × [inc[1274610528],check[1274587504] /*replayPath=\\"CF/d:N\\"*/] +. . . . . . . . √ [check[1274587504] /*replayPath=\\"CF/d:N\\"*/] +. . . . . . . . √ [inc[637305264],check[1274587504] /*replayPath=\\"CF/d:N\\"*/] +. . . . . . . . √ [inc[955957896],check[1274587504] /*replayPath=\\"CF/d:N\\"*/] +. . . . . . . . √ [inc[1115284212],check[1274587504] /*replayPath=\\"CF/d:N\\"*/] +. . . . . . . . √ [inc[1194947370],check[1274587504] /*replayPath=\\"CF/d:N\\"*/] +. . . . . . . . √ [inc[1234778949],check[1274587504] /*replayPath=\\"CF/d:N\\"*/] +. . . . . . . . √ [inc[1254694739],check[1274587504] /*replayPath=\\"CF/d:N\\"*/] +. . . . . . . . √ [inc[1264652634],check[1274587504] /*replayPath=\\"CF/d:N\\"*/] +. . . . . . . . √ [inc[1269631581],check[1274587504] /*replayPath=\\"CF/d:N\\"*/] +. . . . . . . . √ [inc[1272121055],check[1274587504] /*replayPath=\\"CF/d:N\\"*/] +. . . . . . . . √ [inc[1273365792],check[1274587504] /*replayPath=\\"CF/d:N\\"*/] +. . . . . . . . √ [inc[1273988160],check[1274587504] /*replayPath=\\"CF/d:N\\"*/] +. . . . . . . . √ [inc[1274299344],check[1274587504] /*replayPath=\\"CF/d:N\\"*/] +. . . . . . . . √ [inc[1274454936],check[1274587504] /*replayPath=\\"CF/d:N\\"*/] +. . . . . . . . √ [inc[1274532732],check[1274587504] /*replayPath=\\"CF/d:N\\"*/] +. . . . . . . . √ [inc[1274571630],check[1274587504] /*replayPath=\\"CF/d:N\\"*/] +. . . . . . . . × [inc[1274591079],check[1274587504] /*replayPath=\\"CF/d:N\\"*/] +. . . . . . . . . √ [check[1274587504] /*replayPath=\\"CF/d:N\\"*/] +. . . . . . . . . √ [inc[637295540],check[1274587504] /*replayPath=\\"CF/d:N\\"*/] +. . . . . . . . . √ [inc[955943310],check[1274587504] /*replayPath=\\"CF/d:N\\"*/] +. . . . . . . . . √ [inc[1115267195],check[1274587504] /*replayPath=\\"CF/d:N\\"*/] +. . . . . . . . . √ [inc[1194929137],check[1274587504] /*replayPath=\\"CF/d:N\\"*/] +. . . . . . . . . √ [inc[1234760108],check[1274587504] /*replayPath=\\"CF/d:N\\"*/] +. . . . . . . . . √ [inc[1254675594],check[1274587504] /*replayPath=\\"CF/d:N\\"*/] +. . . . . . . . . √ [inc[1264633337],check[1274587504] /*replayPath=\\"CF/d:N\\"*/] +. . . . . . . . . √ [inc[1269612208],check[1274587504] /*replayPath=\\"CF/d:N\\"*/] +. . . . . . . . . √ [inc[1272101644],check[1274587504] /*replayPath=\\"CF/d:N\\"*/] +. . . . . . . . . √ [inc[1273346362],check[1274587504] /*replayPath=\\"CF/d:N\\"*/] +. . . . . . . . . √ [inc[1273968721],check[1274587504] /*replayPath=\\"CF/d:N\\"*/] +. . . . . . . . . √ [inc[1274279900],check[1274587504] /*replayPath=\\"CF/d:N\\"*/] +. . . . . . . . . √ [inc[1274435490],check[1274587504] /*replayPath=\\"CF/d:N\\"*/] +. . . . . . . . . √ [inc[1274513285],check[1274587504] /*replayPath=\\"CF/d:N\\"*/] +. . . . . . . . . √ [inc[1274552182],check[1274587504] /*replayPath=\\"CF/d:N\\"*/] +. . . . . . . . . √ [inc[1274571631],check[1274587504] /*replayPath=\\"CF/d:N\\"*/] +. . . . . . . . . √ [inc[1274581355],check[1274587504] /*replayPath=\\"CF/d:N\\"*/] +. . . . . . . . . √ [inc[1274586217],check[1274587504] /*replayPath=\\"CF/d:N\\"*/] +. . . . . . . . . × [inc[1274588648],check[1274587504] /*replayPath=\\"CF/d:N\\"*/] +. . . . . . . . . . √ [check[1274587504] /*replayPath=\\"CF/d:N\\"*/] +. . . . . . . . . . √ [inc[637294324],check[1274587504] /*replayPath=\\"CF/d:N\\"*/] +. . . . . . . . . . √ [inc[955941486],check[1274587504] /*replayPath=\\"CF/d:N\\"*/] +. . . . . . . . . . √ [inc[1115265067],check[1274587504] /*replayPath=\\"CF/d:N\\"*/] +. . . . . . . . . . √ [inc[1194926858],check[1274587504] /*replayPath=\\"CF/d:N\\"*/] +. . . . . . . . . . √ [inc[1234757753],check[1274587504] /*replayPath=\\"CF/d:N\\"*/] +. . . . . . . . . . √ [inc[1254673201],check[1274587504] /*replayPath=\\"CF/d:N\\"*/] +. . . . . . . . . . √ [inc[1264630925],check[1274587504] /*replayPath=\\"CF/d:N\\"*/] +. . . . . . . . . . √ [inc[1269609787],check[1274587504] /*replayPath=\\"CF/d:N\\"*/] +. . . . . . . . . . √ [inc[1272099218],check[1274587504] /*replayPath=\\"CF/d:N\\"*/] +. . . . . . . . . . √ [inc[1273343933],check[1274587504] /*replayPath=\\"CF/d:N\\"*/] +. . . . . . . . . . √ [inc[1273966291],check[1274587504] /*replayPath=\\"CF/d:N\\"*/] +. . . . . . . . . . √ [inc[1274277470],check[1274587504] /*replayPath=\\"CF/d:N\\"*/] +. . . . . . . . . . √ [inc[1274433059],check[1274587504] /*replayPath=\\"CF/d:N\\"*/] +. . . . . . . . . . √ [inc[1274510854],check[1274587504] /*replayPath=\\"CF/d:N\\"*/] +. . . . . . . . . . √ [inc[1274549751],check[1274587504] /*replayPath=\\"CF/d:N\\"*/] +. . . . . . . . . . √ [inc[1274569200],check[1274587504] /*replayPath=\\"CF/d:N\\"*/] +. . . . . . . . . . √ [inc[1274578924],check[1274587504] /*replayPath=\\"CF/d:N\\"*/] +. . . . . . . . . . √ [inc[1274583786],check[1274587504] /*replayPath=\\"CF/d:N\\"*/] +. . . . . . . . . . √ [inc[1274586217],check[1274587504] /*replayPath=\\"CF/d:N\\"*/] +. . . . . . . . . . √ [inc[1274587433],check[1274587504] /*replayPath=\\"CF/d:N\\"*/] +. . . . . . . . . . × [inc[1274588041],check[1274587504] /*replayPath=\\"CF/d:N\\"*/] +. . . . . . . . . . . √ [check[1274587504] /*replayPath=\\"CF/d:N\\"*/] +. . . . . . . . . . . √ [inc[637294021],check[1274587504] /*replayPath=\\"CF/d:N\\"*/] +. . . . . . . . . . . √ [inc[955941031],check[1274587504] /*replayPath=\\"CF/d:N\\"*/] +. . . . . . . . . . . √ [inc[1115264536],check[1274587504] /*replayPath=\\"CF/d:N\\"*/] +. . . . . . . . . . . √ [inc[1194926289],check[1274587504] /*replayPath=\\"CF/d:N\\"*/] +. . . . . . . . . . . √ [inc[1234757165],check[1274587504] /*replayPath=\\"CF/d:N\\"*/] +. . . . . . . . . . . √ [inc[1254672603],check[1274587504] /*replayPath=\\"CF/d:N\\"*/] +. . . . . . . . . . . √ [inc[1264630322],check[1274587504] /*replayPath=\\"CF/d:N\\"*/] +. . . . . . . . . . . √ [inc[1269609182],check[1274587504] /*replayPath=\\"CF/d:N\\"*/] +. . . . . . . . . . . √ [inc[1272098612],check[1274587504] /*replayPath=\\"CF/d:N\\"*/] +. . . . . . . . . . . √ [inc[1273343327],check[1274587504] /*replayPath=\\"CF/d:N\\"*/] +. . . . . . . . . . . √ [inc[1273965684],check[1274587504] /*replayPath=\\"CF/d:N\\"*/] +. . . . . . . . . . . √ [inc[1274276863],check[1274587504] /*replayPath=\\"CF/d:N\\"*/] +. . . . . . . . . . . √ [inc[1274432452],check[1274587504] /*replayPath=\\"CF/d:N\\"*/] +. . . . . . . . . . . √ [inc[1274510247],check[1274587504] /*replayPath=\\"CF/d:N\\"*/] +. . . . . . . . . . . √ [inc[1274549144],check[1274587504] /*replayPath=\\"CF/d:N\\"*/] +. . . . . . . . . . . √ [inc[1274568593],check[1274587504] /*replayPath=\\"CF/d:N\\"*/] +. . . . . . . . . . . √ [inc[1274578317],check[1274587504] /*replayPath=\\"CF/d:N\\"*/] +. . . . . . . . . . . √ [inc[1274583179],check[1274587504] /*replayPath=\\"CF/d:N\\"*/] +. . . . . . . . . . . √ [inc[1274585610],check[1274587504] /*replayPath=\\"CF/d:N\\"*/] +. . . . . . . . . . . √ [inc[1274586826],check[1274587504] /*replayPath=\\"CF/d:N\\"*/] +. . . . . . . . . . . √ [inc[1274587434],check[1274587504] /*replayPath=\\"CF/d:N\\"*/] +. . . . . . . . . . . × [inc[1274587738],check[1274587504] /*replayPath=\\"CF/d:N\\"*/] +. . . . . . . . . . . . √ [check[1274587504] /*replayPath=\\"CF/d:N\\"*/] +. . . . . . . . . . . . √ [inc[637293869],check[1274587504] /*replayPath=\\"CF/d:N\\"*/] +. . . . . . . . . . . . √ [inc[955940804],check[1274587504] /*replayPath=\\"CF/d:N\\"*/] +. . . . . . . . . . . . √ [inc[1115264271],check[1274587504] /*replayPath=\\"CF/d:N\\"*/] +. . . . . . . . . . . . √ [inc[1194926005],check[1274587504] /*replayPath=\\"CF/d:N\\"*/] +. . . . . . . . . . . . √ [inc[1234756872],check[1274587504] /*replayPath=\\"CF/d:N\\"*/] +. . . . . . . . . . . . √ [inc[1254672305],check[1274587504] /*replayPath=\\"CF/d:N\\"*/] +. . . . . . . . . . . . √ [inc[1264630022],check[1274587504] /*replayPath=\\"CF/d:N\\"*/] +. . . . . . . . . . . . √ [inc[1269608880],check[1274587504] /*replayPath=\\"CF/d:N\\"*/] +. . . . . . . . . . . . √ [inc[1272098309],check[1274587504] /*replayPath=\\"CF/d:N\\"*/] +. . . . . . . . . . . . √ [inc[1273343024],check[1274587504] /*replayPath=\\"CF/d:N\\"*/] +. . . . . . . . . . . . √ [inc[1273965381],check[1274587504] /*replayPath=\\"CF/d:N\\"*/] +. . . . . . . . . . . . √ [inc[1274276560],check[1274587504] /*replayPath=\\"CF/d:N\\"*/] +. . . . . . . . . . . . √ [inc[1274432149],check[1274587504] /*replayPath=\\"CF/d:N\\"*/] +. . . . . . . . . . . . √ [inc[1274509944],check[1274587504] /*replayPath=\\"CF/d:N\\"*/] +. . . . . . . . . . . . √ [inc[1274548841],check[1274587504] /*replayPath=\\"CF/d:N\\"*/] +. . . . . . . . . . . . √ [inc[1274568290],check[1274587504] /*replayPath=\\"CF/d:N\\"*/] +. . . . . . . . . . . . √ [inc[1274578014],check[1274587504] /*replayPath=\\"CF/d:N\\"*/] +. . . . . . . . . . . . √ [inc[1274582876],check[1274587504] /*replayPath=\\"CF/d:N\\"*/] +. . . . . . . . . . . . √ [inc[1274585307],check[1274587504] /*replayPath=\\"CF/d:N\\"*/] +. . . . . . . . . . . . √ [inc[1274586523],check[1274587504] /*replayPath=\\"CF/d:N\\"*/] +. . . . . . . . . . . . √ [inc[1274587131],check[1274587504] /*replayPath=\\"CF/d:N\\"*/] +. . . . . . . . . . . . √ [inc[1274587435],check[1274587504] /*replayPath=\\"CF/d:N\\"*/] +. . . . . . . . . . . . × [inc[1274587587],check[1274587504] /*replayPath=\\"CF/d:N\\"*/] +. . . . . . . . . . . . . √ [check[1274587504] /*replayPath=\\"CF/d:N\\"*/] +. . . . . . . . . . . . . √ [inc[637293794],check[1274587504] /*replayPath=\\"CF/d:N\\"*/] +. . . . . . . . . . . . . √ [inc[955940691],check[1274587504] /*replayPath=\\"CF/d:N\\"*/] +. . . . . . . . . . . . . √ [inc[1115264139],check[1274587504] /*replayPath=\\"CF/d:N\\"*/] +. . . . . . . . . . . . . √ [inc[1194925863],check[1274587504] /*replayPath=\\"CF/d:N\\"*/] +. . . . . . . . . . . . . √ [inc[1234756725],check[1274587504] /*replayPath=\\"CF/d:N\\"*/] +. . . . . . . . . . . . . √ [inc[1254672156],check[1274587504] /*replayPath=\\"CF/d:N\\"*/] +. . . . . . . . . . . . . √ [inc[1264629872],check[1274587504] /*replayPath=\\"CF/d:N\\"*/] +. . . . . . . . . . . . . √ [inc[1269608730],check[1274587504] /*replayPath=\\"CF/d:N\\"*/] +. . . . . . . . . . . . . √ [inc[1272098159],check[1274587504] /*replayPath=\\"CF/d:N\\"*/] +. . . . . . . . . . . . . √ [inc[1273342873],check[1274587504] /*replayPath=\\"CF/d:N\\"*/] +. . . . . . . . . . . . . √ [inc[1273965230],check[1274587504] /*replayPath=\\"CF/d:N\\"*/] +. . . . . . . . . . . . . √ [inc[1274276409],check[1274587504] /*replayPath=\\"CF/d:N\\"*/] +. . . . . . . . . . . . . √ [inc[1274431998],check[1274587504] /*replayPath=\\"CF/d:N\\"*/] +. . . . . . . . . . . . . √ [inc[1274509793],check[1274587504] /*replayPath=\\"CF/d:N\\"*/] +. . . . . . . . . . . . . √ [inc[1274548690],check[1274587504] /*replayPath=\\"CF/d:N\\"*/] +. . . . . . . . . . . . . √ [inc[1274568139],check[1274587504] /*replayPath=\\"CF/d:N\\"*/] +. . . . . . . . . . . . . √ [inc[1274577863],check[1274587504] /*replayPath=\\"CF/d:N\\"*/] +. . . . . . . . . . . . . √ [inc[1274582725],check[1274587504] /*replayPath=\\"CF/d:N\\"*/] +. . . . . . . . . . . . . √ [inc[1274585156],check[1274587504] /*replayPath=\\"CF/d:N\\"*/] +. . . . . . . . . . . . . √ [inc[1274586372],check[1274587504] /*replayPath=\\"CF/d:N\\"*/] +. . . . . . . . . . . . . √ [inc[1274586980],check[1274587504] /*replayPath=\\"CF/d:N\\"*/] +. . . . . . . . . . . . . √ [inc[1274587284],check[1274587504] /*replayPath=\\"CF/d:N\\"*/] +. . . . . . . . . . . . . √ [inc[1274587436],check[1274587504] /*replayPath=\\"CF/d:N\\"*/] +. . . . . . . . . . . . . × [inc[1274587512],check[1274587504] /*replayPath=\\"CF/d:N\\"*/] +. . . . . . . . . . . . . . √ [check[1274587504] /*replayPath=\\"CF/d:N\\"*/] +. . . . . . . . . . . . . . √ [inc[637293756],check[1274587504] /*replayPath=\\"CF/d:N\\"*/] +. . . . . . . . . . . . . . √ [inc[955940634],check[1274587504] /*replayPath=\\"CF/d:N\\"*/] +. . . . . . . . . . . . . . √ [inc[1115264073],check[1274587504] /*replayPath=\\"CF/d:N\\"*/] +. . . . . . . . . . . . . . √ [inc[1194925793],check[1274587504] /*replayPath=\\"CF/d:N\\"*/] +. . . . . . . . . . . . . . √ [inc[1234756653],check[1274587504] /*replayPath=\\"CF/d:N\\"*/] +. . . . . . . . . . . . . . √ [inc[1254672083],check[1274587504] /*replayPath=\\"CF/d:N\\"*/] +. . . . . . . . . . . . . . √ [inc[1264629798],check[1274587504] /*replayPath=\\"CF/d:N\\"*/] +. . . . . . . . . . . . . . √ [inc[1269608655],check[1274587504] /*replayPath=\\"CF/d:N\\"*/] +. . . . . . . . . . . . . . √ [inc[1272098084],check[1274587504] /*replayPath=\\"CF/d:N\\"*/] +. . . . . . . . . . . . . . √ [inc[1273342798],check[1274587504] /*replayPath=\\"CF/d:N\\"*/] +. . . . . . . . . . . . . . √ [inc[1273965155],check[1274587504] /*replayPath=\\"CF/d:N\\"*/] +. . . . . . . . . . . . . . √ [inc[1274276334],check[1274587504] /*replayPath=\\"CF/d:N\\"*/] +. . . . . . . . . . . . . . √ [inc[1274431923],check[1274587504] /*replayPath=\\"CF/d:N\\"*/] +. . . . . . . . . . . . . . √ [inc[1274509718],check[1274587504] /*replayPath=\\"CF/d:N\\"*/] +. . . . . . . . . . . . . . √ [inc[1274548615],check[1274587504] /*replayPath=\\"CF/d:N\\"*/] +. . . . . . . . . . . . . . √ [inc[1274568064],check[1274587504] /*replayPath=\\"CF/d:N\\"*/] +. . . . . . . . . . . . . . √ [inc[1274577788],check[1274587504] /*replayPath=\\"CF/d:N\\"*/] +. . . . . . . . . . . . . . √ [inc[1274582650],check[1274587504] /*replayPath=\\"CF/d:N\\"*/] +. . . . . . . . . . . . . . √ [inc[1274585081],check[1274587504] /*replayPath=\\"CF/d:N\\"*/] +. . . . . . . . . . . . . . √ [inc[1274586297],check[1274587504] /*replayPath=\\"CF/d:N\\"*/] +. . . . . . . . . . . . . . √ [inc[1274586905],check[1274587504] /*replayPath=\\"CF/d:N\\"*/] +. . . . . . . . . . . . . . √ [inc[1274587209],check[1274587504] /*replayPath=\\"CF/d:N\\"*/] +. . . . . . . . . . . . . . √ [inc[1274587361],check[1274587504] /*replayPath=\\"CF/d:N\\"*/] +. . . . . . . . . . . . . . √ [inc[1274587437],check[1274587504] /*replayPath=\\"CF/d:N\\"*/] +. . . . . . . . . . . . . . √ [inc[1274587475],check[1274587504] /*replayPath=\\"CF/d:N\\"*/] +. . . . . . . . . . . . . . √ [inc[1274587494],check[1274587504] /*replayPath=\\"CF/d:N\\"*/] +. . . . . . . . . . . . . . √ [inc[1274587503],check[1274587504] /*replayPath=\\"CF/d:N\\"*/] +. . . . . . . . . . . . . . × [inc[1274587508],check[1274587504] /*replayPath=\\"CF/d:N\\"*/] +. . . . . . . . . . . . . . . √ [check[1274587504] /*replayPath=\\"CF/d:N\\"*/] +. . . . . . . . . . . . . . . √ [inc[637293754],check[1274587504] /*replayPath=\\"CF/d:N\\"*/] +. . . . . . . . . . . . . . . √ [inc[955940631],check[1274587504] /*replayPath=\\"CF/d:N\\"*/] +. . . . . . . . . . . . . . . √ [inc[1115264070],check[1274587504] /*replayPath=\\"CF/d:N\\"*/] +. . . . . . . . . . . . . . . √ [inc[1194925789],check[1274587504] /*replayPath=\\"CF/d:N\\"*/] +. . . . . . . . . . . . . . . √ [inc[1234756649],check[1274587504] /*replayPath=\\"CF/d:N\\"*/] +. . . . . . . . . . . . . . . √ [inc[1254672079],check[1274587504] /*replayPath=\\"CF/d:N\\"*/] +. . . . . . . . . . . . . . . √ [inc[1264629794],check[1274587504] /*replayPath=\\"CF/d:N\\"*/] +. . . . . . . . . . . . . . . √ [inc[1269608651],check[1274587504] /*replayPath=\\"CF/d:N\\"*/] +. . . . . . . . . . . . . . . √ [inc[1272098080],check[1274587504] /*replayPath=\\"CF/d:N\\"*/] +. . . . . . . . . . . . . . . √ [inc[1273342794],check[1274587504] /*replayPath=\\"CF/d:N\\"*/] +. . . . . . . . . . . . . . . √ [inc[1273965151],check[1274587504] /*replayPath=\\"CF/d:N\\"*/] +. . . . . . . . . . . . . . . √ [inc[1274276330],check[1274587504] /*replayPath=\\"CF/d:N\\"*/] +. . . . . . . . . . . . . . . √ [inc[1274431919],check[1274587504] /*replayPath=\\"CF/d:N\\"*/] +. . . . . . . . . . . . . . . √ [inc[1274509714],check[1274587504] /*replayPath=\\"CF/d:N\\"*/] +. . . . . . . . . . . . . . . √ [inc[1274548611],check[1274587504] /*replayPath=\\"CF/d:N\\"*/] +. . . . . . . . . . . . . . . √ [inc[1274568060],check[1274587504] /*replayPath=\\"CF/d:N\\"*/] +. . . . . . . . . . . . . . . √ [inc[1274577784],check[1274587504] /*replayPath=\\"CF/d:N\\"*/] +. . . . . . . . . . . . . . . √ [inc[1274582646],check[1274587504] /*replayPath=\\"CF/d:N\\"*/] +. . . . . . . . . . . . . . . √ [inc[1274585077],check[1274587504] /*replayPath=\\"CF/d:N\\"*/] +. . . . . . . . . . . . . . . √ [inc[1274586293],check[1274587504] /*replayPath=\\"CF/d:N\\"*/] +. . . . . . . . . . . . . . . √ [inc[1274586901],check[1274587504] /*replayPath=\\"CF/d:N\\"*/] +. . . . . . . . . . . . . . . √ [inc[1274587205],check[1274587504] /*replayPath=\\"CF/d:N\\"*/] +. . . . . . . . . . . . . . . √ [inc[1274587357],check[1274587504] /*replayPath=\\"CF/d:N\\"*/] +. . . . . . . . . . . . . . . √ [inc[1274587433],check[1274587504] /*replayPath=\\"CF/d:N\\"*/] +. . . . . . . . . . . . . . . √ [inc[1274587471],check[1274587504] /*replayPath=\\"CF/d:N\\"*/] +. . . . . . . . . . . . . . . √ [inc[1274587490],check[1274587504] /*replayPath=\\"CF/d:N\\"*/] +. . . . . . . . . . . . . . . √ [inc[1274587499],check[1274587504] /*replayPath=\\"CF/d:N\\"*/] +. . . . . . . . . . . . . . . × [inc[1274587504],check[1274587504] /*replayPath=\\"CF/d:N\\"*/] +. . . . . . . . . . . . . . . . √ [check[1274587504] /*replayPath=\\"CF/d:N\\"*/] +. . . . . . . . . . . . . . . . √ [inc[637293752],check[1274587504] /*replayPath=\\"CF/d:N\\"*/] +. . . . . . . . . . . . . . . . √ [inc[955940628],check[1274587504] /*replayPath=\\"CF/d:N\\"*/] +. . . . . . . . . . . . . . . . √ [inc[1115264066],check[1274587504] /*replayPath=\\"CF/d:N\\"*/] +. . . . . . . . . . . . . . . . √ [inc[1194925785],check[1274587504] /*replayPath=\\"CF/d:N\\"*/] +. . . . . . . . . . . . . . . . √ [inc[1234756645],check[1274587504] /*replayPath=\\"CF/d:N\\"*/] +. . . . . . . . . . . . . . . . √ [inc[1254672075],check[1274587504] /*replayPath=\\"CF/d:N\\"*/] +. . . . . . . . . . . . . . . . √ [inc[1264629790],check[1274587504] /*replayPath=\\"CF/d:N\\"*/] +. . . . . . . . . . . . . . . . √ [inc[1269608647],check[1274587504] /*replayPath=\\"CF/d:N\\"*/] +. . . . . . . . . . . . . . . . √ [inc[1272098076],check[1274587504] /*replayPath=\\"CF/d:N\\"*/] +. . . . . . . . . . . . . . . . √ [inc[1273342790],check[1274587504] /*replayPath=\\"CF/d:N\\"*/] +. . . . . . . . . . . . . . . . √ [inc[1273965147],check[1274587504] /*replayPath=\\"CF/d:N\\"*/] +. . . . . . . . . . . . . . . . √ [inc[1274276326],check[1274587504] /*replayPath=\\"CF/d:N\\"*/] +. . . . . . . . . . . . . . . . √ [inc[1274431915],check[1274587504] /*replayPath=\\"CF/d:N\\"*/] +. . . . . . . . . . . . . . . . √ [inc[1274509710],check[1274587504] /*replayPath=\\"CF/d:N\\"*/] +. . . . . . . . . . . . . . . . √ [inc[1274548607],check[1274587504] /*replayPath=\\"CF/d:N\\"*/] +. . . . . . . . . . . . . . . . √ [inc[1274568056],check[1274587504] /*replayPath=\\"CF/d:N\\"*/] +. . . . . . . . . . . . . . . . √ [inc[1274577780],check[1274587504] /*replayPath=\\"CF/d:N\\"*/] +. . . . . . . . . . . . . . . . √ [inc[1274582642],check[1274587504] /*replayPath=\\"CF/d:N\\"*/] +. . . . . . . . . . . . . . . . √ [inc[1274585073],check[1274587504] /*replayPath=\\"CF/d:N\\"*/] +. . . . . . . . . . . . . . . . √ [inc[1274586289],check[1274587504] /*replayPath=\\"CF/d:N\\"*/] +. . . . . . . . . . . . . . . . √ [inc[1274586897],check[1274587504] /*replayPath=\\"CF/d:N\\"*/] +. . . . . . . . . . . . . . . . √ [inc[1274587201],check[1274587504] /*replayPath=\\"CF/d:N\\"*/] +. . . . . . . . . . . . . . . . √ [inc[1274587353],check[1274587504] /*replayPath=\\"CF/d:N\\"*/] +. . . . . . . . . . . . . . . . √ [inc[1274587429],check[1274587504] /*replayPath=\\"CF/d:N\\"*/] +. . . . . . . . . . . . . . . . √ [inc[1274587467],check[1274587504] /*replayPath=\\"CF/d:N\\"*/] +. . . . . . . . . . . . . . . . √ [inc[1274587486],check[1274587504] /*replayPath=\\"CF/d:N\\"*/] +. . . . . . . . . . . . . . . . √ [inc[1274587495],check[1274587504] /*replayPath=\\"CF/d:N\\"*/] +. . . . . . . . . . . . . . . . √ [inc[1274587500],check[1274587504] /*replayPath=\\"CF/d:N\\"*/] +. . . . . . . . . . . . . . . . √ [inc[1274587502],check[1274587504] /*replayPath=\\"CF/d:N\\"*/] +. . . . . . . . . . . . . . . . √ [inc[1274587503],check[1274587504] /*replayPath=\\"CF/d:N\\"*/] +. . . . . . . . . . . . . . . . × [inc[1274587504],check[1] /*replayPath=\\"CF/d:N\\"*/] +. . . . . . . . . . . . . . . . . √ [check[1] /*replayPath=\\"CF/d:N\\"*/] +. . . . . . . . . . . . . . . . . × [inc[637293752],check[1] /*replayPath=\\"CF/d:N\\"*/] +. . . . . . . . . . . . . . . . . . √ [check[1] /*replayPath=\\"CF/d:N\\"*/] +. . . . . . . . . . . . . . . . . . × [inc[318646876],check[1] /*replayPath=\\"CF/d:N\\"*/] +. . . . . . . . . . . . . . . . . . . √ [check[1] /*replayPath=\\"CF/d:N\\"*/] +. . . . . . . . . . . . . . . . . . . × [inc[159323438],check[1] /*replayPath=\\"CF/d:N\\"*/] +. . . . . . . . . . . . . . . . . . . . √ [check[1] /*replayPath=\\"CF/d:N\\"*/] +. . . . . . . . . . . . . . . . . . . . × [inc[79661719],check[1] /*replayPath=\\"CF/d:N\\"*/] +. . . . . . . . . . . . . . . . . . . . . √ [check[1] /*replayPath=\\"CF/d:N\\"*/] +. . . . . . . . . . . . . . . . . . . . . × [inc[39830860],check[1] /*replayPath=\\"CF/d:N\\"*/] +. . . . . . . . . . . . . . . . . . . . . . √ [check[1] /*replayPath=\\"CF/d:N\\"*/] +. . . . . . . . . . . . . . . . . . . . . . × [inc[19915430],check[1] /*replayPath=\\"CF/d:N\\"*/] +. . . . . . . . . . . . . . . . . . . . . . . √ [check[1] /*replayPath=\\"CF/d:N\\"*/] +. . . . . . . . . . . . . . . . . . . . . . . × [inc[9957715],check[1] /*replayPath=\\"CF/d:N\\"*/] +. . . . . . . . . . . . . . . . . . . . . . . . √ [check[1] /*replayPath=\\"CF/d:N\\"*/] +. . . . . . . . . . . . . . . . . . . . . . . . × [inc[4978858],check[1] /*replayPath=\\"CF/d:N\\"*/] +. . . . . . . . . . . . . . . . . . . . . . . . . √ [check[1] /*replayPath=\\"CF/d:N\\"*/] +. . . . . . . . . . . . . . . . . . . . . . . . . × [inc[2489429],check[1] /*replayPath=\\"CF/d:N\\"*/] +. . . . . . . . . . . . . . . . . . . . . . . . . . √ [check[1] /*replayPath=\\"CF/d:N\\"*/] +. . . . . . . . . . . . . . . . . . . . . . . . . . × [inc[1244715],check[1] /*replayPath=\\"CF/d:N\\"*/] +. . . . . . . . . . . . . . . . . . . . . . . . . . . √ [check[1] /*replayPath=\\"CF/d:N\\"*/] +. . . . . . . . . . . . . . . . . . . . . . . . . . . × [inc[622358],check[1] /*replayPath=\\"CF/d:N\\"*/] +. . . . . . . . . . . . . . . . . . . . . . . . . . . . √ [check[1] /*replayPath=\\"CF/d:N\\"*/] +. . . . . . . . . . . . . . . . . . . . . . . . . . . . × [inc[311179],check[1] /*replayPath=\\"CF/d:N\\"*/] +. . . . . . . . . . . . . . . . . . . . . . . . . . . . . √ [check[1] /*replayPath=\\"CF/d:N\\"*/] +. . . . . . . . . . . . . . . . . . . . . . . . . . . . . × [inc[155590],check[1] /*replayPath=\\"CF/d:N\\"*/] +. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . √ [check[1] /*replayPath=\\"CF/d:N\\"*/] +. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . × [inc[77795],check[1] /*replayPath=\\"CF/d:N\\"*/] +. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . √ [check[1] /*replayPath=\\"CF/d:N\\"*/] +. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . × [inc[38898],check[1] /*replayPath=\\"CF/d:N\\"*/] +. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . √ [check[1] /*replayPath=\\"CF/d:N\\"*/] +. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . × [inc[19449],check[1] /*replayPath=\\"CF/d:N\\"*/] +. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . √ [check[1] /*replayPath=\\"CF/d:N\\"*/] +. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . × [inc[9725],check[1] /*replayPath=\\"CF/d:N\\"*/] +. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . √ [check[1] /*replayPath=\\"CF/d:N\\"*/] +. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . × [inc[4863],check[1] /*replayPath=\\"CF/d:N\\"*/] +. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . √ [check[1] /*replayPath=\\"CF/d:N\\"*/] +. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . × [inc[2432],check[1] /*replayPath=\\"CF/d:N\\"*/] +. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . √ [check[1] /*replayPath=\\"CF/d:N\\"*/] +. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . × [inc[1216],check[1] /*replayPath=\\"CF/d:N\\"*/] +. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . √ [check[1] /*replayPath=\\"CF/d:N\\"*/] +. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . × [inc[608],check[1] /*replayPath=\\"CF/d:N\\"*/] +. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . √ [check[1] /*replayPath=\\"CF/d:N\\"*/] +. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . × [inc[304],check[1] /*replayPath=\\"CF/d:N\\"*/] +. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . √ [check[1] /*replayPath=\\"CF/d:N\\"*/] +. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . × [inc[152],check[1] /*replayPath=\\"CF/d:N\\"*/] +. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . √ [check[1] /*replayPath=\\"CF/d:N\\"*/] +. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . × [inc[76],check[1] /*replayPath=\\"CF/d:N\\"*/] +. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . √ [check[1] /*replayPath=\\"CF/d:N\\"*/] +. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . × [inc[38],check[1] /*replayPath=\\"CF/d:N\\"*/] +. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . √ [check[1] /*replayPath=\\"CF/d:N\\"*/] +. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . × [inc[19],check[1] /*replayPath=\\"CF/d:N\\"*/] +. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . √ [check[1] /*replayPath=\\"CF/d:N\\"*/] +. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . × [inc[10],check[1] /*replayPath=\\"CF/d:N\\"*/] +. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . √ [check[1] /*replayPath=\\"CF/d:N\\"*/] +. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . × [inc[5],check[1] /*replayPath=\\"CF/d:N\\"*/] +. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . √ [check[1] /*replayPath=\\"CF/d:N\\"*/] +. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . × [inc[3],check[1] /*replayPath=\\"CF/d:N\\"*/] +. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . √ [check[1] /*replayPath=\\"CF/d:N\\"*/] +. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . × [inc[2],check[1] /*replayPath=\\"CF/d:N\\"*/] +. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . √ [check[1] /*replayPath=\\"CF/d:N\\"*/] +. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . × [inc[1],check[1] /*replayPath=\\"CF/d:N\\"*/] +. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . √ [check[1] /*replayPath=\\"CF/d:N\\"*/]" +`; + exports[`NoRegression compareFunc 1`] = ` "Property failed after 1 tests { seed: 42, path: \\"0\\", endOnFailure: true } diff --git a/test/e2e/model/CommandsArbitrary.spec.ts b/test/e2e/model/CommandsArbitrary.spec.ts index 88f7cecfa53..c04846eba8b 100644 --- a/test/e2e/model/CommandsArbitrary.spec.ts +++ b/test/e2e/model/CommandsArbitrary.spec.ts @@ -1,66 +1,13 @@ import * as fc from '../../../src/fast-check'; - -type M1 = { count: number }; -type R1 = {}; - -class IncreaseCommand implements fc.Command { - constructor(readonly n: number) {} - check = (m: Readonly) => true; - run = (m: M1, r: R1) => { - m.count += this.n; - }; - toString = () => `inc[${this.n}]`; -} -class DecreaseCommand implements fc.Command { - constructor(readonly n: number) {} - check = (m: Readonly) => true; - run = (m: M1, r: R1) => { - m.count -= this.n; - }; - toString = () => `dec[${this.n}]`; -} -class EvenCommand implements fc.Command { - check = (m: Readonly) => m.count % 2 === 0; - run = (m: M1, r: R1) => {}; - toString = () => 'even'; -} -class OddCommand implements fc.Command { - check = (m: Readonly) => m.count % 2 !== 0; - run = (m: M1, r: R1) => {}; - toString = () => 'odd'; -} -class CheckLessThanCommand implements fc.Command { - constructor(readonly lessThanValue: number) {} - check = (m: Readonly) => true; - run = (m: M1, r: R1) => { - expect(m.count).toBeLessThan(this.lessThanValue); - }; - toString = () => `check[${this.lessThanValue}]`; -} -class SuccessAlwaysCommand implements fc.Command { - check = (m: Readonly) => true; - run = (m: M1, r: R1) => {}; - toString = () => 'success'; -} - -type M2 = { - current: { stepId: number }; - validSteps: number[]; -}; -type R2 = {}; - -class SuccessCommand implements fc.Command { - check = (m: Readonly) => m.validSteps.includes(m.current.stepId++); - run = (m: M2, r: R2) => {}; - toString = () => 'success'; -} -class FailureCommand implements fc.Command { - check = (m: Readonly) => m.validSteps.includes(m.current.stepId++); - run = (m: M2, r: R2) => { - throw 'failure'; - }; - toString = () => 'failure'; -} +import { FailureCommand, SuccessCommand } from './StepCommands'; +import { + IncreaseCommand, + DecreaseCommand, + EvenCommand, + OddCommand, + CheckLessThanCommand, + SuccessAlwaysCommand +} from './CounterCommands'; const seed = Date.now(); describe(`CommandsArbitrary (seed: ${seed})`, () => { diff --git a/test/e2e/model/CounterCommands.ts b/test/e2e/model/CounterCommands.ts new file mode 100644 index 00000000000..c00d5d9abfc --- /dev/null +++ b/test/e2e/model/CounterCommands.ts @@ -0,0 +1,44 @@ +import * as fc from '../../../src/fast-check'; + +type M1 = { count: number }; +type R1 = {}; + +export class IncreaseCommand implements fc.Command { + constructor(readonly n: number) {} + check = (m: Readonly) => true; + run = (m: M1, r: R1) => { + m.count += this.n; + }; + toString = () => `inc[${this.n}]`; +} +export class DecreaseCommand implements fc.Command { + constructor(readonly n: number) {} + check = (m: Readonly) => true; + run = (m: M1, r: R1) => { + m.count -= this.n; + }; + toString = () => `dec[${this.n}]`; +} +export class EvenCommand implements fc.Command { + check = (m: Readonly) => m.count % 2 === 0; + run = (m: M1, r: R1) => {}; + toString = () => 'even'; +} +export class OddCommand implements fc.Command { + check = (m: Readonly) => m.count % 2 !== 0; + run = (m: M1, r: R1) => {}; + toString = () => 'odd'; +} +export class CheckLessThanCommand implements fc.Command { + constructor(readonly lessThanValue: number) {} + check = (m: Readonly) => true; + run = (m: M1, r: R1) => { + expect(m.count).toBeLessThan(this.lessThanValue); + }; + toString = () => `check[${this.lessThanValue}]`; +} +export class SuccessAlwaysCommand implements fc.Command { + check = (m: Readonly) => true; + run = (m: M1, r: R1) => {}; + toString = () => 'success'; +} diff --git a/test/e2e/model/StepCommands.ts b/test/e2e/model/StepCommands.ts new file mode 100644 index 00000000000..fd150c38c5a --- /dev/null +++ b/test/e2e/model/StepCommands.ts @@ -0,0 +1,20 @@ +import * as fc from '../../../src/fast-check'; + +type M2 = { + current: { stepId: number }; + validSteps: number[]; +}; +type R2 = {}; + +export class SuccessCommand implements fc.Command { + check = (m: Readonly) => m.validSteps.includes(m.current.stepId++); + run = (m: M2, r: R2) => {}; + toString = () => 'success'; +} +export class FailureCommand implements fc.Command { + check = (m: Readonly) => m.validSteps.includes(m.current.stepId++); + run = (m: M2, r: R2) => { + throw 'failure'; + }; + toString = () => 'failure'; +}