Skip to content

Instantly share code, notes, and snippets.

@uniqname
Created May 5, 2024 16:40
Show Gist options
  • Save uniqname/b93b0e0da54fafd845414ccf94ddd6d3 to your computer and use it in GitHub Desktop.
Save uniqname/b93b0e0da54fafd845414ccf94ddd6d3 to your computer and use it in GitHub Desktop.
const numericalDirection = (arg, n = Number(arg)) => Math.abs(n) / n || 0
export default numericalDirection;
import test from 'node:test';
import assert from 'node:assert/strict';
import numericalDirection from './index.js'
test('positive numbers return 1', (t) => {
const expected = 1
assert.strictEqual(numericalDirection(1), expected);
assert.strictEqual(numericalDirection(2), expected);
assert.strictEqual(numericalDirection(3), expected);
assert.strictEqual(numericalDirection(10), expected);
assert.strictEqual(numericalDirection(999999), expected);
assert.strictEqual(numericalDirection(.1), expected);
assert.strictEqual(numericalDirection(.000000000000001), expected);
assert.strictEqual(numericalDirection(Math.PI), expected);
assert.strictEqual(numericalDirection(Math.E), expected);
assert.strictEqual(numericalDirection(Number.MAX_SAFE_INTEGER), expected);
});
test('negative numbers return -1', (t) => {
const expected = -1
assert.strictEqual(numericalDirection(-1), expected);
assert.strictEqual(numericalDirection(-2), expected);
assert.strictEqual(numericalDirection(-3), expected);
assert.strictEqual(numericalDirection(-10), expected);
assert.strictEqual(numericalDirection(-999999), expected);
assert.strictEqual(numericalDirection(-.1), expected);
assert.strictEqual(numericalDirection(-.000000000000001), expected);
assert.strictEqual(numericalDirection(-Math.PI), expected);
assert.strictEqual(numericalDirection(-Math.E), expected);
assert.strictEqual(numericalDirection(Number.MIN_SAFE_INTEGER), expected);
});
test('0 returns 0', (t) => {
assert.strictEqual(numericalDirection(0), 0);
});
test('-0 returns 0', (t) => {
assert.strictEqual(numericalDirection(-0), 0);
});
test('NaN returns 0', (t) => {
assert.strictEqual(numericalDirection(NaN), 0);
});
test('Arguments that parse to NaN reutrn 0', (t) => {
const expected = 0
assert.strictEqual(numericalDirection(NaN), expected);
assert.strictEqual(numericalDirection('NaN'), expected);
assert.strictEqual(numericalDirection('Hello'), expected);
assert.strictEqual(numericalDirection({}), expected);
assert.strictEqual(numericalDirection([]), expected);
assert.strictEqual(numericalDirection(undefined), expected);
assert.strictEqual(numericalDirection(null), expected);
assert.strictEqual(numericalDirection(void 1), expected);
assert.strictEqual(numericalDirection(false), expected);
});
test('Arguments parsable as positive numbers returns 1', (t) => {
const expected = 1;
assert.strictEqual(numericalDirection('1'), expected);
assert.strictEqual(numericalDirection('2'), expected);
assert.strictEqual(numericalDirection('3'), expected);
assert.strictEqual(numericalDirection('10'), expected);
assert.strictEqual(numericalDirection('999999'), expected);
assert.strictEqual(numericalDirection('.1'), expected);
assert.strictEqual(numericalDirection('0.1'), expected);
assert.strictEqual(numericalDirection('.000000000000001'), expected);
assert.strictEqual(numericalDirection(String(Math.PI)), expected);
assert.strictEqual(numericalDirection(String(Math.E)), expected);
assert.strictEqual(numericalDirection(String(Number.MAX_SAFE_INTEGER)), expected);
assert.strictEqual(numericalDirection(true), expected);
});
test('Arguments parsable as negative numbers returns -1', (t) => {
const expected = -1
assert.strictEqual(numericalDirection('-1'), expected);
assert.strictEqual(numericalDirection('-2'), expected);
assert.strictEqual(numericalDirection('-3'), expected);
assert.strictEqual(numericalDirection('-10'), expected);
assert.strictEqual(numericalDirection('-999999'), expected);
assert.strictEqual(numericalDirection('-.1'), expected);
assert.strictEqual(numericalDirection('-0.1'), expected);
assert.strictEqual(numericalDirection('-.000000000000001'), expected);
assert.strictEqual(numericalDirection(String(-Math.PI)), expected);
assert.strictEqual(numericalDirection(String(-Math.E)), expected);
assert.strictEqual(numericalDirection(String(Number.MIN_SAFE_INTEGER)), expected);
});
test('Arguments parsable as 0 returns 0', (t) => {
assert.strictEqual(numericalDirection('0'), 0);
});
test('Arguments parsable as -0 returns 0', (t) => {
assert.strictEqual(numericalDirection('-0'), 0);
});
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment