PageRenderTime 27ms CodeModel.GetById 16ms RepoModel.GetById 0ms app.codeStats 0ms

/src/VisualStudio/Core/Test/CodeModel/VisualBasic/CodeInterfaceTests.vb

https://gitlab.com/sharadag/Roslyn
Visual Basic | 456 lines | 366 code | 87 blank | 3 comment | 0 complexity | 4694460126a0efd59dab32477c17db53 MD5 | raw file
  1. ' Copyright (c) Microsoft. All Rights Reserved. Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
  2. Imports System.Runtime.InteropServices
  3. Imports System.Threading.Tasks
  4. Imports Microsoft.CodeAnalysis
  5. Imports Microsoft.VisualStudio.LanguageServices.VisualBasic.CodeModel.Extenders
  6. Imports Microsoft.VisualStudio.LanguageServices.VisualBasic.CodeModel.Interop
  7. Imports Roslyn.Test.Utilities
  8. Namespace Microsoft.VisualStudio.LanguageServices.UnitTests.CodeModel.VisualBasic
  9. Public Class CodeInterfaceTests
  10. Inherits AbstractCodeInterfaceTests
  11. #Region "Access tests"
  12. <ConditionalWpfFact(GetType(x86)), Trait(Traits.Feature, Traits.Features.CodeModel)>
  13. Public Async Function TestAccess1() As Task
  14. Dim code =
  15. <Code>
  16. Interface $$I : End Interface
  17. </Code>
  18. Await TestAccess(code, EnvDTE.vsCMAccess.vsCMAccessPublic)
  19. End Function
  20. <ConditionalWpfFact(GetType(x86)), Trait(Traits.Feature, Traits.Features.CodeModel)>
  21. Public Async Function TestAccess2() As Task
  22. Dim code =
  23. <Code>
  24. Friend Interface $$I : End Interface
  25. </Code>
  26. Await TestAccess(code, EnvDTE.vsCMAccess.vsCMAccessProject)
  27. End Function
  28. <ConditionalWpfFact(GetType(x86)), Trait(Traits.Feature, Traits.Features.CodeModel)>
  29. Public Async Function TestAccess3() As Task
  30. Dim code =
  31. <Code>
  32. Public Interface $$I : End Interface
  33. </Code>
  34. Await TestAccess(code, EnvDTE.vsCMAccess.vsCMAccessPublic)
  35. End Function
  36. #End Region
  37. #Region "Parts tests"
  38. <ConditionalWpfFact(GetType(x86)), Trait(Traits.Feature, Traits.Features.CodeModel)>
  39. Public Async Function TestParts1() As Task
  40. Dim code =
  41. <Code>
  42. Interface $$I
  43. End Interface
  44. </Code>
  45. Await TestParts(code, 1)
  46. End Function
  47. <ConditionalWpfFact(GetType(x86)), Trait(Traits.Feature, Traits.Features.CodeModel)>
  48. Public Async Function TestParts2() As Task
  49. Dim code =
  50. <Code>
  51. Partial Interface $$I
  52. End Interface
  53. </Code>
  54. Await TestParts(code, 1)
  55. End Function
  56. <ConditionalWpfFact(GetType(x86)), Trait(Traits.Feature, Traits.Features.CodeModel)>
  57. Public Async Function TestParts3() As Task
  58. Dim code =
  59. <Code>
  60. Partial Interface $$I
  61. End Interface
  62. Partial Interface I
  63. End Interface
  64. </Code>
  65. Await TestParts(code, 2)
  66. End Function
  67. #End Region
  68. #Region "AddAttribute tests"
  69. <ConditionalWpfFact(GetType(x86)), Trait(Traits.Feature, Traits.Features.CodeModel)>
  70. Public Async Function TestAddAttribute1() As Task
  71. Dim code =
  72. <Code>
  73. Imports System
  74. Interface $$I
  75. End Interface
  76. </Code>
  77. Dim expected =
  78. <Code>
  79. Imports System
  80. &lt;Serializable()&gt;
  81. Interface I
  82. End Interface
  83. </Code>
  84. Await TestAddAttribute(code, expected, New AttributeData With {.Name = "Serializable"})
  85. End Function
  86. <ConditionalWpfFact(GetType(x86)), Trait(Traits.Feature, Traits.Features.CodeModel)>
  87. Public Async Function TestAddAttribute2() As Task
  88. Dim code =
  89. <Code>
  90. Imports System
  91. &lt;Serializable&gt;
  92. Interface $$I
  93. End Interface
  94. </Code>
  95. Dim expected =
  96. <Code>
  97. Imports System
  98. &lt;Serializable&gt;
  99. &lt;CLSCompliant(True)&gt;
  100. Interface I
  101. End Interface
  102. </Code>
  103. Await TestAddAttribute(code, expected, New AttributeData With {.Name = "CLSCompliant", .Value = "True", .Position = 1})
  104. End Function
  105. <WorkItem(2825, "https://github.com/dotnet/roslyn/issues/2825")>
  106. <ConditionalWpfFact(GetType(x86)), Trait(Traits.Feature, Traits.Features.CodeModel)>
  107. Public Async Function TestAddAttribute_BelowDocComment() As Task
  108. Dim code =
  109. <Code>
  110. Imports System
  111. ''' &lt;summary&gt;&lt;/summary&gt;
  112. Interface $$I
  113. End Interface
  114. </Code>
  115. Dim expected =
  116. <Code>
  117. Imports System
  118. ''' &lt;summary&gt;&lt;/summary&gt;
  119. &lt;CLSCompliant(True)&gt;
  120. Interface I
  121. End Interface
  122. </Code>
  123. Await TestAddAttribute(code, expected, New AttributeData With {.Name = "CLSCompliant", .Value = "True"})
  124. End Function
  125. #End Region
  126. #Region "AddBase tests"
  127. <ConditionalWpfFact(GetType(x86)), Trait(Traits.Feature, Traits.Features.CodeModel)>
  128. Public Async Function TestAddBase1() As Task
  129. Dim code =
  130. <Code>
  131. Interface $$I
  132. End Interface
  133. Interface J
  134. End Interface
  135. </Code>
  136. Dim expected =
  137. <Code>
  138. Interface I
  139. Inherits J
  140. End Interface
  141. Interface J
  142. End Interface
  143. </Code>
  144. Await TestAddBase(code, "J", Nothing, expected)
  145. End Function
  146. <ConditionalWpfFact(GetType(x86)), Trait(Traits.Feature, Traits.Features.CodeModel)>
  147. Public Async Function TestAddBase2() As Task
  148. Dim code =
  149. <Code>
  150. Interface $$I
  151. Inherits J
  152. End Interface
  153. Interface K
  154. End Interface
  155. </Code>
  156. Dim expected =
  157. <Code>
  158. Interface I
  159. Inherits K
  160. Inherits J
  161. End Interface
  162. Interface K
  163. End Interface
  164. </Code>
  165. Await TestAddBase(code, "K", Nothing, expected)
  166. End Function
  167. #End Region
  168. #Region "RemoveBase tests"
  169. <ConditionalWpfFact(GetType(x86)), Trait(Traits.Feature, Traits.Features.CodeModel)>
  170. Public Async Function TestRemoveBase1() As Task
  171. Dim code =
  172. <Code>
  173. Interface $$I
  174. Inherits J
  175. End Interface
  176. </Code>
  177. Dim expected =
  178. <Code>
  179. Interface I
  180. End Interface
  181. </Code>
  182. Await TestRemoveBase(code, "J", expected)
  183. End Function
  184. <ConditionalWpfFact(GetType(x86)), Trait(Traits.Feature, Traits.Features.CodeModel)>
  185. Public Async Function TestRemoveBase2() As Task
  186. Dim code =
  187. <Code>
  188. Interface $$I
  189. End Interface
  190. </Code>
  191. Await TestRemoveBaseThrows(Of COMException)(code, "J")
  192. End Function
  193. <ConditionalWpfFact(GetType(x86)), Trait(Traits.Feature, Traits.Features.CodeModel)>
  194. Public Async Function TestRemoveBase3() As Task
  195. Dim code =
  196. <Code>
  197. Interface $$I
  198. Inherits J, K
  199. End Interface
  200. </Code>
  201. Dim expected =
  202. <Code>
  203. Interface I
  204. Inherits J
  205. End Interface
  206. </Code>
  207. Await TestRemoveBase(code, "K", expected)
  208. End Function
  209. <ConditionalWpfFact(GetType(x86)), Trait(Traits.Feature, Traits.Features.CodeModel)>
  210. Public Async Function TestRemoveBase4() As Task
  211. Dim code =
  212. <Code>
  213. Interface $$I
  214. Inherits J, K
  215. End Interface
  216. </Code>
  217. Dim expected =
  218. <Code>
  219. Interface I
  220. Inherits K
  221. End Interface
  222. </Code>
  223. Await TestRemoveBase(code, "J", expected)
  224. End Function
  225. #End Region
  226. #Region "Set Name tests"
  227. <ConditionalWpfFact(GetType(x86)), Trait(Traits.Feature, Traits.Features.CodeModel)>
  228. Public Async Function TestSetName1() As Task
  229. Dim code =
  230. <Code>
  231. Interface $$Foo
  232. End Interface
  233. </Code>
  234. Dim expected =
  235. <Code>
  236. Interface Bar
  237. End Interface
  238. </Code>
  239. Await TestSetName(code, expected, "Bar", NoThrow(Of String)())
  240. End Function
  241. #End Region
  242. #Region "GenericExtender"
  243. <ConditionalWpfFact(GetType(x86)), Trait(Traits.Feature, Traits.Features.CodeModel)>
  244. Public Async Function TestGenericExtender_GetBaseTypesCount1() As Task
  245. Dim code =
  246. <Code>
  247. Interface I$$
  248. End Interface
  249. </Code>
  250. Await TestGenericNameExtender_GetBaseTypesCount(code, 0)
  251. End Function
  252. <ConditionalWpfFact(GetType(x86)), Trait(Traits.Feature, Traits.Features.CodeModel)>
  253. Public Async Function TestGenericExtender_GetBaseTypesCount2() As Task
  254. Dim code =
  255. <Code>
  256. Namespace N
  257. Interface I$$
  258. Inherits IFoo(Of Integer)
  259. End Interface
  260. Interface IBar
  261. End Interface
  262. Interface IFoo(Of T)
  263. Inherits IBar
  264. End Interface
  265. End Namespace
  266. </Code>
  267. Await TestGenericNameExtender_GetBaseTypesCount(code, 1)
  268. End Function
  269. <ConditionalWpfFact(GetType(x86)), Trait(Traits.Feature, Traits.Features.CodeModel)>
  270. Public Async Function TestGenericExtender_GetBaseGenericName1() As Task
  271. Dim code =
  272. <Code>
  273. Interface I$$
  274. End Interface
  275. </Code>
  276. Await TestGenericNameExtender_GetBaseGenericName(code, 1, Nothing)
  277. End Function
  278. <ConditionalWpfFact(GetType(x86)), Trait(Traits.Feature, Traits.Features.CodeModel)>
  279. Public Async Function TestGenericExtender_GetBaseGenericName2() As Task
  280. Dim code =
  281. <Code>
  282. Namespace N
  283. Interface I$$
  284. Inherits IFoo(Of System.Int32)
  285. End Interface
  286. Interface IBar
  287. End Interface
  288. Interface IFoo(Of T)
  289. Inherits IBar
  290. End Interface
  291. End Namespace
  292. </Code>
  293. Await TestGenericNameExtender_GetBaseGenericName(code, 1, "N.IFoo(Of Integer)")
  294. End Function
  295. <ConditionalWpfFact(GetType(x86)), Trait(Traits.Feature, Traits.Features.CodeModel)>
  296. Public Async Function TestGenericExtender_GetImplementedTypesCount1() As Task
  297. Dim code =
  298. <Code>
  299. Interface I$$
  300. End Interface
  301. </Code>
  302. Await TestGenericNameExtender_GetImplementedTypesCountThrows(Of ArgumentException)(code)
  303. End Function
  304. <ConditionalWpfFact(GetType(x86)), Trait(Traits.Feature, Traits.Features.CodeModel)>
  305. Public Async Function TestGenericExtender_GetImplementedTypesCount2() As Task
  306. Dim code =
  307. <Code>
  308. Namespace N
  309. Interface I$$
  310. Inherits IFoo(Of Integer)
  311. End Interface
  312. Interface IBar
  313. End Interface
  314. Interface IFoo(Of T)
  315. Inherits IBar
  316. End Interface
  317. End Namespace
  318. </Code>
  319. Await TestGenericNameExtender_GetImplementedTypesCountThrows(Of ArgumentException)(code)
  320. End Function
  321. <ConditionalWpfFact(GetType(x86)), Trait(Traits.Feature, Traits.Features.CodeModel)>
  322. Public Async Function TestGenericExtender_GetImplTypeGenericName1() As Task
  323. Dim code =
  324. <Code>
  325. Interface I$$
  326. End Interface
  327. </Code>
  328. Await TestGenericNameExtender_GetImplTypeGenericNameThrows(Of ArgumentException)(code, 1)
  329. End Function
  330. <ConditionalWpfFact(GetType(x86)), Trait(Traits.Feature, Traits.Features.CodeModel)>
  331. Public Async Function TestGenericExtender_GetImplTypeGenericName2() As Task
  332. Dim code =
  333. <Code>
  334. Namespace N
  335. Interface I$$
  336. Inherits IFoo(Of Integer)
  337. End Interface
  338. Interface IBar
  339. End Interface
  340. Interface IFoo(Of T)
  341. Inherits IBar
  342. End Interface
  343. End Namespace
  344. </Code>
  345. Await TestGenericNameExtender_GetImplTypeGenericNameThrows(Of ArgumentException)(code, 1)
  346. End Function
  347. #End Region
  348. Private Function GetGenericExtender(codeElement As EnvDTE80.CodeInterface2) As IVBGenericExtender
  349. Return CType(codeElement.Extender(ExtenderNames.VBGenericExtender), IVBGenericExtender)
  350. End Function
  351. Protected Overrides Function GenericNameExtender_GetBaseTypesCount(codeElement As EnvDTE80.CodeInterface2) As Integer
  352. Return GetGenericExtender(codeElement).GetBaseTypesCount()
  353. End Function
  354. Protected Overrides Function GenericNameExtender_GetImplementedTypesCount(codeElement As EnvDTE80.CodeInterface2) As Integer
  355. Return GetGenericExtender(codeElement).GetImplementedTypesCount()
  356. End Function
  357. Protected Overrides Function GenericNameExtender_GetBaseGenericName(codeElement As EnvDTE80.CodeInterface2, index As Integer) As String
  358. Return GetGenericExtender(codeElement).GetBaseGenericName(index)
  359. End Function
  360. Protected Overrides Function GenericNameExtender_GetImplTypeGenericName(codeElement As EnvDTE80.CodeInterface2, index As Integer) As String
  361. Return GetGenericExtender(codeElement).GetImplTypeGenericName(index)
  362. End Function
  363. Protected Overrides ReadOnly Property LanguageName As String
  364. Get
  365. Return LanguageNames.VisualBasic
  366. End Get
  367. End Property
  368. End Class
  369. End Namespace