]> git.proxmox.com Git - pve-eslint.git/blob - eslint/tests/lib/rules/new-parens.js
first commit
[pve-eslint.git] / eslint / tests / lib / rules / new-parens.js
1 /**
2 * @fileoverview Tests for new-parens rule.
3 * @author Ilya Volodin
4 */
5
6 "use strict";
7
8 //------------------------------------------------------------------------------
9 // Requirements
10 //------------------------------------------------------------------------------
11
12 const parser = require("../../fixtures/fixture-parser"),
13 rule = require("../../../lib/rules/new-parens"),
14 { RuleTester } = require("../../../lib/rule-tester");
15
16 //------------------------------------------------------------------------------
17 // Tests
18 //------------------------------------------------------------------------------
19 const error = { messageId: "missing", type: "NewExpression" };
20 const neverError = { messageId: "unnecessary", type: "NewExpression" };
21
22 const ruleTester = new RuleTester();
23
24 ruleTester.run("new-parens", rule, {
25 valid: [
26
27 // Default (Always)
28 "var a = new Date();",
29 "var a = new Date(function() {});",
30 "var a = new (Date)();",
31 "var a = new ((Date))();",
32 "var a = (new Date());",
33 "var a = new foo.Bar();",
34 "var a = (new Foo()).bar;",
35 {
36 code: "new Storage<RootState>('state');",
37 parser: parser("typescript-parsers/new-parens")
38 },
39
40 // Explicit Always
41 { code: "var a = new Date();", options: ["always"] },
42 { code: "var a = new foo.Bar();", options: ["always"] },
43 { code: "var a = (new Foo()).bar;", options: ["always"] },
44
45 // Never
46 { code: "var a = new Date;", options: ["never"] },
47 { code: "var a = new Date(function() {});", options: ["never"] },
48 { code: "var a = new (Date);", options: ["never"] },
49 { code: "var a = new ((Date));", options: ["never"] },
50 { code: "var a = (new Date);", options: ["never"] },
51 { code: "var a = new foo.Bar;", options: ["never"] },
52 { code: "var a = (new Foo).bar;", options: ["never"] },
53 { code: "var a = new Person('Name')", options: ["never"] },
54 { code: "var a = new Person('Name', 12)", options: ["never"] },
55 { code: "var a = new ((Person))('Name');", options: ["never"] }
56 ],
57 invalid: [
58
59 // Default (Always)
60 {
61 code: "var a = new Date;",
62 output: "var a = new Date();",
63 errors: [error]
64 },
65 {
66 code: "var a = new Date",
67 output: "var a = new Date()",
68 errors: [error]
69 },
70 {
71 code: "var a = new (Date);",
72 output: "var a = new (Date)();",
73 errors: [error]
74 },
75 {
76 code: "var a = new (Date)",
77 output: "var a = new (Date)()",
78 errors: [error]
79 },
80 {
81 code: "var a = (new Date)",
82 output: "var a = (new Date())",
83 errors: [error]
84 },
85 {
86
87 // This `()` is `CallExpression`'s. This is a call of the result of `new Date`.
88 code: "var a = (new Date)()",
89 output: "var a = (new Date())()",
90 errors: [error]
91 },
92 {
93 code: "var a = new foo.Bar;",
94 output: "var a = new foo.Bar();",
95 errors: [error]
96 },
97 {
98 code: "var a = (new Foo).bar;",
99 output: "var a = (new Foo()).bar;",
100 errors: [error]
101 },
102
103 // Explicit always
104 {
105 code: "var a = new Date;",
106 output: "var a = new Date();",
107 options: ["always"],
108 errors: [error]
109 },
110 {
111 code: "var a = new foo.Bar;",
112 output: "var a = new foo.Bar();",
113 options: ["always"],
114 errors: [error]
115 },
116 {
117 code: "var a = (new Foo).bar;",
118 output: "var a = (new Foo()).bar;",
119 options: ["always"],
120 errors: [error]
121 },
122 {
123 code: "var a = new new Foo()",
124 output: "var a = new new Foo()()",
125 options: ["always"],
126 errors: [error]
127 },
128
129 // Never
130 {
131 code: "var a = new Date();",
132 output: "var a = (new Date);",
133 options: ["never"],
134 errors: [neverError]
135 },
136 {
137 code: "var a = new Date()",
138 output: "var a = (new Date)",
139 options: ["never"],
140 errors: [neverError]
141 },
142 {
143 code: "var a = new (Date)();",
144 output: "var a = (new (Date));",
145 options: ["never"],
146 errors: [neverError]
147 },
148 {
149 code: "var a = new (Date)()",
150 output: "var a = (new (Date))",
151 options: ["never"],
152 errors: [neverError]
153 },
154 {
155 code: "var a = (new Date())",
156 output: "var a = ((new Date))",
157 options: ["never"],
158 errors: [neverError]
159 },
160 {
161 code: "var a = (new Date())()",
162 output: "var a = ((new Date))()",
163 options: ["never"],
164 errors: [neverError]
165 },
166 {
167 code: "var a = new foo.Bar();",
168 output: "var a = (new foo.Bar);",
169 options: ["never"],
170 errors: [neverError]
171 },
172 {
173 code: "var a = (new Foo()).bar;",
174 output: "var a = ((new Foo)).bar;",
175 options: ["never"],
176 errors: [neverError]
177 },
178 {
179 code: "var a = new new Foo()",
180 output: "var a = new (new Foo)",
181 options: ["never"],
182 errors: [neverError]
183 }
184 ]
185 });