diff options
| author | ST-DDT <[email protected]> | 2024-11-12 09:19:28 +0100 |
|---|---|---|
| committer | GitHub <[email protected]> | 2024-11-12 08:19:28 +0000 |
| commit | 1633c8deb8f6f41151b39b62689ae3e02ab295bc (patch) | |
| tree | 2561a719b9154d67c51747a2263f68baf4ff8efa /test | |
| parent | cb4b77c04f4d4a706819a6f34ff8378afec6523e (diff) | |
| download | faker-1633c8deb8f6f41151b39b62689ae3e02ab295bc.tar.xz faker-1633c8deb8f6f41151b39b62689ae3e02ab295bc.zip | |
feat: add initial seed parameter to constructors (#3220)
Diffstat (limited to 'test')
| -rw-r--r-- | test/faker.spec.ts | 83 | ||||
| -rw-r--r-- | test/internal/seed.spec.ts | 11 | ||||
| -rw-r--r-- | test/simple-faker.spec.ts | 56 |
3 files changed, 129 insertions, 21 deletions
diff --git a/test/faker.spec.ts b/test/faker.spec.ts index 6d928d63..dba19421 100644 --- a/test/faker.spec.ts +++ b/test/faker.spec.ts @@ -1,18 +1,10 @@ import type { MockInstance } from 'vitest'; import { describe, expect, it, vi } from 'vitest'; -import { Faker, faker } from '../src'; +import { Faker, faker, generateMersenne32Randomizer } from '../src'; import { FakerError } from '../src/errors/faker-error'; import { keys } from '../src/internal/keys'; describe('faker', () => { - it('should throw error if no locales passed', () => { - expect(() => new Faker({ locale: [] })).toThrow( - new FakerError( - 'The locale option must contain at least one locale definition.' - ) - ); - }); - it('should not log anything on startup', async () => { const spies: MockInstance[] = keys(console) .filter((key) => typeof console[key] === 'function') @@ -69,19 +61,70 @@ describe('faker', () => { }); }); - describe('randomizer', () => { - it('should be possible to provide a custom Randomizer', () => { - const customFaker = new Faker({ - locale: {}, - randomizer: { - next: () => 0, - seed: () => void 0, - }, + describe('constructor()', () => { + describe('locale', () => { + it('should throw error if no locales passed', () => { + expect(() => new Faker({ locale: [] })).toThrow( + new FakerError( + 'The locale option must contain at least one locale definition.' + ) + ); + }); + }); + + describe('randomizer', () => { + it('should be possible to provide a custom Randomizer', () => { + const customFaker = new Faker({ + locale: {}, + randomizer: { + next: () => 0, + seed: () => void 0, + }, + }); + + expect(customFaker.number.int()).toBe(0); + expect(customFaker.number.int()).toBe(0); + expect(customFaker.number.int()).toBe(0); + }); + }); + + describe('seed', () => { + it('should be possible to provide an initial seed', () => { + const customFaker = new Faker({ + locale: {}, + seed: 12345, + }); + + expect(customFaker.number.int()).toBe(8373237378417847); + expect(customFaker.number.int()).toBe(2849657659447330); + expect(customFaker.number.int()).toBe(1656593383470774); + + customFaker.seed(12345); + + expect(customFaker.number.int()).toBe(8373237378417847); + expect(customFaker.number.int()).toBe(2849657659447330); + expect(customFaker.number.int()).toBe(1656593383470774); }); + }); - expect(customFaker.number.int()).toBe(0); - expect(customFaker.number.int()).toBe(0); - expect(customFaker.number.int()).toBe(0); + describe('randomizer+seed', () => { + it('should take apply both the randomizer and seed', () => { + const customFaker = new Faker({ + locale: {}, + randomizer: generateMersenne32Randomizer(67890), + seed: 12345, + }); + + expect(customFaker.number.int()).toBe(8373237322874880); + expect(customFaker.number.int()).toBe(8017800868134912); + expect(customFaker.number.int()).toBe(2849657711493120); + + customFaker.seed(12345); // Retry with the expected seed + + expect(customFaker.number.int()).toBe(8373237322874880); + expect(customFaker.number.int()).toBe(8017800868134912); + expect(customFaker.number.int()).toBe(2849657711493120); + }); }); }); diff --git a/test/internal/seed.spec.ts b/test/internal/seed.spec.ts new file mode 100644 index 00000000..c3503524 --- /dev/null +++ b/test/internal/seed.spec.ts @@ -0,0 +1,11 @@ +import { describe, expect, it } from 'vitest'; +import { randomSeed } from '../../src/internal/seed'; + +describe('seed', () => { + it('should generate a random seed', () => { + const actual = randomSeed(); + + expect(actual).toBeTypeOf('number'); + expect(actual).not.toBe(randomSeed()); + }); +}); diff --git a/test/simple-faker.spec.ts b/test/simple-faker.spec.ts index aa6f00c1..02c860a5 100644 --- a/test/simple-faker.spec.ts +++ b/test/simple-faker.spec.ts @@ -1,6 +1,6 @@ import type { MockInstance } from 'vitest'; import { describe, expect, it, vi } from 'vitest'; -import { SimpleFaker, simpleFaker } from '../src'; +import { generateMersenne32Randomizer, SimpleFaker, simpleFaker } from '../src'; import { keys } from '../src/internal/keys'; describe('simpleFaker', () => { @@ -20,6 +20,60 @@ describe('simpleFaker', () => { } }); + describe('constructor()', () => { + describe('randomizer', () => { + it('should be possible to provide a custom Randomizer', () => { + const customFaker = new SimpleFaker({ + randomizer: { + next: () => 0, + seed: () => void 0, + }, + }); + + expect(customFaker.number.int()).toBe(0); + expect(customFaker.number.int()).toBe(0); + expect(customFaker.number.int()).toBe(0); + }); + }); + + describe('seed', () => { + it('should be possible to provide an initial seed', () => { + const customFaker = new SimpleFaker({ + seed: 12345, + }); + + expect(customFaker.number.int()).toBe(8373237378417847); + expect(customFaker.number.int()).toBe(2849657659447330); + expect(customFaker.number.int()).toBe(1656593383470774); + + customFaker.seed(12345); // Retry with the expected seed + + expect(customFaker.number.int()).toBe(8373237378417847); + expect(customFaker.number.int()).toBe(2849657659447330); + expect(customFaker.number.int()).toBe(1656593383470774); + }); + }); + + describe('randomizer+seed', () => { + it('should take apply both the randomizer and seed', () => { + const customFaker = new SimpleFaker({ + randomizer: generateMersenne32Randomizer(67890), + seed: 12345, + }); + + expect(customFaker.number.int()).toBe(8373237322874880); + expect(customFaker.number.int()).toBe(8017800868134912); + expect(customFaker.number.int()).toBe(2849657711493120); + + customFaker.seed(12345); // Retry with the expected seed + + expect(customFaker.number.int()).toBe(8373237322874880); + expect(customFaker.number.int()).toBe(8017800868134912); + expect(customFaker.number.int()).toBe(2849657711493120); + }); + }); + }); + // This is only here for coverage // The actual test is in mersenne.spec.ts describe('seed()', () => { |
