From 2e570837df13f257f6cff04109a3e66744988fdc Mon Sep 17 00:00:00 2001 From: Adam Bradley Date: Mon, 11 Jul 2016 23:01:40 -0500 Subject: [PATCH] chore(util): add isPrimitive() util --- src/util/test/util.spec.ts | 33 +++++++++++++++++++++++++++++++++ src/util/util.ts | 4 ++++ 2 files changed, 37 insertions(+) diff --git a/src/util/test/util.spec.ts b/src/util/test/util.spec.ts index 8328755db3..2b9d2de742 100644 --- a/src/util/test/util.spec.ts +++ b/src/util/test/util.spec.ts @@ -2,6 +2,39 @@ import * as util from '../../../src/util'; export function run() { + describe('isPrimitive', () => { + + it('should be false for array/object values', () => { + expect(util.isPrimitive({})).toEqual(false); + expect(util.isPrimitive(new Date())).toEqual(false); + expect(util.isPrimitive([])).toEqual(false); + }); + + it('should be false for blank values', () => { + expect(util.isPrimitive(NaN)).toEqual(false); + expect(util.isPrimitive(null)).toEqual(false); + expect(util.isPrimitive(undefined)).toEqual(false); + }); + + it('should be true for number', () => { + expect(util.isPrimitive(-1)).toEqual(true); + expect(util.isPrimitive(0)).toEqual(true); + expect(util.isPrimitive(1)).toEqual(true); + }); + + it('should be true for boolean', () => { + expect(util.isPrimitive(true)).toEqual(true); + expect(util.isPrimitive(false)).toEqual(true); + }); + + it('should be true for string', () => { + expect(util.isPrimitive('')).toEqual(true); + expect(util.isPrimitive(' ')).toEqual(true); + expect(util.isPrimitive('hi')).toEqual(true); + }); + + }); + describe('isCheckedProperty', () => { it('should test a=undefined', () => { diff --git a/src/util/util.ts b/src/util/util.ts index 2879bf528c..459b618e7c 100644 --- a/src/util/util.ts +++ b/src/util/util.ts @@ -111,6 +111,10 @@ export const isBlank = (val: any) => val === undefined || val === null; export const isObject = (val: any) => typeof val === 'object'; export const isArray = Array.isArray; +export const isPrimitive = function(val: any) { + return isString(val) || isBoolean(val) || (isNumber(val) && !isNaN(val)); +}; + export const isTrueProperty = function(val: any): boolean { if (typeof val === 'string') { val = val.toLowerCase().trim();