aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLeyla Jähnig <[email protected]>2022-10-15 00:01:49 +0200
committerGitHub <[email protected]>2022-10-14 22:01:49 +0000
commit476533697141f0e88c9eca300d0b5040dd8a09d7 (patch)
tree9122bc048b23bcb5ee2091c29b041e189e00e96e
parenta90f2fe65c705a5593215b0a35945b77c1d575f1 (diff)
downloadfaker-476533697141f0e88c9eca300d0b5040dd8a09d7.tar.xz
faker-476533697141f0e88c9eca300d0b5040dd8a09d7.zip
feat(location)!: `nearbyGPSCoordinate` returns number tuple (#1061)
-rw-r--r--src/modules/address/index.ts12
-rw-r--r--test/__snapshots__/address.spec.ts.snap24
-rw-r--r--test/address.spec.ts69
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);
+ });
}
}
});