Skip to content

Commit

Permalink
Refa. Moved Input Validation
Browse files Browse the repository at this point in the history
  • Loading branch information
johachi committed Feb 2, 2020
1 parent ed36133 commit 49f32da
Show file tree
Hide file tree
Showing 5 changed files with 68 additions and 58 deletions.
60 changes: 2 additions & 58 deletions index.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
"use strict";
var { validateInput } = require("./input-validation");

function toRadians(angleInDegrees) {
return (angleInDegrees * Math.PI) / 180;
}
Expand All @@ -24,64 +26,6 @@ function offset(c1, distance, bearing) {
return [toDegrees(lon), toDegrees(lat)];
}

function validateCenter(center) {
const validCenterLengths = [2, 3]
if (!Array.isArray(center) || !validCenterLengths.includes(center.length)) {
throw new Error("ERROR! Center has to be an array of length two or three");
}
const [lng, lat] = center;
if (typeof lng !== "number" || typeof lat !== "number") {
throw new Error(
`ERROR! Longitude and Latitude has to be numbers but where ${typeof lng} and ${typeof lat}`
);
}
if (lng > 180 || lng < -180) {
throw new Error(
`ERROR! Longitude has to be between -180 and 180 but was ${lng}`
);
}

if (lat > 90 || lat < -90) {
throw new Error(
`ERROR! Latitude has to be between -90 and 90 but was ${lat}`
);
}
}

function validateRadius(radius) {
if (typeof radius !== "number") {
throw new Error(
`ERROR! Radius has to be a positive number but was: ${typeof radius}`
);
}

if (radius <= 0) {
throw new Error(
`ERROR! Radius has to be a positive number but was: ${radius}`
);
}
}

function validateNumberOfSegments(numberOfSegments) {
if (typeof numberOfSegments !== "number" && numberOfSegments !== undefined) {
throw new Error(
`ERROR! Number of segments has to be a number but was: ${typeof numberOfSegments}`
);
}

if (numberOfSegments < 3) {
throw new Error(
`ERROR! Number of segments has to be at least 3 but was: ${numberOfSegments}`
);
}
}

function validateInput({ center, radius, numberOfSegments }) {
validateCenter(center);
validateRadius(radius);
validateNumberOfSegments(numberOfSegments);
}

module.exports = function circleToPolygon(center, radius, numberOfSegments) {
var n = numberOfSegments ? numberOfSegments : 32;

Expand Down
15 changes: 15 additions & 0 deletions input-validation/index.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
var validateCenter = require("./validateCenter").validateCenter;
var validateRadius = require("./validateRadius").validateRadius;
var validateNumberOfSegments = require("./validateNumberOfSegments")
.validateNumberOfSegments;

function validateInput({ center, radius, numberOfSegments }) {
validateCenter(center);
validateRadius(radius);
validateNumberOfSegments(numberOfSegments);
}

exports.validateCenter = validateCenter;
exports.validateRadius = validateRadius;
exports.validateNumberOfSegments = validateNumberOfSegments;
exports.validateInput = validateInput;
23 changes: 23 additions & 0 deletions input-validation/validateCenter.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
exports.validateCenter = function validateCenter(center) {
const validCenterLengths = [2, 3]
if (!Array.isArray(center) || !validCenterLengths.includes(center.length)) {
throw new Error("ERROR! Center has to be an array of length two or three");
}
const [lng, lat] = center;
if (typeof lng !== "number" || typeof lat !== "number") {
throw new Error(
`ERROR! Longitude and Latitude has to be numbers but where ${typeof lng} and ${typeof lat}`
);
}
if (lng > 180 || lng < -180) {
throw new Error(
`ERROR! Longitude has to be between -180 and 180 but was ${lng}`
);
}

if (lat > 90 || lat < -90) {
throw new Error(
`ERROR! Latitude has to be between -90 and 90 but was ${lat}`
);
}
}
15 changes: 15 additions & 0 deletions input-validation/validateNumberOfSegments.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
exports.validateNumberOfSegments = function validateNumberOfSegments(
numberOfSegments
) {
if (typeof numberOfSegments !== "number" && numberOfSegments !== undefined) {
throw new Error(
`ERROR! Number of segments has to be a number but was: ${typeof numberOfSegments}`
);
}

if (numberOfSegments < 3) {
throw new Error(
`ERROR! Number of segments has to be at least 3 but was: ${numberOfSegments}`
);
}
};
13 changes: 13 additions & 0 deletions input-validation/validateRadius.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
exports.validateRadius = function validateRadius(radius) {
if (typeof radius !== "number") {
throw new Error(
`ERROR! Radius has to be a positive number but was: ${typeof radius}`
);
}

if (radius <= 0) {
throw new Error(
`ERROR! Radius has to be a positive number but was: ${radius}`
);
}
};

0 comments on commit 49f32da

Please sign in to comment.