aboutsummaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorST-DDT <[email protected]>2024-11-12 09:19:28 +0100
committerGitHub <[email protected]>2024-11-12 08:19:28 +0000
commit1633c8deb8f6f41151b39b62689ae3e02ab295bc (patch)
tree2561a719b9154d67c51747a2263f68baf4ff8efa /test
parentcb4b77c04f4d4a706819a6f34ff8378afec6523e (diff)
downloadfaker-1633c8deb8f6f41151b39b62689ae3e02ab295bc.tar.xz
faker-1633c8deb8f6f41151b39b62689ae3e02ab295bc.zip
feat: add initial seed parameter to constructors (#3220)
Diffstat (limited to 'test')
-rw-r--r--test/faker.spec.ts83
-rw-r--r--test/internal/seed.spec.ts11
-rw-r--r--test/simple-faker.spec.ts56
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()', () => {