' Copyright (c) Microsoft. All Rights Reserved. Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. Imports System.Threading.Tasks Imports Microsoft.CodeAnalysis Imports Roslyn.Test.Utilities Namespace Microsoft.VisualStudio.LanguageServices.UnitTests.CodeModel.CSharp Public Class CodeVariableTests Inherits AbstractCodeVariableTests #Region "GetStartPoint() tests" Public Sub TestGetStartPoint_Field() Dim code = class C { int $$foo; } TestGetStartPoint(code, Part(EnvDTE.vsCMPart.vsCMPartAttributes, ThrowsNotImplementedException), Part(EnvDTE.vsCMPart.vsCMPartAttributesWithDelimiter, ThrowsCOMException(E_FAIL)), Part(EnvDTE.vsCMPart.vsCMPartBody, ThrowsCOMException(E_FAIL)), Part(EnvDTE.vsCMPart.vsCMPartBodyWithDelimiter, ThrowsNotImplementedException), Part(EnvDTE.vsCMPart.vsCMPartHeader, ThrowsNotImplementedException), Part(EnvDTE.vsCMPart.vsCMPartHeaderWithAttributes, ThrowsNotImplementedException), Part(EnvDTE.vsCMPart.vsCMPartName, ThrowsNotImplementedException), Part(EnvDTE.vsCMPart.vsCMPartNavigate, TextPoint(line:=3, lineOffset:=9, absoluteOffset:=19, lineLength:=12)), Part(EnvDTE.vsCMPart.vsCMPartWhole, ThrowsNotImplementedException), Part(EnvDTE.vsCMPart.vsCMPartWholeWithAttributes, TextPoint(line:=3, lineOffset:=5, absoluteOffset:=15, lineLength:=12))) End Sub Public Sub TestGetStartPoint_EnumMember() Dim code = enum E { $$Foo } TestGetStartPoint(code, Part(EnvDTE.vsCMPart.vsCMPartAttributes, ThrowsNotImplementedException), Part(EnvDTE.vsCMPart.vsCMPartAttributesWithDelimiter, ThrowsCOMException(E_FAIL)), Part(EnvDTE.vsCMPart.vsCMPartBody, ThrowsCOMException(E_FAIL)), Part(EnvDTE.vsCMPart.vsCMPartBodyWithDelimiter, ThrowsNotImplementedException), Part(EnvDTE.vsCMPart.vsCMPartHeader, ThrowsNotImplementedException), Part(EnvDTE.vsCMPart.vsCMPartHeaderWithAttributes, ThrowsNotImplementedException), Part(EnvDTE.vsCMPart.vsCMPartName, ThrowsNotImplementedException), Part(EnvDTE.vsCMPart.vsCMPartNavigate, TextPoint(line:=3, lineOffset:=5, absoluteOffset:=14, lineLength:=7)), Part(EnvDTE.vsCMPart.vsCMPartWhole, ThrowsNotImplementedException), Part(EnvDTE.vsCMPart.vsCMPartWholeWithAttributes, TextPoint(line:=3, lineOffset:=5, absoluteOffset:=14, lineLength:=7))) End Sub #End Region #Region "GetEndPoint() tests" Public Sub TestGetEndPoint_Field() Dim code = class C { int $$foo; } TestGetEndPoint(code, Part(EnvDTE.vsCMPart.vsCMPartAttributes, ThrowsNotImplementedException), Part(EnvDTE.vsCMPart.vsCMPartAttributesWithDelimiter, ThrowsCOMException(E_FAIL)), Part(EnvDTE.vsCMPart.vsCMPartBody, ThrowsCOMException(E_FAIL)), Part(EnvDTE.vsCMPart.vsCMPartBodyWithDelimiter, ThrowsNotImplementedException), Part(EnvDTE.vsCMPart.vsCMPartHeader, ThrowsNotImplementedException), Part(EnvDTE.vsCMPart.vsCMPartHeaderWithAttributes, ThrowsNotImplementedException), Part(EnvDTE.vsCMPart.vsCMPartName, ThrowsNotImplementedException), Part(EnvDTE.vsCMPart.vsCMPartNavigate, TextPoint(line:=3, lineOffset:=12, absoluteOffset:=22, lineLength:=12)), Part(EnvDTE.vsCMPart.vsCMPartWhole, ThrowsNotImplementedException), Part(EnvDTE.vsCMPart.vsCMPartWholeWithAttributes, TextPoint(line:=3, lineOffset:=13, absoluteOffset:=23, lineLength:=12))) End Sub Public Sub TestGetEndPoint_EnumMember() Dim code = enum E { $$Foo } TestGetEndPoint(code, Part(EnvDTE.vsCMPart.vsCMPartAttributes, ThrowsNotImplementedException), Part(EnvDTE.vsCMPart.vsCMPartAttributesWithDelimiter, ThrowsCOMException(E_FAIL)), Part(EnvDTE.vsCMPart.vsCMPartBody, ThrowsCOMException(E_FAIL)), Part(EnvDTE.vsCMPart.vsCMPartBodyWithDelimiter, ThrowsNotImplementedException), Part(EnvDTE.vsCMPart.vsCMPartHeader, ThrowsNotImplementedException), Part(EnvDTE.vsCMPart.vsCMPartHeaderWithAttributes, ThrowsNotImplementedException), Part(EnvDTE.vsCMPart.vsCMPartName, ThrowsNotImplementedException), Part(EnvDTE.vsCMPart.vsCMPartNavigate, TextPoint(line:=3, lineOffset:=8, absoluteOffset:=17, lineLength:=7)), Part(EnvDTE.vsCMPart.vsCMPartWhole, ThrowsNotImplementedException), Part(EnvDTE.vsCMPart.vsCMPartWholeWithAttributes, TextPoint(line:=3, lineOffset:=8, absoluteOffset:=17, lineLength:=7))) End Sub #End Region #Region "Access tests" Public Sub TestAccess1() Dim code = class C { int $$x; } TestAccess(code, EnvDTE.vsCMAccess.vsCMAccessPrivate) End Sub Public Sub TestAccess2() Dim code = class C { private int $$x; } TestAccess(code, EnvDTE.vsCMAccess.vsCMAccessPrivate) End Sub Public Sub TestAccess3() Dim code = class C { protected int $$x; } TestAccess(code, EnvDTE.vsCMAccess.vsCMAccessProtected) End Sub Public Sub TestAccess4() Dim code = class C { protected internal int $$x; } TestAccess(code, EnvDTE.vsCMAccess.vsCMAccessProjectOrProtected) End Sub Public Sub TestAccess5() Dim code = class C { internal int $$x; } TestAccess(code, EnvDTE.vsCMAccess.vsCMAccessProject) End Sub Public Sub TestAccess6() Dim code = class C { public int $$x; } TestAccess(code, EnvDTE.vsCMAccess.vsCMAccessPublic) End Sub Public Sub TestAccess7() Dim code = enum E { $$Foo } TestAccess(code, EnvDTE.vsCMAccess.vsCMAccessPublic) End Sub #End Region #Region "Attributes tests" Public Sub TestAttributes1() Dim code = class C { int $$Foo; } TestAttributes(code, NoElements) End Sub Public Sub TestAttributes2() Dim code = using System; class C { [Serializable] int $$Foo; } TestAttributes(code, IsElement("Serializable")) End Sub Public Sub TestAttributes3() Dim code = using System; class C { [Serializable] [CLSCompliant(true)] int $$Foo; } TestAttributes(code, IsElement("Serializable"), IsElement("CLSCompliant")) End Sub Public Sub TestAttributes4() Dim code = using System; class C { [Serializable, CLSCompliant(true)] int $$Foo; } TestAttributes(code, IsElement("Serializable"), IsElement("CLSCompliant")) End Sub #End Region #Region "AddAttribute tests" Public Async Function TestAddAttribute1() As Task Dim code = using System; class C { int $$F; } Dim expected = using System; class C { [Serializable()] int F; } Await TestAddAttribute(code, expected, New AttributeData With {.Name = "Serializable"}) End Function Public Async Function TestAddAttribute2() As Task Dim code = using System; class C { [Serializable] int $$F; } Dim expected = using System; class C { [Serializable] [CLSCompliant(true)] int F; } Await TestAddAttribute(code, expected, New AttributeData With {.Name = "CLSCompliant", .Value = "true", .Position = 1}) End Function Public Async Function TestAddAttribute_BelowDocComment() As Task Dim code = using System; class C { /// <summary></summary> int $$F; } Dim expected = using System; class C { /// <summary></summary> [CLSCompliant(true)] int F; } Await TestAddAttribute(code, expected, New AttributeData With {.Name = "CLSCompliant", .Value = "true"}) End Function #End Region #Region "ConstKind tests" Public Sub TestConstKind1() Dim code = enum E { $$Foo } TestConstKind(code, EnvDTE80.vsCMConstKind.vsCMConstKindConst) End Sub Public Sub TestConstKind2() Dim code = class C { int $$x; } TestConstKind(code, EnvDTE80.vsCMConstKind.vsCMConstKindNone) End Sub Public Sub TestConstKind3() Dim code = class C { const int $$x; } TestConstKind(code, EnvDTE80.vsCMConstKind.vsCMConstKindConst) End Sub Public Sub TestConstKind4() Dim code = class C { readonly int $$x; } TestConstKind(code, EnvDTE80.vsCMConstKind.vsCMConstKindReadOnly) End Sub Public Sub TestConstKind5() Dim code = class C { readonly const int $$x; } TestConstKind(code, EnvDTE80.vsCMConstKind.vsCMConstKindConst Or EnvDTE80.vsCMConstKind.vsCMConstKindReadOnly) End Sub #End Region #Region "FullName tests" Public Sub TestFullName1() Dim code = enum E { $$Foo = 1, Bar } TestFullName(code, "E.Foo") End Sub Public Sub TestFullName2() Dim code = enum E { Foo = 1, $$Bar } TestFullName(code, "E.Bar") End Sub #End Region #Region "InitExpression tests" Public Sub TestInitExpression1() Dim code = class C { int $$i = 42; } TestInitExpression(code, "42") End Sub Public Sub TestInitExpression2() Dim code = class C { const int $$i = 19 + 23; } TestInitExpression(code, "19 + 23") End Sub Public Sub TestInitExpression3() Dim code = enum E { $$i = 19 + 23 } TestInitExpression(code, "19 + 23") End Sub #End Region #Region "IsConstant tests" Public Sub TestIsConstant1() Dim code = enum E { $$Foo } TestIsConstant(code, True) End Sub Public Sub TestIsConstant2() Dim code = class C { const int $$x = 0; } TestIsConstant(code, True) End Sub Public Sub TestIsConstant3() Dim code = class C { readonly int $$x = 0; } TestIsConstant(code, True) End Sub Public Sub TestIsConstant4() Dim code = class C { int $$x = 0; } TestIsConstant(code, False) End Sub #End Region #Region "IsShared tests" Public Sub TestIsShared1() Dim code = class C { int $$x; } TestIsShared(code, False) End Sub Public Sub TestIsShared2() Dim code = class C { static int $$x; } TestIsShared(code, True) End Sub #End Region #Region "Name tests" Public Sub TestName1() Dim code = enum E { $$Foo = 1, Bar } TestName(code, "Foo") End Sub Public Sub TestName2() Dim code = enum E { Foo = 1, $$Bar } TestName(code, "Bar") End Sub #End Region #Region "Prototype tests" Public Sub TestPrototype_ClassName() Dim code = namespace N { class C { int x$$ = 0; } } TestPrototype(code, EnvDTE.vsCMPrototype.vsCMPrototypeClassName, "C.x") End Sub Public Sub TestPrototype_FullName() Dim code = namespace N { class C { int x$$ = 0; } } TestPrototype(code, EnvDTE.vsCMPrototype.vsCMPrototypeFullname, "N.C.x") End Sub Public Sub TestPrototype_InitExpression1() Dim code = namespace N { class C { int x$$ = 0; } } TestPrototype(code, EnvDTE.vsCMPrototype.vsCMPrototypeInitExpression, "x = 0") End Sub Public Sub TestPrototype_InitExpression2() Dim code = namespace N { enum E { A$$ = 42 } } TestPrototype(code, EnvDTE.vsCMPrototype.vsCMPrototypeInitExpression, "A = 42") End Sub Public Sub TestPrototype_InitExpressionAndType1() Dim code = namespace N { class C { int x$$ = 0; } } TestPrototype(code, EnvDTE.vsCMPrototype.vsCMPrototypeInitExpression Or EnvDTE.vsCMPrototype.vsCMPrototypeType, "int x = 0") End Sub Public Sub TestPrototype_InitExpressionAndType2() Dim code = namespace N { enum E { A$$ = 42 } } TestPrototype(code, EnvDTE.vsCMPrototype.vsCMPrototypeInitExpression Or EnvDTE.vsCMPrototype.vsCMPrototypeType, "N.E A = 42") End Sub Public Sub TestPrototype_ClassNameInitExpressionAndType() Dim code = namespace N { enum E { A$$ = 42 } } TestPrototype(code, EnvDTE.vsCMPrototype.vsCMPrototypeInitExpression Or EnvDTE.vsCMPrototype.vsCMPrototypeType Or EnvDTE.vsCMPrototype.vsCMPrototypeClassName, "N.E E.A = 42") End Sub #End Region #Region "Type tests" Public Sub TestType1() Dim code = class C { int $$i; } TestTypeProp(code, New CodeTypeRefData With { .AsString = "int", .AsFullName = "System.Int32", .CodeTypeFullName = "System.Int32", .TypeKind = EnvDTE.vsCMTypeRef.vsCMTypeRefInt }) End Sub Public Sub TestType2() Dim code = class C { int i, $$j; } TestTypeProp(code, New CodeTypeRefData With { .AsString = "int", .AsFullName = "System.Int32", .CodeTypeFullName = "System.Int32", .TypeKind = EnvDTE.vsCMTypeRef.vsCMTypeRefInt }) End Sub Public Sub TestArrayTypeName() Dim code = class C { int[] $$array; } TestTypeProp(code, New CodeTypeRefData With { .AsString = "int[]", .AsFullName = "System.Int32[]", .CodeTypeFullName = "System.Int32[]", .TypeKind = EnvDTE.vsCMTypeRef.vsCMTypeRefArray }) End Sub #End Region #Region "Set Access tests" Public Async Function TestSetEnumAccess1() As Task Dim code = enum E { $$Foo } Dim expected = enum E { Foo } Await TestSetAccess(code, expected, EnvDTE.vsCMAccess.vsCMAccessPublic) End Function Public Async Function TestSetEnumAccess2() As Task Dim code = enum E { $$Foo } Dim expected = enum E { Foo } Await TestSetAccess(code, expected, EnvDTE.vsCMAccess.vsCMAccessDefault) End Function Public Async Function TestSetEnumAccess3() As Task Dim code = enum E { $$Foo } Dim expected = enum E { Foo } Await TestSetAccess(code, expected, EnvDTE.vsCMAccess.vsCMAccessPrivate, ThrowsArgumentException(Of EnvDTE.vsCMAccess)()) End Function Public Async Function TestSetAccess1() As Task Dim code = class C { int $$i; } Dim expected = class C { public int i; } Await TestSetAccess(code, expected, EnvDTE.vsCMAccess.vsCMAccessPublic) End Function Public Async Function TestSetAccess2() As Task Dim code = class C { public int $$i; } Dim expected = class C { int i; } Await TestSetAccess(code, expected, EnvDTE.vsCMAccess.vsCMAccessDefault) End Function Public Async Function TestSetAccess3() As Task Dim code = class C { private int $$i; } Dim expected = class C { int i; } Await TestSetAccess(code, expected, EnvDTE.vsCMAccess.vsCMAccessDefault) End Function Public Async Function TestSetAccess4() As Task Dim code = class C { int $$i; } Dim expected = class C { int i; } Await TestSetAccess(code, expected, EnvDTE.vsCMAccess.vsCMAccessDefault) End Function Public Async Function TestSetAccess5() As Task Dim code = class C { public int $$i; } Dim expected = class C { protected internal int i; } Await TestSetAccess(code, expected, EnvDTE.vsCMAccess.vsCMAccessProjectOrProtected) End Function Public Async Function TestSetAccess6() As Task Dim code = class C { #region Foo int x; #endregion int $$i; } Dim expected = class C { #region Foo int x; #endregion public int i; } Await TestSetAccess(code, expected, EnvDTE.vsCMAccess.vsCMAccessPublic) End Function Public Async Function TestSetAccess7() As Task Dim code = class C { #region Foo int x; #endregion public int $$i; } Dim expected = class C { #region Foo int x; #endregion protected internal int i; } Await TestSetAccess(code, expected, EnvDTE.vsCMAccess.vsCMAccessProjectOrProtected) End Function Public Async Function TestSetAccess8() As Task Dim code = class C { #region Foo int x; #endregion public int $$i; } Dim expected = class C { #region Foo int x; #endregion int i; } Await TestSetAccess(code, expected, EnvDTE.vsCMAccess.vsCMAccessDefault) End Function Public Async Function TestSetAccess9() As Task Dim code = class C { #region Foo int $$x; #endregion } Dim expected = class C { #region Foo public int x; #endregion } Await TestSetAccess(code, expected, EnvDTE.vsCMAccess.vsCMAccessPublic) End Function Public Async Function TestSetAccess10() As Task Dim code = class C { #region Foo public int $$x; #endregion } Dim expected = class C { #region Foo int x; #endregion } Await TestSetAccess(code, expected, EnvDTE.vsCMAccess.vsCMAccessDefault) End Function Public Async Function TestSetAccess11() As Task Dim code = class C { #region Foo public int $$x; #endregion } Dim expected = class C { #region Foo protected internal int x; #endregion } Await TestSetAccess(code, expected, EnvDTE.vsCMAccess.vsCMAccessProjectOrProtected) End Function Public Async Function TestSetAccess12() As Task Dim code = class C { #region Foo [Foo] public int $$x; #endregion } Dim expected = class C { #region Foo [Foo] protected internal int x; #endregion } Await TestSetAccess(code, expected, EnvDTE.vsCMAccess.vsCMAccessProjectOrProtected) End Function Public Async Function TestSetAccess13() As Task Dim code = class C { #region Foo // Comment comment comment public int $$x; #endregion } Dim expected = class C { #region Foo // Comment comment comment protected internal int x; #endregion } Await TestSetAccess(code, expected, EnvDTE.vsCMAccess.vsCMAccessProjectOrProtected) End Function Public Async Function TestSetAccess14() As Task Dim code = /// Comment comment comment /// public int $$x; #endregion } ]]> Dim expected = /// Comment comment comment /// protected internal int x; #endregion } ]]> Await TestSetAccess(code, expected, EnvDTE.vsCMAccess.vsCMAccessProjectOrProtected) End Function #End Region #Region "Set ConstKind tests" Public Async Function TestSetConstKind1() As Task Dim code = enum E { $$Foo } Dim expected = enum E { Foo } Await TestSetConstKind(code, expected, EnvDTE80.vsCMConstKind.vsCMConstKindConst) End Function Public Async Function TestSetConstKind2() As Task Dim code = enum E { $$Foo } Dim expected = enum E { Foo } Await TestSetConstKind(code, expected, EnvDTE80.vsCMConstKind.vsCMConstKindReadOnly) End Function Public Async Function TestSetConstKind3() As Task Dim code = enum E { $$Foo } Dim expected = enum E { Foo } Await TestSetConstKind(code, expected, EnvDTE80.vsCMConstKind.vsCMConstKindNone, ThrowsArgumentException(Of EnvDTE80.vsCMConstKind)) End Function Public Async Function TestSetConstKind4() As Task Dim code = class C { int $$x; } Dim expected = class C { int x; } Await TestSetConstKind(code, expected, EnvDTE80.vsCMConstKind.vsCMConstKindNone) End Function Public Async Function TestSetConstKind5() As Task Dim code = class C { int $$x; } Dim expected = class C { const int x; } Await TestSetConstKind(code, expected, EnvDTE80.vsCMConstKind.vsCMConstKindConst) End Function Public Async Function TestSetConstKind6() As Task Dim code = class C { const int $$x; } Dim expected = class C { int x; } Await TestSetConstKind(code, expected, EnvDTE80.vsCMConstKind.vsCMConstKindNone) End Function Public Async Function TestSetConstKind7() As Task Dim code = class C { int $$x; } Dim expected = class C { readonly int x; } Await TestSetConstKind(code, expected, EnvDTE80.vsCMConstKind.vsCMConstKindReadOnly) End Function Public Async Function TestSetConstKind8() As Task Dim code = class C { readonly int $$x; } Dim expected = class C { int x; } Await TestSetConstKind(code, expected, EnvDTE80.vsCMConstKind.vsCMConstKindNone) End Function Public Async Function TestSetConstKindWhenVolatileIsPresent1() As Task Dim code = class C { volatile int $$x; } Dim expected = class C { volatile const int x; } Await TestSetConstKind(code, expected, EnvDTE80.vsCMConstKind.vsCMConstKindConst) End Function Public Async Function TestSetConstKindWhenVolatileIsPresent2() As Task Dim code = class C { volatile int $$x; } Dim expected = class C { volatile readonly int x; } Await TestSetConstKind(code, expected, EnvDTE80.vsCMConstKind.vsCMConstKindReadOnly) End Function Public Async Function TestSetConstKindWhenVolatileIsPresent3() As Task Dim code = class C { volatile readonly int $$x; } Dim expected = class C { volatile const int x; } Await TestSetConstKind(code, expected, EnvDTE80.vsCMConstKind.vsCMConstKindConst) End Function Public Async Function TestSetConstKindWhenVolatileIsPresent4() As Task Dim code = class C { volatile readonly int $$x; } Dim expected = class C { volatile int x; } Await TestSetConstKind(code, expected, EnvDTE80.vsCMConstKind.vsCMConstKindNone) End Function #End Region #Region "Set InitExpression tests" Public Async Function TestSetInitExpression1() As Task Dim code = class C { int $$i; } Dim expected = class C { int i = 42; } Await TestSetInitExpression(code, expected, "42") End Function Public Async Function TestSetInitExpression2() As Task Dim code = class C { int $$i = 42; } Dim expected = class C { int i; } Await TestSetInitExpression(code, expected, Nothing) End Function Public Async Function TestSetInitExpression3() As Task Dim code = class C { int $$i, j; } Dim expected = class C { int i = 42, j; } Await TestSetInitExpression(code, expected, "42") End Function Public Async Function TestSetInitExpression4() As Task Dim code = class C { int i, $$j; } Dim expected = class C { int i, j = 42; } Await TestSetInitExpression(code, expected, "42") End Function Public Async Function TestSetInitExpression5() As Task Dim code = class C { const int $$i = 0; } Dim expected = class C { const int i = 42; } Await TestSetInitExpression(code, expected, "42") End Function Public Async Function TestSetInitExpression6() As Task Dim code = enum E { $$Foo } Dim expected = enum E { Foo = 42 } Await TestSetInitExpression(code, expected, "42") End Function Public Async Function TestSetInitExpression7() As Task Dim code = enum E { $$Foo = 42 } Dim expected = enum E { Foo } Await TestSetInitExpression(code, expected, Nothing) End Function #End Region #Region "Set IsConstant tests" Public Async Function TestSetIsConstant1() As Task Dim code = enum E { $$Foo } Dim expected = enum E { Foo } Await TestSetIsConstant(code, expected, True) End Function Public Async Function TestSetIsConstant2() As Task Dim code = enum E { $$Foo } Dim expected = enum E { Foo } Await TestSetIsConstant(code, expected, False, ThrowsCOMException(Of Boolean)(E_FAIL)) End Function Public Async Function TestSetIsConstant3() As Task Dim code = class C { int $$i; } Dim expected = class C { const int i; } Await TestSetIsConstant(code, expected, True) End Function Public Async Function TestSetIsConstant4() As Task Dim code = class C { int $$i; } Dim expected = class C { int i; } Await TestSetIsConstant(code, expected, False) End Function Public Async Function TestSetIsConstant5() As Task Dim code = class C { const int $$i; } Dim expected = class C { int i; } Await TestSetIsConstant(code, expected, False) End Function Public Async Function TestSetIsConstant6() As Task Dim code = class C { const int $$i; } Dim expected = class C { const int i; } Await TestSetIsConstant(code, expected, True) End Function Public Async Function TestSetIsConstant7() As Task Dim code = class C { readonly int $$i; } Dim expected = class C { int i; } Await TestSetIsConstant(code, expected, False) End Function Public Async Function TestSetIsConstant8() As Task Dim code = class C { readonly int $$i; } Dim expected = class C { readonly int i; } Await TestSetIsConstant(code, expected, True) End Function #End Region #Region "Set IsShared tests" Public Async Function TestSetIsShared1() As Task Dim code = class C { int $$i; } Dim expected = class C { static int i; } Await TestSetIsShared(code, expected, True) End Function Public Async Function TestSetIsShared2() As Task Dim code = class C { static int $$i; } Dim expected = class C { int i; } Await TestSetIsShared(code, expected, False) End Function #End Region #Region "Set Name tests" Public Async Function TestSetName1() As Task Dim code = class C { int $$Foo; } Dim expected = class C { int Bar; } Await TestSetName(code, expected, "Bar", NoThrow(Of String)()) End Function Public Async Function TestSetName2() As Task Dim code = class C { #region Foo int $$Foo; #endregion } Dim expected = class C { #region Foo int Bar; #endregion } Await TestSetName(code, expected, "Bar", NoThrow(Of String)()) End Function #End Region #Region "Set Type tests" Public Async Function TestSetType1() As Task Dim code = class C { int $$i; } Dim expected = class C { double i; } Await TestSetTypeProp(code, expected, "double") End Function Public Async Function TestSetType2() As Task Dim code = class C { int i, $$j; } Dim expected = class C { double i, j; } Await TestSetTypeProp(code, expected, "double") End Function #End Region Public Sub TestTypeDescriptor_GetProperties() Dim code = class S { int $$x; } Dim expectedPropertyNames = {"DTE", "Collection", "Name", "FullName", "ProjectItem", "Kind", "IsCodeType", "InfoLocation", "Children", "Language", "StartPoint", "EndPoint", "ExtenderNames", "ExtenderCATID", "Parent", "InitExpression", "Type", "Access", "IsConstant", "Attributes", "DocComment", "Comment", "IsShared", "ConstKind", "IsGeneric"} TestPropertyDescriptors(code, expectedPropertyNames) End Sub Protected Overrides ReadOnly Property LanguageName As String Get Return LanguageNames.CSharp End Get End Property End Class End Namespace