diff --git a/src/address.ts b/src/address.ts index 264b02817fc..a6f54ccae22 100644 --- a/src/address.ts +++ b/src/address.ts @@ -538,7 +538,13 @@ export class Address { // This approach will likely result in a higher density of points near the center. const randomCoord = coordinateWithOffset( coordinate, - degreesToRadians(Math.random() * 360.0), + degreesToRadians( + this.faker.datatype.number({ + min: 0, + max: 360, + precision: 1e-4, + }) + ), radius, isMetric ); diff --git a/test/address.spec.ts b/test/address.spec.ts index 5929f4628cb..1b9877619d9 100644 --- a/test/address.spec.ts +++ b/test/address.spec.ts @@ -29,6 +29,7 @@ const seededRuns = [ cardinalDirection: 'East', cardinalDirectionAbbr: 'E', timeZone: 'Europe/Amsterdam', + nearbyGpsCoordinates: ['-0.0394', '0.0396'], }, }, { @@ -58,6 +59,7 @@ const seededRuns = [ cardinalDirection: 'East', cardinalDirectionAbbr: 'E', timeZone: 'Africa/Casablanca', + nearbyGpsCoordinates: ['-0.0042', '0.0557'], }, }, { @@ -87,6 +89,7 @@ const seededRuns = [ cardinalDirection: 'West', cardinalDirectionAbbr: 'W', timeZone: 'Asia/Magadan', + nearbyGpsCoordinates: ['0.0503', '-0.0242'], }, }, ]; @@ -333,6 +336,17 @@ describe('address', () => { expect(timeZone).toEqual(expectations.timeZone); }); }); + + describe('nearbyGPSCoordinate()', () => { + it('returns expected coordinates', () => { + faker.seed(seed); + + // this input is required for all expected results for this function + const coordsInput: [number, number] = [0, 0]; + const coords = faker.address.nearbyGPSCoordinate(coordsInput); + expect(coords).toEqual(expectations.nearbyGpsCoordinates); + }); + }); }); }