summaryrefslogtreecommitdiff
path: root/date-fns/src/closestTo/test.js
diff options
context:
space:
mode:
Diffstat (limited to 'date-fns/src/closestTo/test.js')
-rw-r--r--date-fns/src/closestTo/test.js112
1 files changed, 112 insertions, 0 deletions
diff --git a/date-fns/src/closestTo/test.js b/date-fns/src/closestTo/test.js
new file mode 100644
index 0000000..1924972
--- /dev/null
+++ b/date-fns/src/closestTo/test.js
@@ -0,0 +1,112 @@
+// @flow
+/* eslint-env mocha */
+
+import assert from 'power-assert'
+import closestTo from '.'
+
+describe('closestTo', function() {
+ it('returns the date from the given array closest to the given date', function() {
+ var date = new Date(2014, 6 /* Jul */, 2)
+ var result = closestTo(date, [
+ new Date(2015, 7 /* Aug */, 31),
+ new Date(2012, 6 /* Jul */, 2)
+ ])
+ assert.deepEqual(result, new Date(2015, 7 /* Aug */, 31))
+ })
+
+ it('works if the closest date from the given array is before the given date', function() {
+ var date = new Date(2014, 6 /* Jul */, 2, 6, 30, 4, 500)
+ var result = closestTo(date, [
+ new Date(2014, 6 /* Jul */, 2, 6, 30, 5, 900),
+ new Date(2014, 6 /* Jul */, 2, 6, 30, 3, 900),
+ new Date(2014, 6 /* Jul */, 2, 6, 30, 10)
+ ])
+ assert.deepEqual(result, new Date(2014, 6 /* Jul */, 2, 6, 30, 3, 900))
+ })
+
+ it('accepts timestamps', function() {
+ var date = new Date(2014, 6 /* Jul */, 2).getTime()
+ var result = closestTo(date, [
+ new Date(2015, 7 /* Aug */, 31).getTime(),
+ new Date(2012, 6 /* Jul */, 2).getTime()
+ ])
+ assert.deepEqual(result, new Date(2015, 7 /* Aug */, 31))
+ })
+
+ it('returns undefined if the given array is empty', function() {
+ var date = new Date(2014, 6 /* Jul */, 2).getTime()
+ var result = closestTo(date, [])
+ assert(result == null)
+ })
+
+ it('returns `Invalid Date` if the given date is `Invalid Date`', function() {
+ var date = new Date(NaN)
+ var result = closestTo(date, [
+ new Date(2015, 7 /* Aug */, 31),
+ new Date(2012, 6 /* Jul */, 2)
+ ])
+ assert(result instanceof Date && isNaN(result))
+ })
+
+ it('returns `Invalid Date` if any date in the given array is `Invalid Date`', function() {
+ var date = new Date(2014, 6 /* Jul */, 2)
+ var result = closestTo(date, [
+ new Date(2015, 7 /* Aug */, 31),
+ new Date(NaN),
+ new Date(2012, 6 /* Jul */, 2)
+ ])
+ assert(result instanceof Date && isNaN(result))
+ })
+
+ it('returns `Invalid Date` if any date in the given array is `Invalid Date`', function() {
+ var date = new Date(2014, 6 /* Jul */, 2)
+ var result = closestTo(date, [
+ new Date(2015, 7 /* Aug */, 31),
+ new Date(NaN),
+ new Date(2012, 6 /* Jul */, 2)
+ ])
+ assert(result instanceof Date && isNaN(result))
+ })
+
+ it('returns `Invalid Date` if any value in the given array is undefined', function() {
+ var date = new Date(2014, 6 /* Jul */, 2)
+ var result = closestTo(date, [
+ new Date(2015, 7 /* Aug */, 31),
+ // $ExpectedMistake
+ undefined,
+ new Date(2012, 6 /* Jul */, 2)
+ ])
+ assert(result instanceof Date && isNaN(result))
+ })
+
+ it('converts Array-like objects into Array', function() {
+ var date = new Date(2014, 6 /* Jul */, 2)
+ var object = {
+ '0': new Date(2015, 7 /* Aug */, 31),
+ '1': new Date(2012, 6 /* Jul */, 2),
+ length: 2
+ }
+ // $ExpectedMistake
+ var result = closestTo(date, object)
+ assert.deepEqual(result, new Date(2015, 7 /* Aug */, 31))
+ })
+
+ it('converts undefined into empty array', function() {
+ var date = new Date(2014, 6 /* Jul */, 2).getTime()
+ // $ExpectedMistake
+ var result = closestTo(date, undefined)
+ assert(result == null)
+ })
+
+ it('converts null into empty array', function() {
+ var date = new Date(2014, 6 /* Jul */, 2).getTime()
+ // $ExpectedMistake
+ var result = closestTo(date, null)
+ assert(result == null)
+ })
+
+ it('throws TypeError exception if passed less than 2 arguments', function() {
+ assert.throws(closestTo.bind(null), TypeError)
+ assert.throws(closestTo.bind(null, 1), TypeError)
+ })
+})