/**
 * 验证工具类
 */
const VerifyUtils = {
  /**
   * 判断是否数字
   * @param obj -待验证的值
   */
  isNumber(obj) {
    return (typeof obj == 'number') && !isNaN(obj);
  },

  /**
   * 判断是否字符串
   * @param obj -待验证的值
   */
  isString(obj) {
    return (typeof obj == 'string') && obj.constructor === String;
  },

  /**
   * 判断是否数组
   * @param obj -待验证的值
   */
  isArray(obj) {
    if (Array.isArray(obj)) {
      return true;
    } else {
      return Object.prototype.toString.call(obj).toLowerCase() == '[object array]';
    }
  },

  /**
   * 判断是否对象
   * @param obj -待验证的值
   */
  isObject(obj) {
    return (typeof obj == 'object') &&
      Object.prototype.toString.call(obj).toLowerCase() == '[object object]';
  },

  /**
   * 判断对象是否undefined
   * @param obj -待验证的值
   */
  isUndefined(obj) {
    return (typeof obj == 'undefined');
  },

  /**
   * 判断是否GeoJSON要素集合
   * @param obj -待验证的值
   */
  isGeoJsonFC(obj) {
    return (
      this.isObject(obj) &&
      obj.hasOwnProperty('type') && obj.type === 'FeatureCollection'
    );
  },

  /**
   * 判断是否GeoJSON要素
   * @param obj -待验证的值
   */
  isGeoJsonFeature(obj) {
    return (
      this.isObject(obj) &&
      obj.hasOwnProperty('type') && obj.type === 'Feature'
    );
  }
}

export default VerifyUtils;
