File: Extensions\ContextQuery\IsPossibleDeconstructionDesignationTests.cs
Web Access
Project: ..\..\..\src\EditorFeatures\CSharpTest\Microsoft.CodeAnalysis.CSharp.EditorFeatures.UnitTests.csproj (Microsoft.CodeAnalysis.CSharp.EditorFeatures.UnitTests)
// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.
// See the LICENSE file in the project root for more information.
 
#nullable disable
 
using System.Threading;
using Microsoft.CodeAnalysis.CSharp.Extensions.ContextQuery;
using Microsoft.CodeAnalysis.Test.Utilities;
using Roslyn.Test.Utilities;
using Xunit;
 
namespace Microsoft.CodeAnalysis.Editor.CSharp.UnitTests.IntelliSense.CompletionSetSources
{
    [Trait(Traits.Feature, Traits.Features.Completion)]
    public class IsPossibleDeconstructionDesignationTests : AbstractContextTests
    {
        protected override void CheckResult(bool expected, int position, SyntaxTree syntaxTree)
        {
            var actual = syntaxTree.IsPossibleDeconstructionDesignation(position, CancellationToken.None);
            Assert.Equal(expected, actual);
        }
 
        [Fact]
        public void Test1()
            => VerifyTrue(AddInsideMethod(@"(var $$, var y)"));
 
        [Fact]
        public void WellFormed1()
            => VerifyTrue(AddInsideMethod(@"(var $$, var y) = e;"));
 
        [Fact]
        public void Test2()
            => VerifyTrue(AddInsideMethod(@"(var x, var $$)"));
 
        [Fact]
        public void Test3()
            => VerifyTrue(AddInsideMethod(@"var ($$, y)"));
 
        [Fact]
        public void Test4()
            => VerifyTrue(AddInsideMethod(@"var ($$, y)"));
 
        [Fact]
        public void Test5()
            => VerifyTrue(AddInsideMethod(@"var ($$)"));
 
        [Fact]
        public void Test6()
            => VerifyTrue(AddInsideMethod(@"(var $$)"));
 
        [Fact]
        public void Test7()
            => VerifyTrue(AddInsideMethod(@"(var a, var $$)"));
 
        [Fact]
        public void Test8()
            => VerifyFalse(AddInsideMethod(@"var str = (($$)items) as string;"));
 
        [Fact]
        public void Test9()
            => VerifyTrue(AddInsideMethod(@"Func<int, int, int> f = (x, i $$"));
 
        [Fact]
        public void TestNestedVar()
            => VerifyTrue(AddInsideMethod(@"var (($$), y)"));
 
        [Fact]
        public void TestNestedVar2()
            => VerifyTrue(AddInsideMethod(@"var ((x, $$), y)"));
 
        [Fact]
        public void TestNestedVar3()
            => VerifyTrue(AddInsideMethod(@"var ((x, $$), y) = e;"));
 
        [Fact]
        public void TestForeachVar1()
            => VerifyTrue(AddInsideMethod(@"foreach(var ($$"));
 
        [Fact]
        public void TestForeachVar2()
            => VerifyTrue(AddInsideMethod(@"foreach(var ($$)"));
 
        [Fact]
        public void TestForeachVar3()
            => VerifyTrue(AddInsideMethod(@"foreach(var ($$))"));
 
        [Fact]
        public void TestForeachVar4()
            => VerifyTrue(AddInsideMethod(@"foreach(var (x, $$"));
 
        [Fact]
        public void TestForeachVar5()
            => VerifyTrue(AddInsideMethod(@"foreach(var ($$) in "));
 
        [Fact]
        public void TestForeachVar6()
            => VerifyTrue(AddInsideMethod(@"foreach(var (($$), y)"));
 
        [Fact]
        public void TestForeachVar7()
            => VerifyTrue(AddInsideMethod(@"foreach(var (($$), y) in "));
 
        [Fact]
        public void TestForeachVar8()
            => VerifyTrue(AddInsideMethod(@"foreach(var ((x, $$), y)"));
 
        [Fact]
        public void TestForeachVar9()
            => VerifyTrue(AddInsideMethod(@"foreach(var ((x, $$), y) in "));
 
        [Fact]
        public void False1()
            => VerifyFalse(AddInsideMethod(@"var $$"));
 
        [Fact, WorkItem("https://github.com/dotnet/roslyn/issues/25084#issuecomment-369075537")]
        public void FalseAfterPattern1()
            => VerifyFalse(AddInsideMethod(@"if (1 is int i $$"));
 
        [Fact, WorkItem("https://github.com/dotnet/roslyn/issues/25084#issuecomment-369075537")]
        public void FalseAfterPattern2()
            => VerifyFalse(AddInsideMethod(@"if (1 is int i $$);"));
 
        [Fact, WorkItem("https://github.com/dotnet/roslyn/issues/25084#issuecomment-369075537")]
        public void FalseAfterPattern3()
            => VerifyFalse(AddInsideMethod(@"switch (1) { case int i $$ }"));
    }
}