SByteKeywordRecommenderTests.cs 15.8 KB
Newer Older
1 2 3 4 5 6 7 8 9 10 11
// Copyright (c) Microsoft.  All Rights Reserved.  Licensed under the Apache License, Version 2.0.  See License.txt in the project root for license information.

using Microsoft.CodeAnalysis;
using Microsoft.CodeAnalysis.Text;
using Roslyn.Test.Utilities;
using Xunit;

namespace Microsoft.CodeAnalysis.Editor.CSharp.UnitTests.Recommendations
{
    public class SByteKeywordRecommenderTests : KeywordRecommenderTests
    {
12
        [WpfFact, Trait(Traits.Feature, Traits.Features.KeywordRecommending)]
13 14 15 16 17 18
        public void AtRoot_Interactive()
        {
            VerifyKeyword(SourceCodeKind.Script,
@"$$");
        }

19
        [WpfFact, Trait(Traits.Feature, Traits.Features.KeywordRecommending)]
20 21 22 23 24 25 26
        public void AfterClass_Interactive()
        {
            VerifyKeyword(SourceCodeKind.Script,
@"class C { }
$$");
        }

27
        [WpfFact, Trait(Traits.Feature, Traits.Features.KeywordRecommending)]
28 29 30 31 32 33 34
        public void AfterGlobalStatement_Interactive()
        {
            VerifyKeyword(SourceCodeKind.Script,
@"System.Console.WriteLine();
$$");
        }

35
        [WpfFact, Trait(Traits.Feature, Traits.Features.KeywordRecommending)]
36 37 38 39 40 41 42
        public void AfterGlobalVariableDeclaration_Interactive()
        {
            VerifyKeyword(SourceCodeKind.Script,
@"int i = 0;
$$");
        }

43
        [WpfFact, Trait(Traits.Feature, Traits.Features.KeywordRecommending)]
44 45 46 47 48 49
        public void NotInUsingAlias()
        {
            VerifyAbsence(
@"using Foo = $$");
        }

50
        [WpfFact, Trait(Traits.Feature, Traits.Features.KeywordRecommending)]
51 52 53 54 55 56 57
        public void AfterStackAlloc()
        {
            VerifyKeyword(
@"class C {
     int* foo = stackalloc $$");
        }

58
        [WpfFact, Trait(Traits.Feature, Traits.Features.KeywordRecommending)]
59 60 61 62 63 64
        public void InFixedStatement()
        {
            VerifyKeyword(
@"fixed ($$");
        }

65
        [WpfFact, Trait(Traits.Feature, Traits.Features.KeywordRecommending)]
66 67 68 69 70 71
        public void InDelegateReturnType()
        {
            VerifyKeyword(
@"public delegate $$");
        }

72
        [WpfFact, Trait(Traits.Feature, Traits.Features.KeywordRecommending)]
73 74 75 76 77 78
        public void InCastType()
        {
            VerifyKeyword(AddInsideMethod(
@"var str = (($$"));
        }

79
        [WpfFact, Trait(Traits.Feature, Traits.Features.KeywordRecommending)]
80 81 82 83 84 85
        public void InCastType2()
        {
            VerifyKeyword(AddInsideMethod(
@"var str = (($$)items) as string;"));
        }

86
        [WpfFact, Trait(Traits.Feature, Traits.Features.KeywordRecommending)]
87 88 89 90 91 92 93
        public void AfterOuterConst()
        {
            VerifyKeyword(
@"class C {
    const $$");
        }

94
        [WpfFact, Trait(Traits.Feature, Traits.Features.KeywordRecommending)]
95 96 97 98 99 100
        public void AfterInnerConst()
        {
            VerifyKeyword(AddInsideMethod(
@"const $$"));
        }

101
        [WpfFact, Trait(Traits.Feature, Traits.Features.KeywordRecommending)]
102 103 104 105 106 107
        public void InEmptyStatement()
        {
            VerifyKeyword(AddInsideMethod(
@"$$"));
        }

108
        [WpfFact, Trait(Traits.Feature, Traits.Features.KeywordRecommending)]
109 110 111 112 113 114
        public void EnumBaseTypes()
        {
            VerifyKeyword(
@"enum E : $$");
        }

115
        [WpfFact, Trait(Traits.Feature, Traits.Features.KeywordRecommending)]
116 117 118 119 120 121
        public void InGenericType1()
        {
            VerifyKeyword(AddInsideMethod(
@"IList<$$"));
        }

122
        [WpfFact, Trait(Traits.Feature, Traits.Features.KeywordRecommending)]
123 124 125 126 127 128
        public void InGenericType2()
        {
            VerifyKeyword(AddInsideMethod(
@"IList<int,$$"));
        }

129
        [WpfFact, Trait(Traits.Feature, Traits.Features.KeywordRecommending)]
130 131 132 133 134 135
        public void InGenericType3()
        {
            VerifyKeyword(AddInsideMethod(
@"IList<int[],$$"));
        }

136
        [WpfFact, Trait(Traits.Feature, Traits.Features.KeywordRecommending)]
137 138 139 140 141 142
        public void InGenericType4()
        {
            VerifyKeyword(AddInsideMethod(
@"IList<IFoo<int?,byte*>,$$"));
        }

143
        [WpfFact, Trait(Traits.Feature, Traits.Features.KeywordRecommending)]
144 145 146 147 148 149
        public void NotInBaseList()
        {
            VerifyAbsence(
@"class C : $$");
        }

150
        [WpfFact, Trait(Traits.Feature, Traits.Features.KeywordRecommending)]
151 152 153 154 155 156
        public void InGenericType_InBaseList()
        {
            VerifyKeyword(
@"class C : IList<$$");
        }

157
        [WpfFact, Trait(Traits.Feature, Traits.Features.KeywordRecommending)]
158 159 160 161 162 163
        public void AfterIs()
        {
            VerifyKeyword(AddInsideMethod(
@"var v = foo is $$"));
        }

164
        [WpfFact, Trait(Traits.Feature, Traits.Features.KeywordRecommending)]
165 166 167 168 169 170
        public void AfterAs()
        {
            VerifyKeyword(AddInsideMethod(
@"var v = foo as $$"));
        }

171
        [WpfFact, Trait(Traits.Feature, Traits.Features.KeywordRecommending)]
172 173 174 175 176 177 178 179
        public void AfterMethod()
        {
            VerifyKeyword(
@"class C {
  void Foo() {}
  $$");
        }

180
        [WpfFact, Trait(Traits.Feature, Traits.Features.KeywordRecommending)]
181 182 183 184 185 186 187 188
        public void AfterField()
        {
            VerifyKeyword(
@"class C {
  int i;
  $$");
        }

189
        [WpfFact, Trait(Traits.Feature, Traits.Features.KeywordRecommending)]
190 191 192 193 194 195 196 197
        public void AfterProperty()
        {
            VerifyKeyword(
@"class C {
  int i { get; }
  $$");
        }

198
        [WpfFact, Trait(Traits.Feature, Traits.Features.KeywordRecommending)]
199 200 201 202 203 204 205 206
        public void AfterNestedAttribute()
        {
            VerifyKeyword(
@"class C {
  [foo]
  $$");
        }

207
        [WpfFact, Trait(Traits.Feature, Traits.Features.KeywordRecommending)]
208 209 210 211 212 213 214
        public void InsideStruct()
        {
            VerifyKeyword(
@"struct S {
   $$");
        }

215
        [WpfFact, Trait(Traits.Feature, Traits.Features.KeywordRecommending)]
216 217 218 219 220 221 222
        public void InsideInterface()
        {
            VerifyKeyword(
@"interface I {
   $$");
        }

223
        [WpfFact, Trait(Traits.Feature, Traits.Features.KeywordRecommending)]
224 225 226 227 228 229 230
        public void InsideClass()
        {
            VerifyKeyword(
@"class C {
   $$");
        }

231
        [WpfFact, Trait(Traits.Feature, Traits.Features.KeywordRecommending)]
232 233 234 235 236
        public void NotAfterPartial()
        {
            VerifyAbsence(@"partial $$");
        }

237
        [WpfFact, Trait(Traits.Feature, Traits.Features.KeywordRecommending)]
238 239 240 241 242 243 244
        public void NotAfterNestedPartial()
        {
            VerifyAbsence(
@"class C {
    partial $$");
        }

245
        [WpfFact, Trait(Traits.Feature, Traits.Features.KeywordRecommending)]
246 247 248 249 250 251 252
        public void AfterNestedAbstract()
        {
            VerifyKeyword(
@"class C {
    abstract $$");
        }

253
        [WpfFact, Trait(Traits.Feature, Traits.Features.KeywordRecommending)]
254 255 256 257 258 259 260
        public void AfterNestedInternal()
        {
            VerifyKeyword(
@"class C {
    internal $$");
        }

261
        [WpfFact, Trait(Traits.Feature, Traits.Features.KeywordRecommending)]
262 263 264 265 266 267 268
        public void AfterNestedStaticPublic()
        {
            VerifyKeyword(
@"class C {
    static public $$");
        }

269
        [WpfFact, Trait(Traits.Feature, Traits.Features.KeywordRecommending)]
270 271 272 273 274 275 276
        public void AfterNestedPublicStatic()
        {
            VerifyKeyword(
@"class C {
    public static $$");
        }

277
        [WpfFact, Trait(Traits.Feature, Traits.Features.KeywordRecommending)]
278 279 280 281 282 283 284
        public void AfterVirtualPublic()
        {
            VerifyKeyword(
@"class C {
    virtual public $$");
        }

285
        [WpfFact, Trait(Traits.Feature, Traits.Features.KeywordRecommending)]
286 287 288 289 290 291 292
        public void AfterNestedPublic()
        {
            VerifyKeyword(
@"class C {
    public $$");
        }

293
        [WpfFact, Trait(Traits.Feature, Traits.Features.KeywordRecommending)]
294 295 296 297 298 299 300
        public void AfterNestedPrivate()
        {
            VerifyKeyword(
@"class C {
   private $$");
        }

301
        [WpfFact, Trait(Traits.Feature, Traits.Features.KeywordRecommending)]
302 303 304 305 306 307 308
        public void AfterNestedProtected()
        {
            VerifyKeyword(
@"class C {
    protected $$");
        }

309
        [WpfFact, Trait(Traits.Feature, Traits.Features.KeywordRecommending)]
310 311 312 313 314 315 316
        public void AfterNestedSealed()
        {
            VerifyKeyword(
@"class C {
    sealed $$");
        }

317
        [WpfFact, Trait(Traits.Feature, Traits.Features.KeywordRecommending)]
318 319 320 321 322 323 324
        public void AfterNestedStatic()
        {
            VerifyKeyword(
@"class C {
    static $$");
        }

325
        [WpfFact, Trait(Traits.Feature, Traits.Features.KeywordRecommending)]
326 327 328 329 330 331
        public void InLocalVariableDeclaration()
        {
            VerifyKeyword(AddInsideMethod(
@"$$"));
        }

332
        [WpfFact, Trait(Traits.Feature, Traits.Features.KeywordRecommending)]
333 334 335 336 337 338
        public void InForVariableDeclaration()
        {
            VerifyKeyword(AddInsideMethod(
@"for ($$"));
        }

339
        [WpfFact, Trait(Traits.Feature, Traits.Features.KeywordRecommending)]
340 341 342 343 344 345
        public void InForeachVariableDeclaration()
        {
            VerifyKeyword(AddInsideMethod(
@"foreach ($$"));
        }

346
        [WpfFact, Trait(Traits.Feature, Traits.Features.KeywordRecommending)]
347 348 349 350 351 352
        public void InUsingVariableDeclaration()
        {
            VerifyKeyword(AddInsideMethod(
@"using ($$"));
        }

353
        [WpfFact, Trait(Traits.Feature, Traits.Features.KeywordRecommending)]
354 355 356 357 358 359
        public void InFromVariableDeclaration()
        {
            VerifyKeyword(AddInsideMethod(
@"var q = from $$"));
        }

360
        [WpfFact, Trait(Traits.Feature, Traits.Features.KeywordRecommending)]
361 362 363 364 365 366 367
        public void InJoinVariableDeclaration()
        {
            VerifyKeyword(AddInsideMethod(
@"var q = from a in b 
          join $$"));
        }

368
        [WpfFact, Trait(Traits.Feature, Traits.Features.KeywordRecommending)]
369 370 371 372 373 374 375
        public void AfterMethodOpenParen()
        {
            VerifyKeyword(
@"class C {
    void Foo($$");
        }

376
        [WpfFact, Trait(Traits.Feature, Traits.Features.KeywordRecommending)]
377 378 379 380 381 382 383
        public void AfterMethodComma()
        {
            VerifyKeyword(
@"class C {
    void Foo(int i, $$");
        }

384
        [WpfFact, Trait(Traits.Feature, Traits.Features.KeywordRecommending)]
385 386 387 388 389 390 391
        public void AfterMethodAttribute()
        {
            VerifyKeyword(
@"class C {
    void Foo(int i, [Foo]$$");
        }

392
        [WpfFact, Trait(Traits.Feature, Traits.Features.KeywordRecommending)]
393 394 395 396 397 398 399
        public void AfterConstructorOpenParen()
        {
            VerifyKeyword(
@"class C {
    public C($$");
        }

400
        [WpfFact, Trait(Traits.Feature, Traits.Features.KeywordRecommending)]
401 402 403 404 405 406 407
        public void AfterConstructorComma()
        {
            VerifyKeyword(
@"class C {
    public C(int i, $$");
        }

408
        [WpfFact, Trait(Traits.Feature, Traits.Features.KeywordRecommending)]
409 410 411 412 413 414 415
        public void AfterConstructorAttribute()
        {
            VerifyKeyword(
@"class C {
    public C(int i, [Foo]$$");
        }

416
        [WpfFact, Trait(Traits.Feature, Traits.Features.KeywordRecommending)]
417 418 419 420 421 422
        public void AfterDelegateOpenParen()
        {
            VerifyKeyword(
@"delegate void D($$");
        }

423
        [WpfFact, Trait(Traits.Feature, Traits.Features.KeywordRecommending)]
424 425 426 427 428 429
        public void AfterDelegateComma()
        {
            VerifyKeyword(
@"delegate void D(int i, $$");
        }

430
        [WpfFact, Trait(Traits.Feature, Traits.Features.KeywordRecommending)]
431 432 433 434 435 436
        public void AfterDelegateAttribute()
        {
            VerifyKeyword(
@"delegate void D(int i, [Foo]$$");
        }

437
        [WpfFact, Trait(Traits.Feature, Traits.Features.KeywordRecommending)]
438 439 440 441 442 443 444
        public void AfterThis()
        {
            VerifyKeyword(
@"static class C {
     public static void Foo(this $$");
        }

445
        [WpfFact, Trait(Traits.Feature, Traits.Features.KeywordRecommending)]
446 447 448 449 450 451 452
        public void AfterRef()
        {
            VerifyKeyword(
@"class C {
     void Foo(ref $$");
        }

453
        [WpfFact, Trait(Traits.Feature, Traits.Features.KeywordRecommending)]
454 455 456 457 458 459 460
        public void AfterOut()
        {
            VerifyKeyword(
@"class C {
     void Foo(out $$");
        }

461
        [WpfFact, Trait(Traits.Feature, Traits.Features.KeywordRecommending)]
462 463 464 465 466 467 468 469
        public void AfterLambdaRef()
        {
            VerifyKeyword(
@"class C {
     void Foo() {
          System.Func<int, int> f = (ref $$");
        }

470
        [WpfFact, Trait(Traits.Feature, Traits.Features.KeywordRecommending)]
471 472 473 474 475 476 477 478
        public void AfterLambdaOut()
        {
            VerifyKeyword(
@"class C {
     void Foo() {
          System.Func<int, int> f = (out $$");
        }

479
        [WpfFact, Trait(Traits.Feature, Traits.Features.KeywordRecommending)]
480 481 482 483 484 485 486
        public void AfterParams()
        {
            VerifyKeyword(
@"class C {
     void Foo(params $$");
        }

487
        [WpfFact, Trait(Traits.Feature, Traits.Features.KeywordRecommending)]
488 489 490 491 492 493 494
        public void InImplicitOperator()
        {
            VerifyKeyword(
@"class C {
     public static implicit operator $$");
        }

495
        [WpfFact, Trait(Traits.Feature, Traits.Features.KeywordRecommending)]
496 497 498 499 500 501 502
        public void InExplicitOperator()
        {
            VerifyKeyword(
@"class C {
     public static explicit operator $$");
        }

503
        [WpfFact, Trait(Traits.Feature, Traits.Features.KeywordRecommending)]
504 505 506 507 508 509 510
        public void AfterIndexerBracket()
        {
            VerifyKeyword(
@"class C {
    int this[$$");
        }

511
        [WpfFact, Trait(Traits.Feature, Traits.Features.KeywordRecommending)]
512 513 514 515 516 517 518
        public void AfterIndexerBracketComma()
        {
            VerifyKeyword(
@"class C {
    int this[int i, $$");
        }

519
        [WpfFact, Trait(Traits.Feature, Traits.Features.KeywordRecommending)]
520 521 522 523 524 525 526
        public void AfterNewInExpression()
        {
            VerifyKeyword(AddInsideMethod(
@"new $$"));
        }

        [WorkItem(538804)]
527
        [WpfFact, Trait(Traits.Feature, Traits.Features.KeywordRecommending)]
528 529 530 531 532 533 534
        public void InTypeOf()
        {
            VerifyKeyword(AddInsideMethod(
@"typeof($$"));
        }

        [WorkItem(538804)]
535
        [WpfFact, Trait(Traits.Feature, Traits.Features.KeywordRecommending)]
536 537 538 539 540 541 542
        public void InDefault()
        {
            VerifyKeyword(AddInsideMethod(
@"default($$"));
        }

        [WorkItem(538804)]
543
        [WpfFact, Trait(Traits.Feature, Traits.Features.KeywordRecommending)]
544 545 546 547 548 549 550
        public void InSizeOf()
        {
            VerifyKeyword(AddInsideMethod(
@"sizeof($$"));
        }

        [WorkItem(544219)]
551
        [WpfFact, Trait(Traits.Feature, Traits.Features.KeywordRecommending)]
552 553 554 555 556 557 558 559 560 561 562 563
        public void NotInObjectInitializerMemberContext()
        {
            VerifyAbsence(@"
class C
{
    public int x, y;
    void M()
    {
        var c = new C { x = 2, y = 3, $$");
        }

        [WorkItem(546938)]
564
        [WpfFact, Trait(Traits.Feature, Traits.Features.KeywordRecommending)]
565 566 567 568 569 570 571 572 573 574 575 576 577 578
        public void InCrefContext()
        {
            VerifyKeyword(@"
class Program
{
    /// <see cref=""$$"">
    static void Main(string[] args)
    {
        
    }
}");
        }

        [WorkItem(546955)]
579
        [WpfFact, Trait(Traits.Feature, Traits.Features.KeywordRecommending)]
580 581 582 583 584 585 586 587 588
        public void InCrefContextNotAfterDot()
        {
            VerifyAbsence(@"
/// <see cref=""System.$$"" />
class C { }
");
        }

        [WorkItem(18374)]
589
        [WpfFact, Trait(Traits.Feature, Traits.Features.KeywordRecommending)]
590 591 592 593 594 595
        public void AfterAsync()
        {
            VerifyKeyword(@"class c { async $$ }");
        }

        [WorkItem(18374)]
596
        [WpfFact, Trait(Traits.Feature, Traits.Features.KeywordRecommending)]
597 598 599 600
        public void NotAfterAsyncAsType()
        {
            VerifyAbsence(@"class c { async async $$ }");
        }
601 602

        [WorkItem(1468, "https://github.com/dotnet/roslyn/issues/1468")]
603
        [WpfFact, Trait(Traits.Feature, Traits.Features.KeywordRecommending)]
604 605 606 607 608 609 610 611
        public void NotInCrefTypeParameter()
        {
            VerifyAbsence(@"
using System;
/// <see cref=""List{$$}"" />
class C { }
");
        }
612 613
    }
}