@@ -16,6 +16,10 @@ public PreferSpecializedOverGenericFixerTests() : base(
1616 public void Should_Equal ( ) =>
1717 Assert . Equal ( "OSA004" , provider . FixableDiagnosticIds . Single ( ) ) ;
1818
19+ #region SpaceTuple
20+
21+ #region ObjInit
22+
1923 [ Theory ]
2024 [ InlineData ( "[|SpaceTuple tuple = new SpaceTuple(true);|]" , "Bool" ) ]
2125 [ InlineData ( "[|SpaceTuple tuple = new SpaceTuple((byte)1);|]" , "Byte" ) ]
@@ -36,12 +40,40 @@ public void Should_Equal() =>
3640 [ InlineData ( "[|SpaceTuple tuple = new SpaceTuple(DateTimeOffset.MinValue);|]" , "DateTimeOffset" ) ]
3741 [ InlineData ( "[|SpaceTuple tuple = new SpaceTuple(TimeSpan.MinValue);|]" , "TimeSpan" ) ]
3842 [ InlineData ( "[|SpaceTuple tuple = new SpaceTuple(Guid.Empty);|]" , "Guid" ) ]
39- public void Should_Fix_ObjInited_SpaceTuple ( string code , string specializedTypePrefix )
43+ public void Should_Fix_GlobalStatement_ObjInit_SpaceTuple ( string code , string specializedTypePrefix )
4044 {
4145 string fix = RemoveDiagnosticSpanFromText ( code . Replace ( "Space" , specializedTypePrefix ) ) ;
4246 TestCodeFix ( code , fix , Namespace . OrleanSpaces_Tuples , Namespace . OrleanSpaces_Tuples_Specialized ) ;
4347 }
4448
49+ [ Fact ]
50+ public void Should_Fix_LocalStatement_ObjInit_SpaceTuple ( )
51+ {
52+ string code =
53+ @"class C
54+ {
55+ public C()
56+ {
57+ [|SpaceTuple tuple = new SpaceTuple(1);|]
58+ }
59+ }" ;
60+
61+ string fix =
62+ @"class C
63+ {
64+ public C()
65+ {
66+ IntTuple tuple = new IntTuple(1);
67+ }
68+ }" ;
69+
70+ TestCodeFix ( code , fix , Namespace . OrleanSpaces_Tuples , Namespace . OrleanSpaces_Tuples_Specialized ) ;
71+ }
72+
73+ #endregion
74+
75+ #region SimplifiedObjInit
76+
4577 [ Theory ]
4678 [ InlineData ( "[|SpaceTuple tuple = new(true);|]" , "Bool" ) ]
4779 [ InlineData ( "[|SpaceTuple tuple = new((byte)1);|]" , "Byte" ) ]
@@ -62,12 +94,41 @@ public void Should_Fix_ObjInited_SpaceTuple(string code, string specializedTypeP
6294 [ InlineData ( "[|SpaceTuple tuple = new(DateTimeOffset.MinValue);|]" , "DateTimeOffset" ) ]
6395 [ InlineData ( "[|SpaceTuple tuple = new(TimeSpan.MinValue);|]" , "TimeSpan" ) ]
6496 [ InlineData ( "[|SpaceTuple tuple = new(Guid.Empty);|]" , "Guid" ) ]
65- public void Should_Fix_SimplifiedObjInited_SpaceTuple ( string code , string specializedTypePrefix )
97+ public void Should_Fix_GlobalStatement_SimplifiedObjInit_SpaceTuple ( string code , string specializedTypePrefix )
6698 {
6799 string fix = RemoveDiagnosticSpanFromText ( code . Replace ( "Space" , specializedTypePrefix ) ) ;
68100 TestCodeFix ( code , fix , Namespace . OrleanSpaces_Tuples , Namespace . OrleanSpaces_Tuples_Specialized ) ;
69101 }
70102
103+
104+ [ Fact ]
105+ public void Should_Fix_LocalStatement_SimplifiedObjInit_SpaceTuple ( )
106+ {
107+ string code =
108+ @"class C
109+ {
110+ public C()
111+ {
112+ [|SpaceTuple tuple = new(1);|]
113+ }
114+ }" ;
115+
116+ string fix =
117+ @"class C
118+ {
119+ public C()
120+ {
121+ IntTuple tuple = new(1);
122+ }
123+ }" ;
124+
125+ TestCodeFix ( code , fix , Namespace . OrleanSpaces_Tuples , Namespace . OrleanSpaces_Tuples_Specialized ) ;
126+ }
127+
128+ #endregion
129+
130+ #region VarObjInit
131+
71132 [ Theory ]
72133 [ InlineData ( "[|var tuple = new SpaceTuple(true);|]" , "Bool" ) ]
73134 [ InlineData ( "[|var tuple = new SpaceTuple((byte)1);|]" , "Byte" ) ]
@@ -88,25 +149,204 @@ public void Should_Fix_SimplifiedObjInited_SpaceTuple(string code, string specia
88149 [ InlineData ( "[|var tuple = new SpaceTuple(DateTimeOffset.MinValue);|]" , "DateTimeOffset" ) ]
89150 [ InlineData ( "[|var tuple = new SpaceTuple(TimeSpan.MinValue);|]" , "TimeSpan" ) ]
90151 [ InlineData ( "[|var tuple = new SpaceTuple(Guid.Empty);|]" , "Guid" ) ]
91- public void Should_Fix_VarInited_SpaceTuple ( string code , string specializedTypePrefix )
152+ public void Should_Fix_GlobalStatement_VarObjInit_SpaceTuple ( string code , string specializedTypePrefix )
153+ {
154+ string fix = RemoveDiagnosticSpanFromText ( code . Replace ( "Space" , specializedTypePrefix ) ) ;
155+ TestCodeFix ( code , fix , Namespace . OrleanSpaces_Tuples , Namespace . OrleanSpaces_Tuples_Specialized ) ;
156+ }
157+
158+ [ Fact ]
159+ public void Should_Fix_LocalStatement_VarObjInit_SpaceTuple ( )
160+ {
161+ string code =
162+ @"class C
163+ {
164+ public C()
165+ {
166+ [|var tuple = new SpaceTuple(1);|]
167+ }
168+ }" ;
169+
170+ string fix =
171+ @"class C
172+ {
173+ public C()
174+ {
175+ var tuple = new IntTuple(1);
176+ }
177+ }" ;
178+
179+ TestCodeFix ( code , fix , Namespace . OrleanSpaces_Tuples , Namespace . OrleanSpaces_Tuples_Specialized ) ;
180+ }
181+
182+ #endregion
183+
184+ #endregion
185+
186+ #region SpaceTemplate
187+
188+ #region ObjInit
189+
190+ [ Theory ]
191+ [ InlineData ( "[|SpaceTemplate template = new SpaceTemplate(true);|]" , "Bool" ) ]
192+ [ InlineData ( "[|SpaceTemplate template = new SpaceTemplate((byte)1);|]" , "Byte" ) ]
193+ [ InlineData ( "[|SpaceTemplate template = new SpaceTemplate((sbyte)1);|]" , "SByte" ) ]
194+ [ InlineData ( "[|SpaceTemplate template = new SpaceTemplate('a');|]" , "Char" ) ]
195+ [ InlineData ( "[|SpaceTemplate template = new SpaceTemplate((double)1);|]" , "Double" ) ]
196+ [ InlineData ( "[|SpaceTemplate template = new SpaceTemplate((float)1);|]" , "Float" ) ]
197+ [ InlineData ( "[|SpaceTemplate template = new SpaceTemplate((short)1);|]" , "Short" ) ]
198+ [ InlineData ( "[|SpaceTemplate template = new SpaceTemplate((ushort)1);|]" , "UShort" ) ]
199+ [ InlineData ( "[|SpaceTemplate template = new SpaceTemplate(1);|]" , "Int" ) ]
200+ [ InlineData ( "[|SpaceTemplate template = new SpaceTemplate((uint)1);|]" , "UInt" ) ]
201+ [ InlineData ( "[|SpaceTemplate template = new SpaceTemplate((long)1);|]" , "Long" ) ]
202+ [ InlineData ( "[|SpaceTemplate template = new SpaceTemplate((ulong)1);|]" , "ULong" ) ]
203+ [ InlineData ( "[|SpaceTemplate template = new SpaceTemplate((Int128)1);|]" , "Huge" ) ]
204+ [ InlineData ( "[|SpaceTemplate template = new SpaceTemplate((UInt128)1);|]" , "UHuge" ) ]
205+ [ InlineData ( "[|SpaceTemplate template = new SpaceTemplate((decimal)1);|]" , "Decimal" ) ]
206+ [ InlineData ( "[|SpaceTemplate template = new SpaceTemplate(DateTime.MinValue);|]" , "DateTime" ) ]
207+ [ InlineData ( "[|SpaceTemplate template = new SpaceTemplate(DateTimeOffset.MinValue);|]" , "DateTimeOffset" ) ]
208+ [ InlineData ( "[|SpaceTemplate template = new SpaceTemplate(TimeSpan.MinValue);|]" , "TimeSpan" ) ]
209+ [ InlineData ( "[|SpaceTemplate template = new SpaceTemplate(Guid.Empty);|]" , "Guid" ) ]
210+ public void Should_Fix_GlobalStatement_ObjInit_SpaceTemplate ( string code , string specializedTypePrefix )
92211 {
93212 string fix = RemoveDiagnosticSpanFromText ( code . Replace ( "Space" , specializedTypePrefix ) ) ;
94213 TestCodeFix ( code , fix , Namespace . OrleanSpaces_Tuples , Namespace . OrleanSpaces_Tuples_Specialized ) ;
95214 }
96215
97- // [Theory]
98- // [InlineData(
99- //@"class C
100- //{
101- // public C()
102- // {
103- // [|SpaceTuple tuple = new(1);|]
104- // }
105- //}"
106- //, "Int")]
107- public void Should_Fix_SpaceTuple_1 ( string code , string specializedTypePrefix )
216+ [ Fact ]
217+ public void Should_Fix_LocalStatement_ObjInit_SpaceTemplate ( )
218+ {
219+ string code =
220+ @"class C
221+ {
222+ public C()
223+ {
224+ [|SpaceTemplate template = new SpaceTemplate(1);|]
225+ }
226+ }" ;
227+
228+ string fix =
229+ @"class C
230+ {
231+ public C()
232+ {
233+ IntTemplate template = new IntTemplate(1);
234+ }
235+ }" ;
236+
237+ TestCodeFix ( code , fix , Namespace . OrleanSpaces_Tuples , Namespace . OrleanSpaces_Tuples_Specialized ) ;
238+ }
239+
240+ #endregion
241+
242+ #region SimplifiedObjInit
243+
244+ [ Theory ]
245+ [ InlineData ( "[|SpaceTemplate template = new(true);|]" , "Bool" ) ]
246+ [ InlineData ( "[|SpaceTemplate template = new((byte)1);|]" , "Byte" ) ]
247+ [ InlineData ( "[|SpaceTemplate template = new((sbyte)1);|]" , "SByte" ) ]
248+ [ InlineData ( "[|SpaceTemplate template = new('a');|]" , "Char" ) ]
249+ [ InlineData ( "[|SpaceTemplate template = new((double)1);|]" , "Double" ) ]
250+ [ InlineData ( "[|SpaceTemplate template = new((float)1);|]" , "Float" ) ]
251+ [ InlineData ( "[|SpaceTemplate template = new((short)1);|]" , "Short" ) ]
252+ [ InlineData ( "[|SpaceTemplate template = new((ushort)1);|]" , "UShort" ) ]
253+ [ InlineData ( "[|SpaceTemplate template = new(1);|]" , "Int" ) ]
254+ [ InlineData ( "[|SpaceTemplate template = new((uint)1);|]" , "UInt" ) ]
255+ [ InlineData ( "[|SpaceTemplate template = new((long)1);|]" , "Long" ) ]
256+ [ InlineData ( "[|SpaceTemplate template = new((ulong)1);|]" , "ULong" ) ]
257+ [ InlineData ( "[|SpaceTemplate template = new((Int128)1);|]" , "Huge" ) ]
258+ [ InlineData ( "[|SpaceTemplate template = new((UInt128)1);|]" , "UHuge" ) ]
259+ [ InlineData ( "[|SpaceTemplate template = new((decimal)1);|]" , "Decimal" ) ]
260+ [ InlineData ( "[|SpaceTemplate template = new(DateTime.MinValue);|]" , "DateTime" ) ]
261+ [ InlineData ( "[|SpaceTemplate template = new(DateTimeOffset.MinValue);|]" , "DateTimeOffset" ) ]
262+ [ InlineData ( "[|SpaceTemplate template = new(TimeSpan.MinValue);|]" , "TimeSpan" ) ]
263+ [ InlineData ( "[|SpaceTemplate template = new(Guid.Empty);|]" , "Guid" ) ]
264+ public void Should_Fix_GlobalStatement_SimplifiedObjInit_SpaceTemplate ( string code , string specializedTypePrefix )
108265 {
109- string fix = code . Replace ( "Space" , specializedTypePrefix ) ;
266+ string fix = RemoveDiagnosticSpanFromText ( code . Replace ( "Space" , specializedTypePrefix ) ) ;
110267 TestCodeFix ( code , fix , Namespace . OrleanSpaces_Tuples , Namespace . OrleanSpaces_Tuples_Specialized ) ;
111268 }
269+
270+
271+ [ Fact ]
272+ public void Should_Fix_LocalStatement_SimplifiedObjInit_SpaceTemplate ( )
273+ {
274+ string code =
275+ @"class C
276+ {
277+ public C()
278+ {
279+ [|SpaceTemplate template = new(1);|]
280+ }
281+ }" ;
282+
283+ string fix =
284+ @"class C
285+ {
286+ public C()
287+ {
288+ IntTemplate template = new(1);
289+ }
290+ }" ;
291+
292+ TestCodeFix ( code , fix , Namespace . OrleanSpaces_Tuples , Namespace . OrleanSpaces_Tuples_Specialized ) ;
293+ }
294+
295+ #endregion
296+
297+ #region VarObjInit
298+
299+ [ Theory ]
300+ [ InlineData ( "[|var template = new SpaceTemplate(true);|]" , "Bool" ) ]
301+ [ InlineData ( "[|var template = new SpaceTemplate((byte)1);|]" , "Byte" ) ]
302+ [ InlineData ( "[|var template = new SpaceTemplate((sbyte)1);|]" , "SByte" ) ]
303+ [ InlineData ( "[|var template = new SpaceTemplate('a');|]" , "Char" ) ]
304+ [ InlineData ( "[|var template = new SpaceTemplate((double)1);|]" , "Double" ) ]
305+ [ InlineData ( "[|var template = new SpaceTemplate((float)1);|]" , "Float" ) ]
306+ [ InlineData ( "[|var template = new SpaceTemplate((short)1);|]" , "Short" ) ]
307+ [ InlineData ( "[|var template = new SpaceTemplate((ushort)1);|]" , "UShort" ) ]
308+ [ InlineData ( "[|var template = new SpaceTemplate(1);|]" , "Int" ) ]
309+ [ InlineData ( "[|var template = new SpaceTemplate((uint)1);|]" , "UInt" ) ]
310+ [ InlineData ( "[|var template = new SpaceTemplate((long)1);|]" , "Long" ) ]
311+ [ InlineData ( "[|var template = new SpaceTemplate((ulong)1);|]" , "ULong" ) ]
312+ [ InlineData ( "[|var template = new SpaceTemplate((Int128)1);|]" , "Huge" ) ]
313+ [ InlineData ( "[|var template = new SpaceTemplate((UInt128)1);|]" , "UHuge" ) ]
314+ [ InlineData ( "[|var template = new SpaceTemplate((decimal)1);|]" , "Decimal" ) ]
315+ [ InlineData ( "[|var template = new SpaceTemplate(DateTime.MinValue);|]" , "DateTime" ) ]
316+ [ InlineData ( "[|var template = new SpaceTemplate(DateTimeOffset.MinValue);|]" , "DateTimeOffset" ) ]
317+ [ InlineData ( "[|var template = new SpaceTemplate(TimeSpan.MinValue);|]" , "TimeSpan" ) ]
318+ [ InlineData ( "[|var template = new SpaceTemplate(Guid.Empty);|]" , "Guid" ) ]
319+ public void Should_Fix_GlobalStatement_VarObjInit_SpaceTemplate ( string code , string specializedTypePrefix )
320+ {
321+ string fix = RemoveDiagnosticSpanFromText ( code . Replace ( "Space" , specializedTypePrefix ) ) ;
322+ TestCodeFix ( code , fix , Namespace . OrleanSpaces_Tuples , Namespace . OrleanSpaces_Tuples_Specialized ) ;
323+ }
324+
325+ [ Fact ]
326+ public void Should_Fix_LocalStatement_VarObjInit_SpaceTemplate ( )
327+ {
328+ string code =
329+ @"class C
330+ {
331+ public C()
332+ {
333+ [|var template = new SpaceTemplate(1);|]
334+ }
335+ }" ;
336+
337+ string fix =
338+ @"class C
339+ {
340+ public C()
341+ {
342+ var template = new IntTemplate(1);
343+ }
344+ }" ;
345+
346+ TestCodeFix ( code , fix , Namespace . OrleanSpaces_Tuples , Namespace . OrleanSpaces_Tuples_Specialized ) ;
347+ }
348+
349+ #endregion
350+
351+ #endregion
112352}
0 commit comments