forked from sindresorhus/eslint-plugin-unicorn
-
Notifications
You must be signed in to change notification settings - Fork 0
/
prefer-number-is-integer.mjs
108 lines (105 loc) · 3.7 KB
/
prefer-number-is-integer.mjs
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
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
import {getTester} from './utils/test.mjs';
const {test} = getTester(import.meta);
const suggestionCase = ({code, suggestions}) => ({
code,
errors: [
{
messageId: 'preferNumberIsInteger',
suggestions,
},
],
});
test({
valid: [
'Number.isInteger(13)',
'Number.isInteger(13.0)',
'Number.isInteger(value)',
'(value^0) === notValue',
'(value | 0) === notValue',
'Math.round(value) === notValue',
'Number.parseInt(value, 10) === notValue',
'~~value === notValue',
],
invalid: [
suggestionCase({code: 'value % 1 === 0', suggestions: [{
messageId: 'preferNumberIsIntegerSuggestion',
output: 'Number.isInteger(value)',
}]}),
suggestionCase({code: 'value % 1 == 0', suggestions: [{
messageId: 'preferNumberIsIntegerSuggestion',
output: 'Number.isInteger(value)',
}]}),
suggestionCase({code: '(value^0) === value', suggestions: [{
messageId: 'preferNumberIsIntegerSuggestion',
output: 'Number.isInteger(value)',
}]}),
suggestionCase({code: '(value^0) == value', suggestions: [{
messageId: 'preferNumberIsIntegerSuggestion',
output: 'Number.isInteger(value)',
}]}),
suggestionCase({code: '(value | 0) === value', suggestions: [{
messageId: 'preferNumberIsIntegerSuggestion',
output: 'Number.isInteger(value)',
}]}),
suggestionCase({code: '(value | 0) == value', suggestions: [{
messageId: 'preferNumberIsIntegerSuggestion',
output: 'Number.isInteger(value)',
}]}),
suggestionCase({code: 'Number.parseInt(value, 10) === value', suggestions: [{
messageId: 'preferNumberIsIntegerSuggestion',
output: 'Number.isInteger(value)',
}]}),
suggestionCase({code: 'Number.parseInt(value, 10) == value', suggestions: [{
messageId: 'preferNumberIsIntegerSuggestion',
output: 'Number.isInteger(value)',
}]}),
suggestionCase({code: '_.isInteger(value)', suggestions: [{
messageId: 'preferNumberIsIntegerSuggestion',
output: 'Number.isInteger(value)',
}]}),
suggestionCase({code: 'lodash.isInteger(value)', suggestions: [{
messageId: 'preferNumberIsIntegerSuggestion',
output: 'Number.isInteger(value)',
}]}),
suggestionCase({code: 'underscore.isInteger(value)', suggestions: [{
messageId: 'preferNumberIsIntegerSuggestion',
output: 'Number.isInteger(value)',
}]}),
suggestionCase({code: 'Math.round(value) === value', suggestions: [{
messageId: 'preferNumberIsIntegerSuggestion',
output: 'Number.isInteger(value)',
}]}),
suggestionCase({code: 'Math.round(value) == value', suggestions: [{
messageId: 'preferNumberIsIntegerSuggestion',
output: 'Number.isInteger(value)',
}]}),
suggestionCase({code: '~~value === value', suggestions: [{
messageId: 'preferNumberIsIntegerSuggestion',
output: 'Number.isInteger(value)',
}]}),
suggestionCase({code: '~~value == value', suggestions: [{
messageId: 'preferNumberIsIntegerSuggestion',
output: 'Number.isInteger(value)',
}]}),
suggestionCase({code: '~~object.value === object.value', suggestions: [{
messageId: 'preferNumberIsIntegerSuggestion',
output: 'Number.isInteger(object.value)',
}]}),
suggestionCase({code: '~~object.a.b.c === object.a.b.c', suggestions: [{
messageId: 'preferNumberIsIntegerSuggestion',
output: 'Number.isInteger(object.a.b.c)',
}]}),
suggestionCase({code: '~~object["a"] === object.a', suggestions: [{
messageId: 'preferNumberIsIntegerSuggestion',
output: 'Number.isInteger(object.a)',
}]}),
suggestionCase({code: '~~object?.a === object.a', suggestions: [{
messageId: 'preferNumberIsIntegerSuggestion',
output: 'Number.isInteger(object.a)',
}]}),
suggestionCase({code: '~~object?.a === object?.a', suggestions: [{
messageId: 'preferNumberIsIntegerSuggestion',
output: 'Number.isInteger(object.a)',
}]}),
],
});