/
githubmirror
/
roslyn
Обзор
Документация
Войти
/
githubmirror
/
roslyn
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
main
src/Compilers/VisualBasic/Test/Semantic/Compilation/SymbolSearchTests.vb
215 строк
13 KB
Jonathon Marolf
update headers
23 янв 2020, 04:01
Не верифицирован
23 янв 2020, 04:01
91571a3
Код
Авторство
О чём код?
' 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. Namespace Microsoft.CodeAnalysis.VisualBasic.UnitTests Public Class SymbolSearchTests Inherits BasicTestBase <Fact> Public Sub TestSymbolFilterNone() Assert.Throws(Of ArgumentException)(Sub() Dim compilation = GetTestCompilation() compilation.ContainsSymbolsWithName(Function(n) True, SymbolFilter.None) End Sub) Assert.Throws(Of ArgumentException)(Sub() Dim compilation = GetTestCompilation() compilation.GetSymbolsWithName(Function(n) True, SymbolFilter.None) End Sub) Assert.Throws(Of ArgumentException)(Sub() Dim compilation = GetTestCompilation() compilation.ContainsSymbolsWithName("", SymbolFilter.None) End Sub) Assert.Throws(Of ArgumentException)(Sub() Dim compilation = GetTestCompilation() compilation.GetSymbolsWithName("", SymbolFilter.None) End Sub) End Sub <Fact> Public Sub TestPredicateNull() Assert.Throws(Of ArgumentNullException)(Sub() Dim compilation = GetTestCompilation() compilation.ContainsSymbolsWithName(predicate:=Nothing) End Sub) Assert.Throws(Of ArgumentNullException)(Sub() Dim compilation = GetTestCompilation() compilation.GetSymbolsWithName(predicate:=Nothing) End Sub) End Sub <Fact> Public Sub TestStringNull() Assert.Throws(Of ArgumentNullException)(Sub() Dim compilation = GetTestCompilation() compilation.ContainsSymbolsWithName(name:=Nothing) End Sub) Assert.Throws(Of ArgumentNullException)(Sub() Dim compilation = GetTestCompilation() compilation.GetSymbolsWithName(name:=Nothing) End Sub) End Sub <Fact> Public Sub TestMergedNamespace() Dim compilation = GetTestCompilation() TestNameAndPredicate(compilation, "System", includeNamespace:=True, includeType:=False, includeMember:=False, count:=1) TestNameAndPredicate(compilation, "System", includeNamespace:=True, includeType:=True, includeMember:=False, count:=1) TestNameAndPredicate(compilation, "System", includeNamespace:=True, includeType:=False, includeMember:=True, count:=1) TestNameAndPredicate(compilation, "System", includeNamespace:=True, includeType:=True, includeMember:=True, count:=1) TestNameAndPredicate(compilation, "System", includeNamespace:=False, includeType:=False, includeMember:=True, count:=0) TestNameAndPredicate(compilation, "System", includeNamespace:=False, includeType:=True, includeMember:=False, count:=0) TestNameAndPredicate(compilation, "System", includeNamespace:=False, includeType:=True, includeMember:=True, count:=0) End Sub <Fact> Public Sub TestSourceNamespace() Dim compilation = GetTestCompilation() TestNameAndPredicate(compilation, "MyNamespace", includeNamespace:=True, includeType:=False, includeMember:=False, count:=1) TestNameAndPredicate(compilation, "MyNamespace", includeNamespace:=True, includeType:=True, includeMember:=False, count:=1) TestNameAndPredicate(compilation, "MyNamespace", includeNamespace:=True, includeType:=False, includeMember:=True, count:=1) TestNameAndPredicate(compilation, "MyNamespace", includeNamespace:=True, includeType:=True, includeMember:=True, count:=1) TestNameAndPredicate(compilation, "MyNamespace", includeNamespace:=False, includeType:=False, includeMember:=True, count:=0) TestNameAndPredicate(compilation, "MyNamespace", includeNamespace:=False, includeType:=True, includeMember:=False, count:=0) TestNameAndPredicate(compilation, "MyNamespace", includeNamespace:=False, includeType:=True, includeMember:=True, count:=0) End Sub <Fact> Public Sub TestClassInMergedNamespace() Dim compilation = GetTestCompilation() TestNameAndPredicate(compilation, "Test", includeNamespace:=False, includeType:=True, includeMember:=False, count:=1) TestNameAndPredicate(compilation, "Test", includeNamespace:=False, includeType:=True, includeMember:=True, count:=1) TestNameAndPredicate(compilation, "Test", includeNamespace:=True, includeType:=True, includeMember:=False, count:=1) TestNameAndPredicate(compilation, "Test", includeNamespace:=True, includeType:=True, includeMember:=True, count:=1) TestNameAndPredicate(compilation, "Test", includeNamespace:=False, includeType:=False, includeMember:=True, count:=0) TestNameAndPredicate(compilation, "Test", includeNamespace:=True, includeType:=False, includeMember:=False, count:=0) TestNameAndPredicate(compilation, "Test", includeNamespace:=True, includeType:=False, includeMember:=True, count:=0) End Sub <Fact> Public Sub TestClassInSourceNamespace() Dim compilation = GetTestCompilation() TestNameAndPredicate(compilation, "Test1", includeNamespace:=False, includeType:=True, includeMember:=False, count:=1) TestNameAndPredicate(compilation, "Test1", includeNamespace:=False, includeType:=True, includeMember:=True, count:=1) TestNameAndPredicate(compilation, "Test1", includeNamespace:=True, includeType:=True, includeMember:=False, count:=1) TestNameAndPredicate(compilation, "Test1", includeNamespace:=True, includeType:=True, includeMember:=True, count:=1) TestNameAndPredicate(compilation, "Test1", includeNamespace:=False, includeType:=False, includeMember:=True, count:=0) TestNameAndPredicate(compilation, "Test1", includeNamespace:=True, includeType:=False, includeMember:=False, count:=0) TestNameAndPredicate(compilation, "Test1", includeNamespace:=True, includeType:=False, includeMember:=True, count:=0) End Sub <Fact> Public Sub TestMembers() Dim compilation = GetTestCompilation() TestNameAndPredicate(compilation, "myField", includeNamespace:=False, includeType:=False, includeMember:=True, count:=1) TestNameAndPredicate(compilation, "myField", includeNamespace:=False, includeType:=True, includeMember:=True, count:=1) TestNameAndPredicate(compilation, "myField", includeNamespace:=True, includeType:=False, includeMember:=True, count:=1) TestNameAndPredicate(compilation, "myField", includeNamespace:=True, includeType:=True, includeMember:=True, count:=1) TestNameAndPredicate(compilation, "myField", includeNamespace:=False, includeType:=True, includeMember:=False, count:=0) TestNameAndPredicate(compilation, "myField", includeNamespace:=True, includeType:=False, includeMember:=False, count:=0) TestNameAndPredicate(compilation, "myField", includeNamespace:=True, includeType:=True, includeMember:=False, count:=0) End Sub <Fact> Public Sub TestCaseInsensitivity() Dim compilation = GetTestCompilation() TestName(compilation, "system", includeNamespace:=True, includeType:=True, includeMember:=True, count:=1) TestName(Compilation, "mynamespace", includeNamespace:=True, includeType:=True, includeMember:=True, count:=1) TestName(Compilation, "test", includeNamespace:=True, includeType:=True, includeMember:=True, count:=1) TestName(Compilation, "test1", includeNamespace:=True, includeType:=True, includeMember:=True, count:=1) TestName(Compilation, "myfield", includeNamespace:=True, includeType:=True, includeMember:=True, count:=1) End Sub <Fact> Public Sub TestPartialSearch() Dim compilation = GetTestCompilation() TestPredicate(compilation, Function(n) n.IndexOf("my", StringComparison.OrdinalIgnoreCase) >= 0, includeNamespace:=False, includeType:=False, includeMember:=True, count:=4) TestPredicate(compilation, Function(n) n.IndexOf("my", StringComparison.OrdinalIgnoreCase) >= 0, includeNamespace:=False, includeType:=True, includeMember:=False, count:=4) TestPredicate(compilation, Function(n) n.IndexOf("my", StringComparison.OrdinalIgnoreCase) >= 0, includeNamespace:=False, includeType:=True, includeMember:=True, count:=8) TestPredicate(compilation, Function(n) n.IndexOf("my", StringComparison.OrdinalIgnoreCase) >= 0, includeNamespace:=True, includeType:=False, includeMember:=False, count:=1) TestPredicate(compilation, Function(n) n.IndexOf("my", StringComparison.OrdinalIgnoreCase) >= 0, includeNamespace:=True, includeType:=False, includeMember:=True, count:=5) TestPredicate(compilation, Function(n) n.IndexOf("my", StringComparison.OrdinalIgnoreCase) >= 0, includeNamespace:=True, includeType:=True, includeMember:=False, count:=5) TestPredicate(compilation, Function(n) n.IndexOf("my", StringComparison.OrdinalIgnoreCase) >= 0, includeNamespace:=True, includeType:=True, includeMember:=True, count:=9) TestPredicate(compilation, Function(n) n.IndexOf("enum", StringComparison.OrdinalIgnoreCase) >= 0, includeNamespace:=True, includeType:=True, includeMember:=True, count:=2) End Sub Private Shared Function GetTestCompilation() As VisualBasicCompilation Dim source As String = <text> Namespace System Public Class Test End Class End Namespace Namespace MyNamespace Public Class Test1 End Class End Namespace Public Class [MyClass] Private myField As Integer Friend Property MyProperty As Integer Sub MyMethod() End Sub Public Event MyEvent As EventHandler Delegate Function MyDelegate(i As Integer) As String End Class Structure MyStruct End Structure Interface MyInterface End Interface Enum [Enum] EnumValue End Enum </text>.Value Return CreateCompilationWithMscorlib40({source}) End Function Private Shared Sub TestNameAndPredicate(compilation As VisualBasicCompilation, name As String, includeNamespace As Boolean, includeType As Boolean, includeMember As Boolean, count As Integer) TestName(compilation, name, includeNamespace, includeType, includeMember, count) TestPredicate(compilation, Function(n) n = name, includeNamespace, includeType, includeMember, count) End Sub Private Shared Sub TestName(compilation As VisualBasicCompilation, name As String, includeNamespace As Boolean, includeType As Boolean, includeMember As Boolean, count As Integer) Dim filter = ComputeFilter(includeNamespace, includeType, includeMember) Assert.Equal(count > 0, compilation.ContainsSymbolsWithName(name, filter)) Assert.Equal(count, compilation.GetSymbolsWithName(name, filter).Count()) End Sub Private Shared Sub TestPredicate(compilation As VisualBasicCompilation, predicate As Func(Of String, Boolean), includeNamespace As Boolean, includeType As Boolean, includeMember As Boolean, count As Integer) Dim filter = ComputeFilter(includeNamespace, includeType, includeMember) Assert.Equal(count > 0, compilation.ContainsSymbolsWithName(predicate, filter)) Assert.Equal(count, compilation.GetSymbolsWithName(predicate, filter).Count()) End Sub Private Shared Function ComputeFilter(includeNamespace As Boolean, includeType As Boolean, includeMember As Boolean) As SymbolFilter Dim filter = SymbolFilter.None filter = If(includeNamespace, filter Or SymbolFilter.Namespace, filter) filter = If(includeType, filter Or SymbolFilter.Type, filter) filter = If(includeMember, filter Or SymbolFilter.Member, filter) Return filter End Function End Class End Namespace