All files / random geolocation.ts

100% Statements 18/18
100% Branches 16/16
100% Functions 2/2
100% Lines 15/15

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 321x   1x 1x 1x 1x         1x 1x 1x           7x   4x 4x   4x 2x     2x   2x    
import { randomNumber } from './number';
 
export const minGeolocLong = -180;
export const maxGeolocLong = 180;
export const minGeolocLat = -90;
export const maxGeolocLat = 90;
 
/**
 * The geolocation type (long or lat)
 */
export enum GeoType {
  long = 'long',
  lat = 'lat',
}
 
/**
 * Renerates a random geo location point
 */
export function randomGeolocation(from: number = minGeolocLong, to: number = maxGeolocLong, type: GeoType = GeoType.long): number {
 
  const minGeoloc = type === GeoType.long ? minGeolocLong : minGeolocLat;
  const maxGeoloc = type === GeoType.long ? maxGeolocLong : maxGeolocLat;
 
  if (from < minGeoloc || to > maxGeoloc) {
    throw new Error(`randomGeolocation ${type} range should be between ${minGeoloc} and ${maxGeoloc}`);
  }
 
  const fractionDigits = 5;
 
  return randomNumber(from, to, fractionDigits);
}