heyujie
2021-05-20 6ebdefb4a5b2be82a8c452c0bb4624f3d85a17b7
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
'use strict';
require('es6-shim');
 
var chai = require('chai');
var chaiAsPromised = require('chai-as-promised');
var reInterval = require('../index.js');
 
describe('reInterval', function() {
 
  it('should work as an usual setInterval', function () {
    return new Promise(function (resolve, reject) {
      var startTime = new Date().getTime();
 
      reInterval(function () {
        if (Math.abs(new Date().getTime() - startTime - 1000) <= 10)
          resolve();
        else
          reject(new Error('Took too much (or not enough) time'));
      }, 1000);
    });
  });
 
  it('should be able to clear an Interval', function () {
    return new Promise(function (resolve, reject) {
      var startTime = new Date().getTime();
 
      var interval = reInterval(function () {
          reject(new Error('Interval not cleared'));
      }, 200);
 
      setTimeout(interval.clear, 100);
 
      setTimeout(resolve, 300);
    });
  });
 
  it('should be able to reschedule an Interval', function () {
    return new Promise(function (resolve, reject) {
      var startTime = new Date().getTime();
 
      var interval = reInterval(function () {
        if (Math.abs(new Date().getTime() - startTime - 800) <= 10)
          resolve();
        else
          reject(new Error('Took too much (or not enough) time'));
      }, 500);
 
      setTimeout(interval.reschedule, 300, [500])
    });
  });
 
});