summaryrefslogtreecommitdiff
path: root/date-fns/src/_lib/toInteger
diff options
context:
space:
mode:
authorSebastian <sebasjm@gmail.com>2021-08-23 16:46:06 -0300
committerSebastian <sebasjm@gmail.com>2021-08-23 16:48:30 -0300
commit38acabfa6089ab8ac469c12b5f55022fb96935e5 (patch)
tree453dbf70000cc5e338b06201af1eaca8343f8f73 /date-fns/src/_lib/toInteger
parentf26125e039143b92dc0d84e7775f508ab0cdcaa8 (diff)
downloadnode-vendor-master.tar.gz
node-vendor-master.tar.bz2
node-vendor-master.zip
added web vendorsHEADmaster
Diffstat (limited to 'date-fns/src/_lib/toInteger')
-rw-r--r--date-fns/src/_lib/toInteger/index.ts13
-rw-r--r--date-fns/src/_lib/toInteger/test.js64
2 files changed, 77 insertions, 0 deletions
diff --git a/date-fns/src/_lib/toInteger/index.ts b/date-fns/src/_lib/toInteger/index.ts
new file mode 100644
index 0000000..e9a9359
--- /dev/null
+++ b/date-fns/src/_lib/toInteger/index.ts
@@ -0,0 +1,13 @@
+export default function toInteger(dirtyNumber: unknown) {
+ if (dirtyNumber === null || dirtyNumber === true || dirtyNumber === false) {
+ return NaN
+ }
+
+ const number = Number(dirtyNumber)
+
+ if (isNaN(number)) {
+ return number
+ }
+
+ return number < 0 ? Math.ceil(number) : Math.floor(number)
+}
diff --git a/date-fns/src/_lib/toInteger/test.js b/date-fns/src/_lib/toInteger/test.js
new file mode 100644
index 0000000..6542890
--- /dev/null
+++ b/date-fns/src/_lib/toInteger/test.js
@@ -0,0 +1,64 @@
+// @flow
+/* eslint-env mocha */
+
+import assert from 'power-assert'
+import toInteger from '.'
+
+describe('toInteger', function () {
+ it('truncates positive numbers', function () {
+ var result = toInteger(10.99)
+ assert(result === 10)
+ })
+
+ it('truncates negative numbers', function () {
+ var result = toInteger(-5.5)
+ assert(result === -5)
+ })
+
+ it('converts convertable strings', function () {
+ var result = toInteger('-10.75')
+ assert(result === -10)
+ })
+
+ it('returns NaN for non-convertable strings', function () {
+ var result = toInteger('Foobar')
+ assert(typeof result === 'number' && isNaN(result))
+ })
+
+ it('returns NaN for false', function () {
+ var result = toInteger(false)
+ assert(typeof result === 'number' && isNaN(result))
+ })
+
+ it('returns NaN for true', function () {
+ var result = toInteger(true)
+ assert(typeof result === 'number' && isNaN(result))
+ })
+
+ it('returns NaN for null', function () {
+ var result = toInteger(null)
+ assert(typeof result === 'number' && isNaN(result))
+ })
+
+ it('returns NaN for undefined', function () {
+ var result = toInteger(undefined)
+ assert(typeof result === 'number' && isNaN(result))
+ })
+
+ it('returns NaN for NaN', function () {
+ var result = toInteger(NaN)
+ assert(typeof result === 'number' && isNaN(result))
+ })
+
+ it('converts convertable objects', function () {
+ // eslint-disable-next-line no-new-wrappers
+ var result = toInteger(new Number(123))
+ assert(result === 123)
+ })
+
+ it('returns NaN for non-convertable objects', function () {
+ // eslint-disable-next-line no-new-wrappers
+ var result = toInteger({})
+ assert(typeof result === 'number' && isNaN(result))
+ })
+})