]> git.ipfire.org Git - thirdparty/moment.git/commitdiff
Added inclusivity param to isBetween Method
authorDavid Kirk <dbkirk4211@gmail.com>
Fri, 4 Mar 2016 06:29:39 +0000 (01:29 -0500)
committerIskren Chernev <iskren.chernev@gmail.com>
Sat, 16 Apr 2016 06:54:11 +0000 (23:54 -0700)
src/lib/moment/compare.js
src/test/moment/is_between.js

index 2e3da51efa4dfa33a6910cc71bde9cd536606bf4..f35a72e06812a54bd0369d63b58e03901ce13038 100644 (file)
@@ -29,7 +29,14 @@ export function isBefore (input, units) {
     }
 }
 
-export function isBetween (from, to, units) {
+export function isBetween (from, to, units, inclusivity) {
+    if (inclusivity === '(]') {
+        return this.isAfter(from, units) && this.isSameOrBefore(to, units);
+    }else if (inclusivity === '[)') {
+        return this.isSameOrAfter(from, units) && this.isBefore(to, units);
+    }else if (inclusivity === '[]') {
+        return !(this.isBefore(from, units) || this.isAfter(to, units));
+    }
     return this.isAfter(from, units) && this.isBefore(to, units);
 }
 
index a114b3cd0f0001fbdbf91ab10fb03a6baaea6452..b58f4ec93b66373390b36ee48f5c0b2c1f18b6d4 100644 (file)
@@ -72,6 +72,143 @@ test('is between without units', function (assert) {
     assert.equal(+m, +mCopy, 'isBetween second should not change moment');
 });
 
+test('is between without units inclusivity', function (assert) {
+    var m = moment(new Date(2011, 3, 2, 3, 4, 5, 10)), mCopy = moment(m);
+    assert.equal(m.isBetween(
+        moment(new Date(2011, 3, 2, 3, 4, 5, 10)),
+        moment(new Date(2012, 3, 2, 3, 4, 5, 10)), null, '()'), false, 'start and end are excluded, start is equal to moment');
+    assert.equal(m.isBetween(
+        moment(new Date(2010, 3, 2, 3, 4, 5, 10)),
+        moment(new Date(2011, 3, 2, 3, 4, 5, 10)), null, '()'), false, 'start and end are excluded, end is equal to moment');
+    assert.equal(m.isBetween(
+        moment(new Date(2010, 3, 2, 3, 4, 5, 10)),
+        moment(new Date(2012, 3, 2, 3, 4, 5, 10)), null, '()'), true, 'start and end are excluded, is between');
+    assert.equal(m.isBetween(
+        moment(new Date(2009, 3, 2, 3, 4, 5, 10)),
+        moment(new Date(2010, 3, 2, 3, 4, 5, 10)), null, '()'), false, 'start and end are excluded, is not between');
+    assert.equal(m.isBetween(
+        moment(new Date(2011, 3, 2, 3, 4, 5, 10)),
+        moment(new Date(2011, 3, 2, 3, 4, 5, 10)), null, '()'), false, 'start and end are excluded, should fail on same start/end date.');
+
+    assert.equal(m.isBetween(
+        moment(new Date(2011, 3, 2, 3, 4, 5, 10)),
+        moment(new Date(2012, 3, 2, 3, 4, 5, 10)), null, '(]'), false, 'start is excluded and end is included should fail on same start date');
+    assert.equal(m.isBetween(
+        moment(new Date(2010, 3, 2, 3, 4, 5, 10)),
+        moment(new Date(2011, 3, 2, 3, 4, 5, 10)), null, '(]'), true, 'start is excluded and end is included should succeed on end date');
+    assert.equal(m.isBetween(
+        moment(new Date(2010, 3, 2, 3, 4, 5, 10)),
+        moment(new Date(2012, 3, 2, 3, 4, 5, 10)), null, '(]'), true, 'start is excluded and end is included, is between');
+    assert.equal(m.isBetween(
+        moment(new Date(2009, 3, 2, 3, 4, 5, 10)),
+        moment(new Date(2010, 3, 2, 3, 4, 5, 10)), null, '(]'), false, 'start is excluded and end is included, is not between');
+    assert.equal(m.isBetween(
+        moment(new Date(2011, 3, 2, 3, 4, 5, 10)),
+        moment(new Date(2011, 3, 2, 3, 4, 5, 10)), null, '(]'), false, 'start is excluded and end is included, should fail on same start/end date.');
+
+    assert.equal(m.isBetween(
+        moment(new Date(2011, 3, 2, 3, 4, 5, 10)),
+        moment(new Date(2012, 3, 2, 3, 4, 5, 10)), null, '[)'), true, 'start is included and end is excluded should succeed on same start date');
+    assert.equal(m.isBetween(
+        moment(new Date(2010, 3, 2, 3, 4, 5, 10)),
+        moment(new Date(2011, 3, 2, 3, 4, 5, 10)), null, '[)'), false, 'start is included and end is excluded should fail on same end date');
+    assert.equal(m.isBetween(
+        moment(new Date(2010, 3, 2, 3, 4, 5, 10)),
+        moment(new Date(2012, 3, 2, 3, 4, 5, 10)), null, '[)'), true, 'start is included and end is excluded, is between');
+    assert.equal(m.isBetween(
+        moment(new Date(2009, 3, 2, 3, 4, 5, 10)),
+        moment(new Date(2010, 3, 2, 3, 4, 5, 10)), null, '[)'), false, 'start is included and end is excluded, is not between');
+    assert.equal(m.isBetween(
+        moment(new Date(2011, 3, 2, 3, 4, 5, 10)),
+        moment(new Date(2011, 3, 2, 3, 4, 5, 10)), null, '[)'), false, 'start is included and end is excluded, should fail on same end and start date');
+
+    assert.equal(m.isBetween(
+        moment(new Date(2011, 3, 2, 3, 4, 5, 10)),
+        moment(new Date(2012, 3, 2, 3, 4, 5, 10)), null, '[]'), true, 'start and end inclusive should succeed on same start date');
+    assert.equal(m.isBetween(
+        moment(new Date(2010, 3, 2, 3, 4, 5, 10)),
+        moment(new Date(2011, 3, 2, 3, 4, 5, 10)), null, '[]'), true, 'start and end inclusive should succeed on same end date');
+    assert.equal(m.isBetween(
+        moment(new Date(2010, 3, 2, 3, 4, 5, 10)),
+        moment(new Date(2012, 3, 2, 3, 4, 5, 10)), null, '[]'), true, 'start and end inclusive, is between');
+    assert.equal(m.isBetween(
+        moment(new Date(2009, 3, 2, 3, 4, 5, 10)),
+        moment(new Date(2010, 3, 2, 3, 4, 5, 10)), null, '[]'), false, 'start and end inclusive, is not between');
+    assert.equal(m.isBetween(
+        moment(new Date(2011, 3, 2, 3, 4, 5, 10)),
+        moment(new Date(2011, 3, 2, 3, 4, 5, 10)), null, '[]'), true, 'start and end inclusive, should handle same end and start date');
+});
+
+test('is between milliseconds inclusivity', function (assert) {
+    var m = moment(new Date(2011, 3, 2, 3, 4, 5, 10)), mCopy = moment(m);
+    assert.equal(m.isBetween(
+        moment(new Date(2010, 3, 2, 3, 4, 5, 10)),
+        moment(new Date(2012, 3, 2, 3, 4, 5, 10)), 'milliseconds'), true, 'options, no inclusive');
+    assert.equal(m.isBetween(
+        moment(new Date(2011, 3, 2, 3, 4, 5, 10)),
+        moment(new Date(2012, 3, 2, 3, 4, 5, 10)), 'milliseconds', '()'), false, 'start and end are excluded, start is equal to moment');
+    assert.equal(m.isBetween(
+        moment(new Date(2010, 3, 2, 3, 4, 5, 10)),
+        moment(new Date(2011, 3, 2, 3, 4, 5, 10)), 'milliseconds', '()'), false, 'start and end are excluded, end is equal to moment');
+    assert.equal(m.isBetween(
+        moment(new Date(2010, 3, 2, 3, 4, 5, 10)),
+        moment(new Date(2012, 3, 2, 3, 4, 5, 10)), 'milliseconds', '()'), true, 'start and end are excluded, is between');
+    assert.equal(m.isBetween(
+        moment(new Date(2009, 3, 2, 3, 4, 5, 10)),
+        moment(new Date(2010, 3, 2, 3, 4, 5, 10)), 'milliseconds', '()'), false, 'start and end are excluded, is not between');
+    assert.equal(m.isBetween(
+        moment(new Date(2011, 3, 2, 3, 4, 5, 10)),
+        moment(new Date(2011, 3, 2, 3, 4, 5, 10)), 'milliseconds', '()'), false, 'start and end are excluded, should fail on same start/end date.');
+
+    assert.equal(m.isBetween(
+        moment(new Date(2011, 3, 2, 3, 4, 5, 10)),
+        moment(new Date(2012, 3, 2, 3, 4, 5, 10)), 'milliseconds', '(]'), false, 'start is excluded and end is included should fail on same start date');
+    assert.equal(m.isBetween(
+        moment(new Date(2010, 3, 2, 3, 4, 5, 10)),
+        moment(new Date(2011, 3, 2, 3, 4, 5, 10)), 'milliseconds', '(]'), true, 'start is excluded and end is included should succeed on end date');
+    assert.equal(m.isBetween(
+        moment(new Date(2010, 3, 2, 3, 4, 5, 10)),
+        moment(new Date(2012, 3, 2, 3, 4, 5, 10)), 'milliseconds', '(]'), true, 'start is excluded and end is included, is between');
+    assert.equal(m.isBetween(
+        moment(new Date(2009, 3, 2, 3, 4, 5, 10)),
+        moment(new Date(2010, 3, 2, 3, 4, 5, 10)), 'milliseconds', '(]'), false, 'start is excluded and end is included, is not between');
+    assert.equal(m.isBetween(
+        moment(new Date(2011, 3, 2, 3, 4, 5, 10)),
+        moment(new Date(2011, 3, 2, 3, 4, 5, 10)), 'milliseconds', '(]'), false, 'start is excluded and end is included, should fail on same start/end date.');
+
+    assert.equal(m.isBetween(
+        moment(new Date(2011, 3, 2, 3, 4, 5, 10)),
+        moment(new Date(2012, 3, 2, 3, 4, 5, 10)), 'milliseconds', '[)'), true, 'start is included and end is excluded should succeed on same start date');
+    assert.equal(m.isBetween(
+        moment(new Date(2010, 3, 2, 3, 4, 5, 10)),
+        moment(new Date(2011, 3, 2, 3, 4, 5, 10)), 'milliseconds', '[)'), false, 'start is included and end is excluded should fail on same end date');
+    assert.equal(m.isBetween(
+        moment(new Date(2010, 3, 2, 3, 4, 5, 10)),
+        moment(new Date(2012, 3, 2, 3, 4, 5, 10)), 'milliseconds', '[)'), true, 'start is included and end is excluded, is between');
+    assert.equal(m.isBetween(
+        moment(new Date(2009, 3, 2, 3, 4, 5, 10)),
+        moment(new Date(2010, 3, 2, 3, 4, 5, 10)), 'milliseconds', '[)'), false, 'start is included and end is excluded, is not between');
+    assert.equal(m.isBetween(
+        moment(new Date(2011, 3, 2, 3, 4, 5, 10)),
+        moment(new Date(2011, 3, 2, 3, 4, 5, 10)), 'milliseconds', '[)'), false, 'start is included and end is excluded, should fail on same end and start date');
+
+    assert.equal(m.isBetween(
+        moment(new Date(2011, 3, 2, 3, 4, 5, 10)),
+        moment(new Date(2012, 3, 2, 3, 4, 5, 10)), 'milliseconds', '[]'), true, 'start and end inclusive should succeed on same start date');
+    assert.equal(m.isBetween(
+        moment(new Date(2010, 3, 2, 3, 4, 5, 10)),
+        moment(new Date(2011, 3, 2, 3, 4, 5, 10)), 'milliseconds', '[]'), true, 'start and end inclusive should succeed on same end date');
+    assert.equal(m.isBetween(
+        moment(new Date(2010, 3, 2, 3, 4, 5, 10)),
+        moment(new Date(2012, 3, 2, 3, 4, 5, 10)), 'milliseconds', '[]'), true, 'start and end inclusive, is between');
+    assert.equal(m.isBetween(
+        moment(new Date(2009, 3, 2, 3, 4, 5, 10)),
+        moment(new Date(2010, 3, 2, 3, 4, 5, 10)), 'milliseconds', '[]'), false, 'start and end inclusive, is not between');
+    assert.equal(m.isBetween(
+        moment(new Date(2011, 3, 2, 3, 4, 5, 10)),
+        moment(new Date(2011, 3, 2, 3, 4, 5, 10)), 'milliseconds', '[]'), true, 'start and end inclusive, should handle same end and start date');
+});
+
 test('is between year', function (assert) {
     var m = moment(new Date(2011, 1, 2, 3, 4, 5, 6)), mCopy = moment(m);
     assert.equal(m.isBetween(