timers: fail early when callback is not a function · nodejs/node@ac153bd (original) (raw)

``

1

`+

'use strict';

`

``

2

`+

const common = require('../common');

`

``

3

`+

const assert = require('assert');

`

``

4

+

``

5

`+

function doSetTimeout(callback, after) {

`

``

6

`+

return function() {

`

``

7

`+

setTimeout(callback, after);

`

``

8

`+

};

`

``

9

`+

}

`

``

10

+

``

11

`+

assert.throws(doSetTimeout('foo'),

`

``

12

`+

/"callback" argument must be a function/);

`

``

13

`+

assert.throws(doSetTimeout({foo: 'bar'}),

`

``

14

`+

/"callback" argument must be a function/);

`

``

15

`+

assert.throws(doSetTimeout(),

`

``

16

`+

/"callback" argument must be a function/);

`

``

17

`+

assert.throws(doSetTimeout(undefined, 0),

`

``

18

`+

/"callback" argument must be a function/);

`

``

19

`+

assert.throws(doSetTimeout(null, 0),

`

``

20

`+

/"callback" argument must be a function/);

`

``

21

`+

assert.throws(doSetTimeout(false, 0),

`

``

22

`+

/"callback" argument must be a function/);

`

``

23

+

``

24

+

``

25

`+

function doSetInterval(callback, after) {

`

``

26

`+

return function() {

`

``

27

`+

setInterval(callback, after);

`

``

28

`+

};

`

``

29

`+

}

`

``

30

+

``

31

`+

assert.throws(doSetInterval('foo'),

`

``

32

`+

/"callback" argument must be a function/);

`

``

33

`+

assert.throws(doSetInterval({foo: 'bar'}),

`

``

34

`+

/"callback" argument must be a function/);

`

``

35

`+

assert.throws(doSetInterval(),

`

``

36

`+

/"callback" argument must be a function/);

`

``

37

`+

assert.throws(doSetInterval(undefined, 0),

`

``

38

`+

/"callback" argument must be a function/);

`

``

39

`+

assert.throws(doSetInterval(null, 0),

`

``

40

`+

/"callback" argument must be a function/);

`

``

41

`+

assert.throws(doSetInterval(false, 0),

`

``

42

`+

/"callback" argument must be a function/);

`

``

43

+

``

44

+

``

45

`+

function doSetImmediate(callback, after) {

`

``

46

`+

return function() {

`

``

47

`+

setImmediate(callback, after);

`

``

48

`+

};

`

``

49

`+

}

`

``

50

+

``

51

`+

assert.throws(doSetImmediate('foo'),

`

``

52

`+

/"callback" argument must be a function/);

`

``

53

`+

assert.throws(doSetImmediate({foo: 'bar'}),

`

``

54

`+

/"callback" argument must be a function/);

`

``

55

`+

assert.throws(doSetImmediate(),

`

``

56

`+

/"callback" argument must be a function/);

`

``

57

`+

assert.throws(doSetImmediate(undefined, 0),

`

``

58

`+

/"callback" argument must be a function/);

`

``

59

`+

assert.throws(doSetImmediate(null, 0),

`

``

60

`+

/"callback" argument must be a function/);

`

``

61

`+

assert.throws(doSetImmediate(false, 0),

`

``

62

`+

/"callback" argument must be a function/);

`