Skip to content

Commit

Permalink
feat(js-core): add isFalsy()
Browse files Browse the repository at this point in the history
  • Loading branch information
ersimont committed Dec 9, 2020
1 parent 9d5cd3e commit 62bd6da
Show file tree
Hide file tree
Showing 4 changed files with 42 additions and 0 deletions.
5 changes: 5 additions & 0 deletions projects/integration/src/app/api-tests/js-core.spec.ts
Expand Up @@ -9,6 +9,7 @@ import {
elapsedToString,
isDefined,
isEqualAtDepth,
isFalsy,
isPromiseLike,
isSetEqual,
isSuperset,
Expand Down Expand Up @@ -80,6 +81,10 @@ describe('js-core', () => {
expect(isEqualAtDepth).toBeDefined();
});

it('has isFalsy', () => {
expect(isFalsy).toBeDefined();
});

it('has isPromiseLike', () => {
expect(isPromiseLike).toBeDefined();
});
Expand Down
1 change: 1 addition & 0 deletions projects/js-core/src/lib/predicates/index.ts
@@ -1,3 +1,4 @@
export { isDefined } from './is-defined';
export { isEqualAtDepth } from './is-equal-at-depth';
export { isFalsy } from './is-falsy';
export { isPromiseLike } from './is-promise-like';
30 changes: 30 additions & 0 deletions projects/js-core/src/lib/predicates/is-falsy.spec.ts
@@ -0,0 +1,30 @@
import { isFalsy } from './is-falsy';

describe('isFalsy', () => {
it('returns `true` for falsy values', () => {
expect(isFalsy(false)).toBe(true);
expect(isFalsy(0)).toBe(true);
expect(isFalsy(-0)).toBe(true);
// uncomment when targeting ES2020
// expect(isFalsy(0n)).toBe(true);
expect(isFalsy('')).toBe(true);
expect(isFalsy(null)).toBe(true);
expect(isFalsy(undefined)).toBe(true);
expect(isFalsy(NaN)).toBe(true);
});

// tslint:disable-next-line:only-arrow-functions
it('returns `false` for truthy values', function (): void {
expect(isFalsy(arguments)).toBe(false);
expect(isFalsy([1, 2, 3])).toBe(false);
expect(isFalsy(true)).toBe(false);
expect(isFalsy(new Date())).toBe(false);
expect(isFalsy(new Error())).toBe(false);
expect(isFalsy(Array.prototype.slice)).toBe(false);
expect(isFalsy({ a: 1 })).toBe(false);
expect(isFalsy(1)).toBe(false);
expect(isFalsy(/x/)).toBe(false);
expect(isFalsy('a')).toBe(false);
expect(isFalsy(Symbol('a'))).toBe(false);
});
});
6 changes: 6 additions & 0 deletions projects/js-core/src/lib/predicates/is-falsy.ts
@@ -0,0 +1,6 @@
/**
* Checks if `value` is [falsy](https://developer.mozilla.org/en-US/docs/Glossary/Falsy).
*/
export function isFalsy(value: any): boolean {
return !value;
}

0 comments on commit 62bd6da

Please sign in to comment.