123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213 |
- import defined from "./defined.js";
- import DeveloperError from "./DeveloperError.js";
- /**
- * Contains functions for checking that supplied arguments are of a specified type
- * or meet specified conditions
- * @private
- */
- const Check = {};
- /**
- * Contains type checking functions, all using the typeof operator
- */
- Check.typeOf = {};
- function getUndefinedErrorMessage(name) {
- return `${name} is required, actual value was undefined`;
- }
- function getFailedTypeErrorMessage(actual, expected, name) {
- return `Expected ${name} to be typeof ${expected}, actual typeof was ${actual}`;
- }
- /**
- * Throws if test is not defined
- *
- * @param {string} name The name of the variable being tested
- * @param {*} test The value that is to be checked
- * @exception {DeveloperError} test must be defined
- */
- Check.defined = function (name, test) {
- if (!defined(test)) {
- throw new DeveloperError(getUndefinedErrorMessage(name));
- }
- };
- /**
- * Throws if test is not typeof 'function'
- *
- * @param {string} name The name of the variable being tested
- * @param {*} test The value to test
- * @exception {DeveloperError} test must be typeof 'function'
- */
- Check.typeOf.func = function (name, test) {
- if (typeof test !== "function") {
- throw new DeveloperError(
- getFailedTypeErrorMessage(typeof test, "function", name)
- );
- }
- };
- /**
- * Throws if test is not typeof 'string'
- *
- * @param {string} name The name of the variable being tested
- * @param {*} test The value to test
- * @exception {DeveloperError} test must be typeof 'string'
- */
- Check.typeOf.string = function (name, test) {
- if (typeof test !== "string") {
- throw new DeveloperError(
- getFailedTypeErrorMessage(typeof test, "string", name)
- );
- }
- };
- /**
- * Throws if test is not typeof 'number'
- *
- * @param {string} name The name of the variable being tested
- * @param {*} test The value to test
- * @exception {DeveloperError} test must be typeof 'number'
- */
- Check.typeOf.number = function (name, test) {
- if (typeof test !== "number") {
- throw new DeveloperError(
- getFailedTypeErrorMessage(typeof test, "number", name)
- );
- }
- };
- /**
- * Throws if test is not typeof 'number' and less than limit
- *
- * @param {string} name The name of the variable being tested
- * @param {*} test The value to test
- * @param {number} limit The limit value to compare against
- * @exception {DeveloperError} test must be typeof 'number' and less than limit
- */
- Check.typeOf.number.lessThan = function (name, test, limit) {
- Check.typeOf.number(name, test);
- if (test >= limit) {
- throw new DeveloperError(
- `Expected ${name} to be less than ${limit}, actual value was ${test}`
- );
- }
- };
- /**
- * Throws if test is not typeof 'number' and less than or equal to limit
- *
- * @param {string} name The name of the variable being tested
- * @param {*} test The value to test
- * @param {number} limit The limit value to compare against
- * @exception {DeveloperError} test must be typeof 'number' and less than or equal to limit
- */
- Check.typeOf.number.lessThanOrEquals = function (name, test, limit) {
- Check.typeOf.number(name, test);
- if (test > limit) {
- throw new DeveloperError(
- `Expected ${name} to be less than or equal to ${limit}, actual value was ${test}`
- );
- }
- };
- /**
- * Throws if test is not typeof 'number' and greater than limit
- *
- * @param {string} name The name of the variable being tested
- * @param {*} test The value to test
- * @param {number} limit The limit value to compare against
- * @exception {DeveloperError} test must be typeof 'number' and greater than limit
- */
- Check.typeOf.number.greaterThan = function (name, test, limit) {
- Check.typeOf.number(name, test);
- if (test <= limit) {
- throw new DeveloperError(
- `Expected ${name} to be greater than ${limit}, actual value was ${test}`
- );
- }
- };
- /**
- * Throws if test is not typeof 'number' and greater than or equal to limit
- *
- * @param {string} name The name of the variable being tested
- * @param {*} test The value to test
- * @param {number} limit The limit value to compare against
- * @exception {DeveloperError} test must be typeof 'number' and greater than or equal to limit
- */
- Check.typeOf.number.greaterThanOrEquals = function (name, test, limit) {
- Check.typeOf.number(name, test);
- if (test < limit) {
- throw new DeveloperError(
- `Expected ${name} to be greater than or equal to ${limit}, actual value was ${test}`
- );
- }
- };
- /**
- * Throws if test is not typeof 'object'
- *
- * @param {string} name The name of the variable being tested
- * @param {*} test The value to test
- * @exception {DeveloperError} test must be typeof 'object'
- */
- Check.typeOf.object = function (name, test) {
- if (typeof test !== "object") {
- throw new DeveloperError(
- getFailedTypeErrorMessage(typeof test, "object", name)
- );
- }
- };
- /**
- * Throws if test is not typeof 'boolean'
- *
- * @param {string} name The name of the variable being tested
- * @param {*} test The value to test
- * @exception {DeveloperError} test must be typeof 'boolean'
- */
- Check.typeOf.bool = function (name, test) {
- if (typeof test !== "boolean") {
- throw new DeveloperError(
- getFailedTypeErrorMessage(typeof test, "boolean", name)
- );
- }
- };
- /**
- * Throws if test is not typeof 'bigint'
- *
- * @param {string} name The name of the variable being tested
- * @param {*} test The value to test
- * @exception {DeveloperError} test must be typeof 'bigint'
- */
- Check.typeOf.bigint = function (name, test) {
- if (typeof test !== "bigint") {
- throw new DeveloperError(
- getFailedTypeErrorMessage(typeof test, "bigint", name)
- );
- }
- };
- /**
- * Throws if test1 and test2 is not typeof 'number' and not equal in value
- *
- * @param {string} name1 The name of the first variable being tested
- * @param {string} name2 The name of the second variable being tested against
- * @param {*} test1 The value to test
- * @param {*} test2 The value to test against
- * @exception {DeveloperError} test1 and test2 should be type of 'number' and be equal in value
- */
- Check.typeOf.number.equals = function (name1, name2, test1, test2) {
- Check.typeOf.number(name1, test1);
- Check.typeOf.number(name2, test2);
- if (test1 !== test2) {
- throw new DeveloperError(
- `${name1} must be equal to ${name2}, the actual values are ${test1} and ${test2}`
- );
- }
- };
- export default Check;
|