diff options
| author | Leyla Jähnig <[email protected]> | 2022-10-15 00:01:49 +0200 |
|---|---|---|
| committer | GitHub <[email protected]> | 2022-10-14 22:01:49 +0000 |
| commit | 476533697141f0e88c9eca300d0b5040dd8a09d7 (patch) | |
| tree | 9122bc048b23bcb5ee2091c29b041e189e00e96e | |
| parent | a90f2fe65c705a5593215b0a35945b77c1d575f1 (diff) | |
| download | faker-476533697141f0e88c9eca300d0b5040dd8a09d7.tar.xz faker-476533697141f0e88c9eca300d0b5040dd8a09d7.zip | |
feat(location)!: `nearbyGPSCoordinate` returns number tuple (#1061)
| -rw-r--r-- | src/modules/address/index.ts | 12 | ||||
| -rw-r--r-- | test/__snapshots__/address.spec.ts.snap | 24 | ||||
| -rw-r--r-- | test/address.spec.ts | 69 |
3 files changed, 51 insertions, 54 deletions
diff --git a/src/modules/address/index.ts b/src/modules/address/index.ts index f0ad8644..6221b551 100644 --- a/src/modules/address/index.ts +++ b/src/modules/address/index.ts @@ -383,9 +383,9 @@ export class AddressModule { * @param isMetric If `true` assume the radius to be in kilometers. If `false` for miles. Defaults to `false`. * * @example - * faker.address.nearbyGPSCoordinate() // [ '33.8475', '-170.5953' ] - * faker.address.nearbyGPSCoordinate([33, -170]) // [ '33.0165', '-170.0636' ] - * faker.address.nearbyGPSCoordinate([33, -170], 1000, true) // [ '37.9163', '-179.2408' ] + * faker.address.nearbyGPSCoordinate() // [ 33.8475, -170.5953 ] + * faker.address.nearbyGPSCoordinate([33, -170]) // [ 33.0165, -170.0636 ] + * faker.address.nearbyGPSCoordinate([33, -170], 1000, true) // [ 37.9163, -179.2408 ] * * @since 5.0.0 */ @@ -393,10 +393,10 @@ export class AddressModule { coordinate?: [latitude: number, longitude: number], radius: number = 10, isMetric: boolean = false - ): [latitude: string, longitude: string] { + ): [latitude: number, longitude: number] { // If there is no coordinate, the best we can do is return a random GPS coordinate. if (coordinate === undefined) { - return [this.latitude(), this.longitude()]; + return [parseFloat(this.latitude()), parseFloat(this.longitude())]; } const angleRadians = this.faker.datatype.float({ @@ -436,7 +436,7 @@ export class AddressModule { // Box longitude [-180°, 180°] newCoordinate[1] = (((newCoordinate[1] % 360) + 540) % 360) - 180; - return [newCoordinate[0].toFixed(4), newCoordinate[1].toFixed(4)]; + return [newCoordinate[0], newCoordinate[1]]; } /** diff --git a/test/__snapshots__/address.spec.ts.snap b/test/__snapshots__/address.spec.ts.snap index 7ea2cde3..dd489d6d 100644 --- a/test/__snapshots__/address.spec.ts.snap +++ b/test/__snapshots__/address.spec.ts.snap @@ -34,15 +34,15 @@ exports[`address > 42 > longitude > noArgs 1`] = `"-45.1656"`; exports[`address > 42 > nearbyGPSCoordinate > near origin 1`] = ` [ - "0.0814", - "-0.0809", + 0.08140632875358443, + -0.08093642792425726, ] `; exports[`address > 42 > nearbyGPSCoordinate > noArgs 1`] = ` [ - "-22.5828", - "106.7555", + -22.5828, + 106.7555, ] `; @@ -112,15 +112,15 @@ exports[`address > 1211 > longitude > noArgs 1`] = `"154.2673"`; exports[`address > 1211 > nearbyGPSCoordinate > near origin 1`] = ` [ - "-0.0287", - "0.0596", + -0.02872051646443488, + 0.05959053473372933, ] `; exports[`address > 1211 > nearbyGPSCoordinate > noArgs 1`] = ` [ - "77.1337", - "-14.7545", + 77.1337, + -14.7545, ] `; @@ -190,15 +190,15 @@ exports[`address > 1337 > longitude > noArgs 1`] = `"-85.6711"`; exports[`address > 1337 > nearbyGPSCoordinate > near origin 1`] = ` [ - "0.0806", - "-0.0061", + 0.08055259537977688, + -0.006097651409731952, ] `; exports[`address > 1337 > nearbyGPSCoordinate > noArgs 1`] = ` [ - "-42.8356", - "21.7907", + -42.8356, + 21.7907, ] `; diff --git a/test/address.spec.ts b/test/address.spec.ts index fa639b07..3bee6714 100644 --- a/test/address.spec.ts +++ b/test/address.spec.ts @@ -300,42 +300,39 @@ describe('address', () => { describe('nearbyGPSCoordinate()', () => { for (const isMetric of [true, false]) { for (const radius of times(100)) { - it.each(times(5))( - `should return random gps coordinate within a distance of another one (${JSON.stringify( - { isMetric, radius } - )}) (iter: %s)`, - () => { - const latitude1 = +faker.address.latitude(); - const longitude1 = +faker.address.longitude(); - - const coordinate = faker.address.nearbyGPSCoordinate( - [latitude1, longitude1], - radius, - isMetric - ); - - expect(coordinate.length).toBe(2); - expect(coordinate[0]).toBeTypeOf('string'); - expect(coordinate[1]).toBeTypeOf('string'); - - const latitude2 = +coordinate[0]; - expect(latitude2).toBeGreaterThanOrEqual(-90.0); - expect(latitude2).toBeLessThanOrEqual(90.0); - - const longitude2 = +coordinate[1]; - expect(longitude2).toBeGreaterThanOrEqual(-180.0); - expect(longitude2).toBeLessThanOrEqual(180.0); - - const actualDistance = haversine( - latitude1, - longitude1, - latitude2, - longitude2, - isMetric - ); - expect(actualDistance).toBeLessThanOrEqual(radius); - } - ); + it(`should return random gps coordinate within a distance of another one (${JSON.stringify( + { isMetric, radius } + )})`, () => { + const latitude1 = +faker.address.latitude(); + const longitude1 = +faker.address.longitude(); + + const coordinate = faker.address.nearbyGPSCoordinate( + [latitude1, longitude1], + radius, + isMetric + ); + + expect(coordinate.length).toBe(2); + expect(coordinate[0]).toBeTypeOf('number'); + expect(coordinate[1]).toBeTypeOf('number'); + + const latitude2 = coordinate[0]; + expect(latitude2).toBeGreaterThanOrEqual(-90.0); + expect(latitude2).toBeLessThanOrEqual(90.0); + + const longitude2 = coordinate[1]; + expect(longitude2).toBeGreaterThanOrEqual(-180.0); + expect(longitude2).toBeLessThanOrEqual(180.0); + + const actualDistance = haversine( + latitude1, + longitude1, + latitude2, + longitude2, + isMetric + ); + expect(actualDistance).toBeLessThanOrEqual(radius); + }); } } }); |
