diff --git a/src/mocks/utils.ts b/src/mocks/utils.ts index 31bd6a4c26..fa985baaaf 100644 --- a/src/mocks/utils.ts +++ b/src/mocks/utils.ts @@ -18,7 +18,7 @@ import seedrandom from 'seedrandom'; -import { DataGenerator } from '../utils/data_generators/data_generator'; +import { DataGenerator, RandomNumberGenerator } from '../utils/data_generators/data_generator'; /** * Forces object to be partial type for mocking tests @@ -31,13 +31,6 @@ export const forcedType = (obj: Partial): T => { return obj as T; }; -export type RandomNumberGenerator = ( - min?: number, - max?: number, - fractionDigits?: number, - inclusive?: boolean, -) => number; - /** * Return rng function with optional `min`, `max` and `fractionDigits` params * diff --git a/src/utils/data_generators/data_generator.ts b/src/utils/data_generators/data_generator.ts index 44289b366b..851bd82a43 100644 --- a/src/utils/data_generators/data_generator.ts +++ b/src/utils/data_generators/data_generator.ts @@ -17,15 +17,31 @@ * under the License. */ import { Simple1DNoise } from './simple_noise'; -import { RandomNumberGenerator } from '../../mocks/utils'; + +export type RandomNumberGenerator = ( + min?: number, + max?: number, + fractionDigits?: number, + inclusive?: boolean, +) => number; + +function defaultRNG(min = 0, max = 1, fractionDigits = 0, inclusive = true) { + const precision = Math.pow(10, Math.max(fractionDigits, 0)); + const scaledMax = max * precision; + const scaledMin = min * precision; + const offset = inclusive ? 1 : 0; + const num = Math.floor(Math.random() * (scaledMax - scaledMin + offset)) + scaledMin; + + return num / precision; +} export class DataGenerator { private randomNumberGenerator: RandomNumberGenerator; private generator: Simple1DNoise; private frequency: number; - constructor(frequency = 500, randomNumberGenerator: RandomNumberGenerator) { + constructor(frequency = 500, randomNumberGenerator: RandomNumberGenerator = defaultRNG) { this.randomNumberGenerator = randomNumberGenerator; - this.generator = new Simple1DNoise(randomNumberGenerator); + this.generator = new Simple1DNoise(this.randomNumberGenerator); this.frequency = frequency; } generateBasicSeries(totalPoints = 50, offset = 0, amplitude = 1) { diff --git a/src/utils/data_generators/simple_noise.ts b/src/utils/data_generators/simple_noise.ts index a1415a7d06..ddfbec7f60 100644 --- a/src/utils/data_generators/simple_noise.ts +++ b/src/utils/data_generators/simple_noise.ts @@ -1,5 +1,3 @@ -import { RandomNumberGenerator } from '../../mocks/utils'; - /* * Licensed to Elasticsearch B.V. under one or more contributor * license agreements. See the NOTICE file distributed with @@ -18,6 +16,8 @@ import { RandomNumberGenerator } from '../../mocks/utils'; * specific language governing permissions and limitations * under the License. */ +import { RandomNumberGenerator } from './data_generator'; + export class Simple1DNoise { private maxVertices: number; private maxVerticesMask: number; diff --git a/tsconfig.lib.json b/tsconfig.lib.json index 0f24550fa5..e48f52cd3b 100644 --- a/tsconfig.lib.json +++ b/tsconfig.lib.json @@ -5,5 +5,5 @@ }, "extends": "./tsconfig", "include": ["src/**/*"], - "exclude": ["**/*.test.*", "**/__mocks__"] + "exclude": ["**/*.test.*", "**/__mocks__", "src/mocks/**/*"] }