-
-
Notifications
You must be signed in to change notification settings - Fork 4.4k
/
for-direction.js
119 lines (103 loc) · 5.3 KB
/
for-direction.js
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
109
110
111
112
113
114
115
116
117
118
119
/**
* @fileoverview Tests for for-direction rule.
* @author Aladdin-ADD <hh_2013@foxmail.com>
*/
"use strict";
//------------------------------------------------------------------------------
// Requirements
//------------------------------------------------------------------------------
const rule = require("../../../lib/rules/for-direction");
const { RuleTester } = require("../../../lib/rule-tester");
//------------------------------------------------------------------------------
// Tests
//------------------------------------------------------------------------------
const ruleTester = new RuleTester({ parserOptions: { ecmaVersion: 2020 } });
const incorrectDirection = { messageId: "incorrectDirection" };
ruleTester.run("for-direction", rule, {
valid: [
// test if '++', '--'
"for(var i = 0; i < 10; i++){}",
"for(var i = 0; i <= 10; i++){}",
"for(var i = 10; i > 0; i--){}",
"for(var i = 10; i >= 0; i--){}",
// test if '++', '--' with counter 'i' on the right side of test condition
"for(var i = 0; 10 > i; i++){}",
"for(var i = 0; 10 >= i; i++){}",
"for(var i = 10; 0 < i; i--){}",
"for(var i = 10; 0 <= i; i--){}",
// test if '+=', '-=',
"for(var i = 0; i < 10; i+=1){}",
"for(var i = 0; i <= 10; i+=1){}",
"for(var i = 0; i < 10; i-=-1){}",
"for(var i = 0; i <= 10; i-=-1){}",
"for(var i = 10; i > 0; i-=1){}",
"for(var i = 10; i >= 0; i-=1){}",
"for(var i = 10; i > 0; i+=-1){}",
"for(var i = 10; i >= 0; i+=-1){}",
"for(var i = 0n; i > l; i-=1n){}",
"for(var i = 0n; i < l; i-=-1n){}",
"for(var i = MIN; i <= MAX; i+=true){}",
"for(var i = 0; i < 10; i+=+5e-7){}",
"for(var i = 0; i < MAX; i -= ~2);",
"for(var i = 0, n = -1; i < MAX; i += -n);",
// test if '+=', '-=' with counter 'i' on the right side of test condition
"for(var i = 0; 10 > i; i+=1){}",
// test if no update.
"for(var i = 10; i > 0;){}",
"for(var i = 10; i >= 0;){}",
"for(var i = 10; i < 0;){}",
"for(var i = 10; i <= 0;){}",
"for(var i = 10; i <= 0; j++){}",
"for(var i = 10; i <= 0; j--){}",
"for(var i = 10; i >= 0; j++){}",
"for(var i = 10; i >= 0; j--){}",
"for(var i = 10; i >= 0; j += 2){}",
"for(var i = 10; i >= 0; j -= 2){}",
"for(var i = 10; i >= 0; i |= 2){}",
"for(var i = 10; i >= 0; i %= 2){}",
"for(var i = 0; i < MAX; i += STEP_SIZE);",
"for(var i = 0; i < MAX; i -= STEP_SIZE);",
"for(var i = 10; i > 0; i += STEP_SIZE);",
"for(var i = 10; i >= 0; i += 0);",
"for(var i = 10n; i >= 0n; i += 0n);",
"for(var i = 10; i >= 0; i += this.step);",
"for(var i = 10; i >= 0; i += 'foo');",
"for(var i = 10; i > 0; i += !foo);",
"for(var i = MIN; i <= MAX; i -= false);",
"for(var i = MIN; i <= MAX; i -= 0/0);",
// other cond-expressions.
"for(var i = 0; i !== 10; i+=1){}",
"for(var i = 0; i === 10; i+=1){}",
"for(var i = 0; i == 10; i+=1){}",
"for(var i = 0; i != 10; i+=1){}"
],
invalid: [
// test if '++', '--'
{ code: "for(var i = 0; i < 10; i--){}", errors: [incorrectDirection] },
{ code: "for(var i = 0; i <= 10; i--){}", errors: [incorrectDirection] },
{ code: "for(var i = 10; i > 10; i++){}", errors: [incorrectDirection] },
{ code: "for(var i = 10; i >= 0; i++){}", errors: [incorrectDirection] },
// test if '++', '--' with counter 'i' on the right side of test condition
{ code: "for(var i = 0; 10 > i; i--){}", errors: [incorrectDirection] },
{ code: "for(var i = 0; 10 >= i; i--){}", errors: [incorrectDirection] },
{ code: "for(var i = 10; 10 < i; i++){}", errors: [incorrectDirection] },
{ code: "for(var i = 10; 0 <= i; i++){}", errors: [incorrectDirection] },
// test if '+=', '-='
{ code: "for(var i = 0; i < 10; i-=1){}", errors: [incorrectDirection] },
{ code: "for(var i = 0; i <= 10; i-=1){}", errors: [incorrectDirection] },
{ code: "for(var i = 10; i > 10; i+=1){}", errors: [incorrectDirection] },
{ code: "for(var i = 10; i >= 0; i+=1){}", errors: [incorrectDirection] },
{ code: "for(var i = 0; i < 10; i+=-1){}", errors: [incorrectDirection] },
{ code: "for(var i = 0; i <= 10; i+=-1){}", errors: [incorrectDirection] },
{ code: "for(var i = 10; i > 10; i-=-1){}", errors: [incorrectDirection] },
{ code: "for(var i = 10; i >= 0; i-=-1){}", errors: [incorrectDirection] },
{ code: "for(var i = 0n; i > l; i+=1n){}", errors: [incorrectDirection] },
{ code: "for(var i = 0n; i < l; i+=-1n){}", errors: [incorrectDirection] },
{ code: "for(var i = MIN; i <= MAX; i-=true){}", errors: [incorrectDirection] },
{ code: "for(var i = 0; i < 10; i-=+5e-7){}", errors: [incorrectDirection] },
{ code: "for(var i = 0; i < MAX; i += (2 - 3));", errors: [incorrectDirection] },
{ code: "var n = -2; for(var i = 0; i < 10; i += n);", errors: [incorrectDirection] },
// test if '+=', '-=' with counter 'i' on the right side of test condition
{ code: "for(var i = 0; 10 > i; i-=1){}", errors: [incorrectDirection] }
]
});