diff options
| author | Shinigami <[email protected]> | 2022-10-30 09:03:26 +0100 |
|---|---|---|
| committer | GitHub <[email protected]> | 2022-10-30 08:03:26 +0000 |
| commit | 9abfcfb90cc73bfe961d446f5fb950976d5c2ccd (patch) | |
| tree | 1e76203a6cfd8bb6c2b83734fee4cebf56db5072 /test | |
| parent | 4da3d5eac3805f609f4e40385aee6a645fd93540 (diff) | |
| download | faker-9abfcfb90cc73bfe961d446f5fb950976d5c2ccd.tar.xz faker-9abfcfb90cc73bfe961d446f5fb950976d5c2ccd.zip | |
refactor(mersenne): rewrite internal mersenne (#1447)
Diffstat (limited to 'test')
| -rw-r--r-- | test/__snapshots__/mersenne.spec.ts.snap | 48 | ||||
| -rw-r--r-- | test/mersenne.spec.ts | 75 |
2 files changed, 33 insertions, 90 deletions
diff --git a/test/__snapshots__/mersenne.spec.ts.snap b/test/__snapshots__/mersenne.spec.ts.snap index 1c221b19..21d3e4cc 100644 --- a/test/__snapshots__/mersenne.spec.ts.snap +++ b/test/__snapshots__/mersenne.spec.ts.snap @@ -1,49 +1,37 @@ // Vitest Snapshot v1 -exports[`mersenne twister > seed: [42,1,2] > rand() 1`] = `28056`; +exports[`mersenne twister > seed: [42,1,2] > should return deterministic values for next({ min: -50, max: 60 }) 1`] = `44`; -exports[`mersenne twister > seed: [42,1,2] > should return deterministic values for rand(100, 0) 1`] = `85`; +exports[`mersenne twister > seed: [42,1,2] > should return deterministic values for next({ min: -60, max: 0 }) 1`] = `-9`; -exports[`mersenne twister > seed: [42,1,2] > should return deterministic values for rand(100, undefined) 1`] = `85`; +exports[`mersenne twister > seed: [42,1,2] > should return deterministic values for next({ min: 0, max: 100 }) 1`] = `85`; -exports[`mersenne twister > seed: [42,1,2] > should return deterministic values for rand(undefined, 0) 1`] = `28056`; +exports[`mersenne twister > seed: [1211,1,2] > should return deterministic values for next({ min: -50, max: 60 }) 1`] = `48`; -exports[`mersenne twister > seed: [1211,1,2] > rand() 1`] = `29217`; +exports[`mersenne twister > seed: [1211,1,2] > should return deterministic values for next({ min: -60, max: 0 }) 1`] = `-7`; -exports[`mersenne twister > seed: [1211,1,2] > should return deterministic values for rand(100, 0) 1`] = `89`; +exports[`mersenne twister > seed: [1211,1,2] > should return deterministic values for next({ min: 0, max: 100 }) 1`] = `89`; -exports[`mersenne twister > seed: [1211,1,2] > should return deterministic values for rand(100, undefined) 1`] = `89`; +exports[`mersenne twister > seed: [1337,1,2] > should return deterministic values for next({ min: -50, max: 60 }) 1`] = `-31`; -exports[`mersenne twister > seed: [1211,1,2] > should return deterministic values for rand(undefined, 0) 1`] = `29217`; +exports[`mersenne twister > seed: [1337,1,2] > should return deterministic values for next({ min: -60, max: 0 }) 1`] = `-50`; -exports[`mersenne twister > seed: [1337,1,2] > rand() 1`] = `5895`; +exports[`mersenne twister > seed: [1337,1,2] > should return deterministic values for next({ min: 0, max: 100 }) 1`] = `17`; -exports[`mersenne twister > seed: [1337,1,2] > should return deterministic values for rand(100, 0) 1`] = `17`; +exports[`mersenne twister > seed: 42 > should return deterministic values for next({ min: -50, max: 60 }) 1`] = `-9`; -exports[`mersenne twister > seed: [1337,1,2] > should return deterministic values for rand(100, undefined) 1`] = `17`; +exports[`mersenne twister > seed: 42 > should return deterministic values for next({ min: -60, max: 0 }) 1`] = `-38`; -exports[`mersenne twister > seed: [1337,1,2] > should return deterministic values for rand(undefined, 0) 1`] = `5895`; +exports[`mersenne twister > seed: 42 > should return deterministic values for next({ min: 0, max: 100 }) 1`] = `37`; -exports[`mersenne twister > seed: 42 > rand() 1`] = `12272`; +exports[`mersenne twister > seed: 1211 > should return deterministic values for next({ min: -50, max: 60 }) 1`] = `52`; -exports[`mersenne twister > seed: 42 > should return deterministic values for rand(100, 0) 1`] = `37`; +exports[`mersenne twister > seed: 1211 > should return deterministic values for next({ min: -60, max: 0 }) 1`] = `-5`; -exports[`mersenne twister > seed: 42 > should return deterministic values for rand(100, undefined) 1`] = `37`; +exports[`mersenne twister > seed: 1211 > should return deterministic values for next({ min: 0, max: 100 }) 1`] = `92`; -exports[`mersenne twister > seed: 42 > should return deterministic values for rand(undefined, 0) 1`] = `12272`; +exports[`mersenne twister > seed: 1337 > should return deterministic values for next({ min: -50, max: 60 }) 1`] = `-22`; -exports[`mersenne twister > seed: 1211 > rand() 1`] = `30425`; +exports[`mersenne twister > seed: 1337 > should return deterministic values for next({ min: -60, max: 0 }) 1`] = `-45`; -exports[`mersenne twister > seed: 1211 > should return deterministic values for rand(100, 0) 1`] = `92`; - -exports[`mersenne twister > seed: 1211 > should return deterministic values for rand(100, undefined) 1`] = `92`; - -exports[`mersenne twister > seed: 1211 > should return deterministic values for rand(undefined, 0) 1`] = `30425`; - -exports[`mersenne twister > seed: 1337 > rand() 1`] = `8586`; - -exports[`mersenne twister > seed: 1337 > should return deterministic values for rand(100, 0) 1`] = `26`; - -exports[`mersenne twister > seed: 1337 > should return deterministic values for rand(100, undefined) 1`] = `26`; - -exports[`mersenne twister > seed: 1337 > should return deterministic values for rand(undefined, 0) 1`] = `8586`; +exports[`mersenne twister > seed: 1337 > should return deterministic values for next({ min: 0, max: 100 }) 1`] = `26`; diff --git a/test/mersenne.spec.ts b/test/mersenne.spec.ts index 6b0a3125..f6585783 100644 --- a/test/mersenne.spec.ts +++ b/test/mersenne.spec.ts @@ -1,53 +1,39 @@ import { beforeAll, beforeEach, describe, expect, it } from 'vitest'; -import { FakerError } from '../src/errors/faker-error'; -import { MersenneModule } from '../src/internal/mersenne/mersenne'; +import type { Mersenne } from '../src/internal/mersenne/mersenne'; +import mersenneFn from '../src/internal/mersenne/mersenne'; import { seededRuns } from './support/seededRuns'; const minMaxTestCases = [ - { max: 100, min: 0 }, - { max: undefined, min: 0 }, - { max: 100, min: undefined }, + { min: 0, max: 100 }, + { min: -60, max: 0 }, + { min: -50, max: 60 }, ]; -const functionNames = ['rand']; - const NON_SEEDED_BASED_RUN = 25; describe('mersenne twister', () => { - let mersenne: MersenneModule; + let mersenne: Mersenne; beforeEach(() => { - mersenne = new MersenneModule(); + mersenne = mersenneFn(); }); for (const seed of [...seededRuns, [42, 1, 2], [1337, 1, 2], [1211, 1, 2]]) { describe(`seed: ${JSON.stringify(seed)}`, () => { beforeEach(() => { - if (Array.isArray(seed)) { - mersenne.seed_array(seed); - } else { - mersenne.seed(seed); - } + mersenne.seed(seed); }); - for (const functionName of functionNames) { - it(`${functionName}()`, () => { - const actual = mersenne[functionName](); - - expect(actual).toMatchSnapshot(); - }); - } - for (const { min, max } of minMaxTestCases) { - it(`should return deterministic values for rand(${max}, ${min})`, () => { - const actual = mersenne.rand(max, min); + it(`should return deterministic values for next({ min: ${min}, max: ${max} })`, () => { + const actual = mersenne.next({ min, max }); expect(actual).toMatchSnapshot(); }); } - it.todo(`should return 0 for rand(1)`, () => { - const actual = mersenne.rand(1); + it.todo(`should return 0 for next({ min: ${0}, max: ${1} })`, () => { + const actual = mersenne.next({ min: 0, max: 1 }); expect(actual).toEqual(0); }); @@ -66,22 +52,13 @@ describe('mersenne twister', () => { for (const seed of seeds) { describe(`random seeded tests ${JSON.stringify(seed)}`, () => { beforeAll(() => { - if (Array.isArray(seed)) { - mersenne.seed_array(seed); - } else { - mersenne.seed(seed); - } + mersenne.seed(seed); }); for (let i = 1; i <= NON_SEEDED_BASED_RUN; i++) { - describe('rand', () => { - it('should return a random number without given min / max arguments', () => { - const randomNumber = mersenne.rand(); - expect(randomNumber).toBeTypeOf('number'); - }); - + describe('next', () => { it('should return random number from interval [min, max)', () => { - const actual = mersenne.rand(0, 2); + const actual = mersenne.next({ min: 0, max: 2 }); expect(actual).toBeGreaterThanOrEqual(0); expect(actual).toBeLessThan(2); @@ -90,26 +67,4 @@ describe('mersenne twister', () => { } }); } - - it('should throw an error when attempting to seed() a non-integer', () => { - expect(() => - mersenne.seed( - // @ts-expect-error: non-integer error - 'abc' - ) - ).toThrowError( - new FakerError('seed(S) must take numeric argument; is string') - ); - }); - - it('should throw an error when attempting to seed() a non-integer', () => { - expect(() => - mersenne.seed_array( - // @ts-expect-error: non-integer error - 'abc' - ) - ).toThrowError( - new FakerError('seed_array(A) must take array of numbers; is string') - ); - }); }); |
