UNPKG

21.6 kBJavaScriptView Raw
1/* jshint node: true, maxlen: 200, -W030 */
2/* global describe, it */
3
4var should = require('should');
5var moment = require('moment');
6require('../lib/moment-range');
7
8describe('Moment', function() {
9 var dr = moment.range(new Date(Date.UTC(2011, 2, 5)), new Date(Date.UTC(2011, 5, 5)));
10 var m1 = moment('2011-04-15', 'YYYY-MM-DD');
11 var m2 = moment('2012-12-25', 'YYYY-MM-DD');
12 var mStart = moment('2011-03-05', 'YYYY-MM-DD');
13 var mEnd = moment('2011-06-05', 'YYYY-MM-DD');
14
15 describe('#range()', function() {
16 it('should a DateRange with start & end properties', function() {
17 dr = moment.range(m1, m2);
18 moment.isMoment(dr.start).should.be.true;
19 moment.isMoment(dr.end).should.be.true;
20 });
21
22 it('should support string units like `year`, `month`, `week`, `day`, `minute`, `second`, etc...', function() {
23 dr = m1.range('year');
24 dr.start.valueOf().should.equal(moment(m1).startOf('year').valueOf());
25 dr.end.valueOf().should.equal(moment(m1).endOf('year').valueOf());
26 });
27 });
28
29 describe('#within()', function() {
30 it('should determine if the current moment is within a given range', function() {
31 m1.within(dr).should.be.true;
32 m2.within(dr).should.be.false;
33 });
34
35 it('should consider the edges to be within the range', function() {
36 mStart.within(dr).should.be.true;
37 mEnd.within(dr).should.be.true;
38 });
39 });
40});
41
42describe('DateRange', function() {
43 var d1 = new Date(Date.UTC(2011, 2, 5));
44 var d2 = new Date(Date.UTC(2011, 5, 5));
45 var d3 = new Date(Date.UTC(2011, 4, 9));
46 var d4 = new Date(Date.UTC(1988, 0, 1));
47 var m1 = moment.utc('06-05-1996', 'MM-DD-YYYY');
48 var m2 = moment.utc('11-05-1996', 'MM-DD-YYYY');
49 var m3 = moment.utc('08-12-1996', 'MM-DD-YYYY');
50 var m4 = moment.utc('01-01-2012', 'MM-DD-YYYY');
51 var sStart = '1996-08-12T00:00:00.000Z';
52 var sEnd = '2012-01-01T00:00:00.000Z';
53
54 describe('constructor', function() {
55 it('should allow initialization with date string', function() {
56 var dr = moment.range(sStart, sEnd);
57
58 moment.isMoment(dr.start).should.be.true;
59 moment.isMoment(dr.end).should.be.true;
60 });
61
62 it('should allow initialization with Date object', function() {
63 var dr = moment.range(d1, d2);
64
65 moment.isMoment(dr.start).should.be.true;
66 moment.isMoment(dr.end).should.be.true;
67 });
68
69 it('should allow initialization with Moment object', function() {
70 var dr = moment.range(m1, m2);
71
72 moment.isMoment(dr.start).should.be.true;
73 moment.isMoment(dr.end).should.be.true;
74 });
75
76 it('should allow initialization with an ISO 8601 Time Interval string', function() {
77 var start = '2015-01-17T09:50:04+00:00';
78 var end = '2015-04-17T08:29:55+00:00';
79 var dr = moment.range(start + '/' + end);
80
81 moment.utc(start).isSame(dr.start).should.be.true;
82 moment.utc(end).isSame(dr.end).should.be.true;
83 });
84
85 it('should allow initialization with an array', function() {
86 var dr = moment.range([m1, m2]);
87
88 m1.isSame(dr.start).should.be.true;
89 m2.isSame(dr.end).should.be.true;
90 });
91 });
92
93 describe('#clone()', function() {
94 it('should deep clone range', function() {
95 var dr1 = moment().range(sStart, sEnd);
96 var dr2 = dr1.clone();
97
98 dr2.start.add(2, 'days');
99 dr1.start.toDate().should.not.equal(dr2.start.toDate());
100 });
101 });
102
103 describe('#by()', function() {
104 it('should iterate correctly by range', function() {
105 var acc = [];
106 var d1 = new Date(Date.UTC(2012, 2, 1));
107 var d2 = new Date(Date.UTC(2012, 2, 5));
108 var dr1 = moment.range(d1, d2);
109 var dr2 = 1000 * 60 * 60 * 24;
110
111 dr1.by(dr2, function(m) {
112 acc.push(m);
113 });
114
115 acc.length.should.eql(5);
116 acc[0].utc().date().should.eql(1);
117 acc[1].utc().date().should.eql(2);
118 acc[2].utc().date().should.eql(3);
119 acc[3].utc().date().should.eql(4);
120 acc[4].utc().date().should.eql(5);
121 });
122
123 it('should iterate correctly by duration', function() {
124 var acc = [];
125 var d1 = new Date(Date.UTC(2014, 9, 6, 0, 0));
126 var d2 = new Date(Date.UTC(2014, 9, 6, 23, 59));
127 var dr1 = moment.range(d1, d2);
128 var dr2 = moment.duration(15, 'minutes');
129
130 dr1.by(dr2, function(m) {
131 acc.push(m);
132 });
133
134 acc.length.should.eql(96);
135 acc[0].minute().should.eql(0);
136 acc[95].minute().should.eql(45);
137 });
138
139 it('should iterate correctly by shorthand string', function() {
140 var acc = [];
141 var d1 = new Date(Date.UTC(2012, 2, 1));
142 var d2 = new Date(Date.UTC(2012, 2, 5));
143 var dr1 = moment.range(d1, d2);
144 var dr2 = 'days';
145
146 dr1.by(dr2, function(m) {
147 acc.push(m);
148 });
149
150 acc.length.should.eql(5);
151 acc[0].utc().date().should.eql(1);
152 acc[1].utc().date().should.eql(2);
153 acc[2].utc().date().should.eql(3);
154 acc[3].utc().date().should.eql(4);
155 acc[4].utc().date().should.eql(5);
156 });
157
158 it('should iterate correctly by year over a Date-constructed range when leap years are involved', function() {
159 var acc = [];
160 var d1 = new Date(Date.UTC(2011, 1, 1));
161 var d2 = new Date(Date.UTC(2013, 1, 1));
162 var dr1 = moment.range(d1, d2);
163 var dr2 = 'years';
164
165 dr1.by(dr2, function(m) {
166 acc.push(m.utc().year());
167 });
168
169 acc.should.eql([2011, 2012, 2013]);
170 });
171
172 it('should iterate correctly by year over a moment()-constructed range when leap years are involved', function() {
173 var acc = [];
174 var dr1 = moment.range(moment('2011', 'YYYY'), moment('2013', 'YYYY'));
175 var dr2 = 'years';
176
177 dr1.by(dr2, function(m) {
178 acc.push(m.year());
179 });
180
181 acc.should.eql([2011, 2012, 2013]);
182 });
183
184 it('should iterate correctly by month over a moment()-constructed range when leap years are involved', function() {
185 var acc = [];
186 var dr1 = moment.range(moment.utc('2012-01', 'YYYY-MM'), moment.utc('2012-03', 'YYYY-MM'));
187 var dr2 = 'months';
188
189 dr1.by(dr2, function(m) {
190 acc.push(m.utc().format('YYYY-MM'));
191 });
192
193 acc.should.eql(['2012-01', '2012-02', '2012-03']);
194 });
195
196 it('should iterate correctly by month over a Date-contstructed range when leap years are involved', function() {
197 var acc = [];
198 var d1 = new Date(Date.UTC(2012, 0));
199 var d2 = new Date(Date.UTC(2012, 2));
200 var dr1 = moment.range(d1, d2);
201 var dr2 = 'months';
202
203 dr1.by(dr2, function(m) {
204 acc.push(m.utc().format('YYYY-MM'));
205 });
206
207 acc.should.eql(['2012-01', '2012-02', '2012-03']);
208 });
209
210 it('should not include .end in the iteration if exclusive is set to true when iterating by string', function() {
211 var my1 = moment('2014-04-02T00:00:00.000Z');
212 var my2 = moment('2014-04-04T00:00:00.000Z');
213 var dr1 = moment.range(my1, my2);
214 var acc = [];
215
216 dr1.by('d', (function(d) {
217 acc.push(d.utc().format('YYYY-MM-DD'));
218 }), false);
219
220 acc.should.eql(['2014-04-02', '2014-04-03', '2014-04-04']);
221
222 acc = [];
223
224 dr1.by('d', (function(d) {
225 acc.push(d.utc().format('YYYY-MM-DD'));
226 }), true);
227
228 acc.should.eql(['2014-04-02', '2014-04-03']);
229
230 acc = [];
231
232 dr1.by('d', (function(d) {
233 acc.push(d.utc().format('YYYY-MM-DD'));
234 }));
235
236 acc.should.eql(['2014-04-02', '2014-04-03', '2014-04-04']);
237 });
238
239 it('should not include .end in the iteration if exclusive is set to true when iterating by range', function() {
240 var my1 = moment('2014-04-02T00:00:00.000Z');
241 var my2 = moment('2014-04-04T00:00:00.000Z');
242 var dr1 = moment.range(my1, my2);
243 var dr2 = moment.range(my1, moment('2014-04-03T00:00:00.000Z'));
244 var acc = [];
245
246 dr1.by(dr2, function(d) {
247 acc.push(d.utc().format('YYYY-MM-DD'));
248 });
249
250 acc.should.eql(['2014-04-02', '2014-04-03', '2014-04-04']);
251
252 acc = [];
253
254 dr1.by(dr2, (function(d) {
255 acc.push(d.utc().format('YYYY-MM-DD'));
256 }), false);
257
258 acc.should.eql(['2014-04-02', '2014-04-03', '2014-04-04']);
259
260 acc = [];
261
262 dr1.by(dr2, (function(d) {
263 acc.push(d.utc().format('YYYY-MM-DD'));
264 }), true);
265
266 acc.should.eql(['2014-04-02', '2014-04-03']);
267 });
268
269 it('should be exlusive when using by with minutes as well', function() {
270 var d1 = moment('2014-01-01T00:00:00.000Z');
271 var d2 = moment('2014-01-01T00:06:00.000Z');
272 var dr = moment.range(d1, d2);
273 var acc = [];
274
275 dr.by('m', (function(d) {
276 acc.push(d.utc().format('mm'));
277 }));
278
279 acc.should.eql(['00', '01', '02', '03', '04', '05', '06']);
280
281 acc = [];
282
283 dr.by('m', (function(d) {
284 acc.push(d.utc().format('mm'));
285 }), true);
286
287 acc.should.eql(['00', '01', '02', '03', '04', '05']);
288 });
289 });
290
291 describe('#contains()', function() {
292 it('should work with Date objects', function() {
293 var dr = moment.range(d1, d2);
294
295 dr.contains(d3).should.be.true;
296 dr.contains(d4).should.be.false;
297 });
298
299 it('should work with Moment objects', function() {
300 var dr = moment.range(m1, m2);
301
302 dr.contains(m3).should.be.true;
303 dr.contains(m4).should.be.false;
304 });
305
306 it('should work with DateRange objects', function() {
307 var dr1 = moment.range(m1, m4);
308 var dr2 = moment.range(m3, m2);
309
310 dr1.contains(dr2).should.be.true;
311 dr2.contains(dr1).should.be.false;
312 });
313
314 it('should be an inclusive comparison', function() {
315 var dr1 = moment.range(m1, m4);
316
317 dr1.contains(m1).should.be.true;
318 dr1.contains(m4).should.be.true;
319 dr1.contains(dr1).should.be.true;
320 });
321
322 it('should be exlusive when the exclusive param is set', function() {
323 var dr1 = moment.range(m1, m2);
324
325 dr1.contains(dr1, true).should.be.false;
326 dr1.contains(dr1, false).should.be.true;
327 dr1.contains(dr1).should.be.true;
328 dr1.contains(m2, true).should.be.false;
329 dr1.contains(m2, false).should.be.true;
330 dr1.contains(m2).should.be.true;
331 });
332 });
333
334 describe('#overlaps()', function() {
335 it('should work with DateRange objects', function() {
336 var dr1 = moment.range(m1, m2);
337 var dr2 = moment.range(m3, m4);
338 var dr3 = moment.range(m2, m4);
339 var dr4 = moment.range(m1, m3);
340
341 dr1.overlaps(dr2).should.be.true;
342 dr1.overlaps(dr3).should.be.false;
343 dr4.overlaps(dr3).should.be.false;
344 });
345 });
346
347 describe('#intersect()', function() {
348 var d5 = new Date(Date.UTC(2011, 2, 2));
349 var d6 = new Date(Date.UTC(2011, 4, 4));
350 var d7 = new Date(Date.UTC(2011, 6, 6));
351 var d8 = new Date(Date.UTC(2011, 8, 8));
352
353 it('should work with [---{==]---} overlaps where (a=[], b={})', function() {
354 var dr1 = moment.range(d5, d7);
355 var dr2 = moment.range(d6, d8);
356
357 dr1.intersect(dr2).isSame(moment.range(d6, d7)).should.be.true;
358 });
359
360 it('should work with {---[==}---] overlaps where (a=[], b={})', function() {
361 var dr1 = moment.range(d6, d8);
362 var dr2 = moment.range(d5, d7);
363
364 dr1.intersect(dr2).isSame(moment.range(d6, d7)).should.be.true;
365 });
366
367 it('should work with [{===]---} overlaps where (a=[], b={})', function() {
368 var dr1 = moment.range(d5, d6);
369 var dr2 = moment.range(d5, d7);
370
371 dr1.intersect(dr2).isSame(moment.range(d5, d6)).should.be.true;
372 });
373
374 it('should work with {[===}---] overlaps where (a=[], b={})', function() {
375 var dr1 = moment.range(d5, d7);
376 var dr2 = moment.range(d5, d6);
377
378 dr1.intersect(dr2).isSame(moment.range(d5, d6)).should.be.true;
379 });
380
381 it('should work with [---{===]} overlaps where (a=[], b={})', function() {
382 var dr1 = moment.range(d5, d7);
383 var dr2 = moment.range(d6, d7);
384
385 dr1.intersect(dr2).isSame(moment.range(d6, d7)).should.be.true;
386 });
387
388 it('should work with {---[===}] overlaps where (a=[], b={})', function() {
389 var dr1 = moment.range(d6, d7);
390 var dr2 = moment.range(d5, d7);
391
392 dr1.intersect(dr2).isSame(moment.range(d6, d7)).should.be.true;
393 });
394
395 it('should work with [---] {---} overlaps where (a=[], b={})', function() {
396 var dr1 = moment.range(d5, d6);
397 var dr2 = moment.range(d7, d8);
398
399 should.strictEqual(dr1.intersect(dr2), null);
400 });
401
402 it('should work with {---} [---] overlaps where (a=[], b={})', function() {
403 var dr1 = moment.range(d7, d8);
404 var dr2 = moment.range(d5, d6);
405
406 should.strictEqual(dr1.intersect(dr2), null);
407 });
408
409 it('should work with [---]{---} overlaps where (a=[], b={})', function() {
410 var dr1 = moment.range(d5, d6);
411 var dr2 = moment.range(d6, d7);
412
413 should.strictEqual(dr1.intersect(dr2), null);
414 });
415
416 it('should work with {---}[---] overlaps where (a=[], b={})', function() {
417 var dr1 = moment.range(d6, d7);
418 var dr2 = moment.range(d5, d6);
419 should.strictEqual(dr1.intersect(dr2), null);
420 });
421
422 it('should work with {--[===]--} overlaps where (a=[], b={})', function() {
423 var dr1 = moment.range(d6, d7);
424 var dr2 = moment.range(d5, d8);
425
426 dr1.intersect(dr2).isSame(dr1).should.be.true;
427 });
428
429 it('should work with [--{===}--] overlaps where (a=[], b={})', function() {
430 var dr1 = moment.range(d5, d8);
431 var dr2 = moment.range(d6, d7);
432
433 dr1.intersect(dr2).isSame(dr2).should.be.true;
434 });
435
436 it('should work with [{===}] overlaps where (a=[], b={})', function() {
437 var dr1 = moment.range(d5, d6);
438 var dr2 = moment.range(d5, d6);
439
440 dr1.intersect(dr2).isSame(dr2).should.be.true;
441 });
442
443 it('should work with [--{}--] overlaps where (a=[], b={})', function() {
444 var dr1 = moment.range(d6, d6);
445 var dr2 = moment.range(d5, d7);
446
447 dr1.intersect(dr2).isSame(dr1).should.be.true;
448 });
449 });
450
451 describe('#add()', function() {
452 var d5 = new Date(Date.UTC(2011, 2, 2));
453 var d6 = new Date(Date.UTC(2011, 4, 4));
454 var d7 = new Date(Date.UTC(2011, 6, 6));
455 var d8 = new Date(Date.UTC(2011, 8, 8));
456
457 it('should add ranges with [---{==]---} overlaps where (a=[], b={})', function() {
458 var dr1 = moment.range(d5, d7);
459 var dr2 = moment.range(d6, d8);
460
461 dr1.add(dr2).isSame(moment.range(d5, d8)).should.be.true;
462 });
463
464 it('should add ranges with {---[==}---] overlaps where (a=[], b={})', function() {
465 var dr1 = moment.range(d6, d8);
466 var dr2 = moment.range(d5, d7);
467
468 dr1.add(dr2).isSame(moment.range(d5, d8)).should.be.true;
469 });
470
471 it('should add ranges with [{===]---} overlaps where (a=[], b={})', function() {
472 var dr1 = moment.range(d5, d6);
473 var dr2 = moment.range(d5, d7);
474
475 dr1.add(dr2).isSame(moment.range(d5, d7)).should.be.true;
476 });
477
478 it('should add ranges with {[===}---] overlaps where (a=[], b={})', function() {
479 var dr1 = moment.range(d5, d7);
480 var dr2 = moment.range(d5, d6);
481
482 dr1.add(dr2).isSame(moment.range(d5, d7)).should.be.true;
483 });
484
485 it('should add ranges with [---{===]} overlaps where (a=[], b={})', function() {
486 var dr1 = moment.range(d5, d7);
487 var dr2 = moment.range(d6, d7);
488
489 dr1.add(dr2).isSame(moment.range(d5, d7)).should.be.true;
490 });
491
492 it('should add ranges with {---[===}] overlaps where (a=[], b={})', function() {
493 var dr1 = moment.range(d6, d7);
494 var dr2 = moment.range(d5, d7);
495
496 dr1.add(dr2).isSame(moment.range(d5, d7)).should.be.true;
497 });
498
499 it('should not add ranges with [---] {---} overlaps where (a=[], b={})', function() {
500 var dr1 = moment.range(d5, d6);
501 var dr2 = moment.range(d7, d8);
502
503 should.strictEqual(dr1.add(dr2), null);
504 });
505
506 it('should not add ranges with {---} [---] overlaps where (a=[], b={})', function() {
507 var dr1 = moment.range(d7, d8);
508 var dr2 = moment.range(d5, d6);
509
510 should.strictEqual(dr1.add(dr2), null);
511 });
512
513 it('should not add ranges with [---]{---} overlaps where (a=[], b={})', function() {
514 var dr1 = moment.range(d5, d6);
515 var dr2 = moment.range(d6, d7);
516
517 should.strictEqual(dr1.add(dr2), null);
518 });
519
520 it('should not add ranges with {---}[---] overlaps where (a=[], b={})', function() {
521 var dr1 = moment.range(d6, d7);
522 var dr2 = moment.range(d5, d6);
523
524 should.strictEqual(dr1.add(dr2), null);
525 });
526
527 it('should add ranges {--[===]--} overlaps where (a=[], b={})', function() {
528 var dr1 = moment.range(d6, d7);
529 var dr2 = moment.range(d5, d8);
530
531 dr1.add(dr2).isSame(moment.range(d5, d8)).should.be.true;
532 });
533
534 it('should add ranges [--{===}--] overlaps where (a=[], b={})', function() {
535 var dr1 = moment.range(d5, d8);
536 var dr2 = moment.range(d6, d7);
537
538 dr1.add(dr2).isSame(moment.range(d5, d8)).should.be.true;
539 });
540
541 it('should add ranges [{===}] overlaps where (a=[], b={})', function() {
542 var dr1 = moment.range(d5, d6);
543 var dr2 = moment.range(d5, d6);
544
545 dr1.add(dr2).isSame(moment.range(d5, d6)).should.be.true;
546 });
547 });
548
549 describe('#subtract()', function() {
550 var d5 = new Date(Date.UTC(2011, 2, 2));
551 var d6 = new Date(Date.UTC(2011, 4, 4));
552 var d7 = new Date(Date.UTC(2011, 6, 6));
553 var d8 = new Date(Date.UTC(2011, 8, 8));
554
555 it('should turn [--{==}--] into (--) (--) where (a=[], b={})', function() {
556 var dr1 = moment.range(d5, d8);
557 var dr2 = moment.range(d6, d7);
558
559 dr1.subtract(dr2).should.eql([moment.range(d5, d6), moment.range(d7, d8)]);
560 });
561
562 it('should turn {--[==]--} into () where (a=[], b={})', function() {
563 var dr1 = moment.range(d6, d7);
564 var dr2 = moment.range(d5, d8);
565
566 dr1.subtract(dr2).should.eql([]);
567 });
568
569 it('should turn {[==]} into () where (a=[], b={})', function() {
570 var dr1 = moment.range(d5, d6);
571 var dr2 = moment.range(d5, d6);
572
573 dr1.subtract(dr2).should.eql([]);
574 });
575
576 it('should turn [--{==]--} into (--) where (a=[], b={})', function() {
577 var dr1 = moment.range(d5, d7);
578 var dr2 = moment.range(d6, d8);
579
580 dr1.subtract(dr2).should.eql([moment.range(d5, d6)]);
581 });
582
583 it('should turn [--{==]} into (--) where (a=[], b={})', function() {
584 var dr1 = moment.range(d5, d7);
585 var dr2 = moment.range(d6, d7);
586
587 dr1.subtract(dr2).should.eql([moment.range(d5, d6)]);
588 });
589
590 it('should turn {--[==}--] into (--) where (a=[], b={})', function() {
591 var dr1 = moment.range(d6, d8);
592 var dr2 = moment.range(d5, d7);
593
594 dr1.subtract(dr2).should.eql([moment.range(d7, d8)]);
595 });
596
597 it('should turn {[==}--] into (--) where (a=[], b={})', function() {
598 var dr1 = moment.range(d6, d8);
599 var dr2 = moment.range(d6, d7);
600
601 dr1.subtract(dr2).should.eql([moment.range(d7, d8)]);
602 });
603
604 it('should turn [--] {--} into (--) where (a=[], b={})', function() {
605 var dr1 = moment.range(d5, d6);
606 var dr2 = moment.range(d7, d8);
607
608 dr1.subtract(dr2).should.eql([dr1]);
609 });
610
611 it('should turn {--} [--] into (--) where (a=[], b={})', function() {
612 var dr1 = moment.range(d7, d8);
613 var dr2 = moment.range(d5, d6);
614
615 dr1.subtract(dr2).should.eql([dr1]);
616 });
617 });
618
619 describe('#isSame()', function() {
620 it('should true if the start and end of both DateRange objects equal', function() {
621 var dr1 = moment.range(d1, d2);
622 var dr2 = moment.range(d1, d2);
623
624 dr1.isSame(dr2).should.be.true;
625 });
626
627 it('should false if the starts differ between objects', function() {
628 var dr1 = moment.range(d1, d3);
629 var dr2 = moment.range(d2, d3);
630
631 dr1.isSame(dr2).should.be.false;
632 });
633
634 it('should false if the ends differ between objects', function() {
635 var dr1 = moment.range(d1, d2);
636 var dr2 = moment.range(d1, d3);
637
638 dr1.isSame(dr2).should.be.false;
639 });
640 });
641
642 describe('#toString()', function() {
643 it('should be a correctly formatted ISO8601 Time Interval', function() {
644 var start = '2015-01-17T09:50:04+00:00';
645 var end = '2015-04-17T08:29:55+00:00';
646 var dr = moment.range(moment.utc(start), moment.utc(end));
647
648 dr.toString().should.equal(start + '/' + end);
649 });
650 });
651
652 describe('#valueOf()', function() {
653 it('should be the value of the range in milliseconds', function() {
654 var dr = moment.range(d1, d2);
655
656 dr.valueOf().should.eql(d2.getTime() - d1.getTime());
657 });
658
659 it('should correctly coerce to a number', function() {
660 var dr1 = moment.range(d4, d2);
661 var dr2 = moment.range(d3, d2);
662
663 (dr1 > dr2).should.be.true;
664 });
665 });
666
667 describe('#toDate()', function() {
668 it('should be a array like [dateObject, dateObject]', function() {
669 var dr = moment.range(d1, d2);
670 var drTodate = dr.toDate();
671
672 drTodate.length.should.eql(2);
673 drTodate[0].valueOf().should.eql(d1.valueOf());
674 drTodate[1].valueOf().should.eql(d2.valueOf());
675 });
676 });
677
678 describe('#diff()', function() {
679 it('should use momentjs’ diff method', function() {
680 var dr = moment.range(d1, d2);
681
682 dr.diff('months').should.equal(3);
683 dr.diff('days').should.equal(92);
684 dr.diff().should.equal(7948800000);
685 });
686 });
687
688 describe('#center()', function() {
689 it('should use momentjs’ center method', function() {
690 var d1 = new Date(Date.UTC(2011, 2, 5));
691 var d2 = new Date(Date.UTC(2011, 3, 5));
692 var dr = moment.range(d1, d2);
693
694 dr.center().valueOf().should.equal(1300622400000);
695 });
696 });
697});