Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mono/monodevelop.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'main/tests/UnitTests/MonoDevelop.Ide.FindInFiles/MemberCollectorTests.cs')
-rw-r--r--main/tests/UnitTests/MonoDevelop.Ide.FindInFiles/MemberCollectorTests.cs129
1 files changed, 66 insertions, 63 deletions
diff --git a/main/tests/UnitTests/MonoDevelop.Ide.FindInFiles/MemberCollectorTests.cs b/main/tests/UnitTests/MonoDevelop.Ide.FindInFiles/MemberCollectorTests.cs
index 0100ae6584..2b86670596 100644
--- a/main/tests/UnitTests/MonoDevelop.Ide.FindInFiles/MemberCollectorTests.cs
+++ b/main/tests/UnitTests/MonoDevelop.Ide.FindInFiles/MemberCollectorTests.cs
@@ -28,7 +28,7 @@ using System.Linq;
using System.Collections.Generic;
using NUnit.Framework;
using MonoDevelop.Projects;
-using ICSharpCode.NRefactory.TypeSystem;
+using ICSharpCode.NRefactory.TypeSystem;
using MonoDevelop.Ide.TypeSystem;
using ICSharpCode.NRefactory.CSharp;
using ICSharpCode.NRefactory.CSharp.TypeSystem;
@@ -42,44 +42,46 @@ namespace MonoDevelop.Ide.FindInFiles
{
IAssembly GenerateAssembly(Project project, string code)
{
- project.Files.Add (new ProjectFile ("test.cs", BuildAction.Compile));
var wrapper = TypeSystemService.LoadProject (project);
TypeSystemService.ParseFile ("test.cs", "text/x-csharp", code, wrapper);
wrapper.RequestLoad ();
do {
System.Threading.Thread.Sleep (10);
- } while (wrapper.InLoad);
- return wrapper.Compilation.MainAssembly;
- }
-
- List<IMember> CollectMembers (string code, string typeName, Predicate<IUnresolvedMember> filter1, Predicate<IMember> filter2,
- bool includeOverloads, bool matchDeclaringType)
- {
+ } while (!wrapper.IsLoaded);
+ var result = wrapper.Compilation.MainAssembly;
+ return result;
+ }
+
+ List<IMember> CollectMembers (string code, string typeName, Predicate<IUnresolvedMember> filter1, Predicate<IMember> filter2,
+ bool includeOverloads, bool matchDeclaringType)
+ {
var fileName = string.Format ("test{0}.csproj", Environment.TickCount); // use a new file name for each test to avoid conflicts
var project = new UnknownProject { FileName = fileName };
-
- var solution = new Solution ();
- solution.RootFolder.AddItem (project);
-
- var baseType = GenerateAssembly (project, code).GetTypeDefinition ("", typeName, 0);
-
- var members = baseType.GetMembers (filter1).Concat (baseType.GetConstructors (filter1));
- if (filter2 != null)
- members = members.Where (m => filter2(m));
- return MemberCollector.CollectMembers (solution, members.First (), ReferenceFinder.RefactoryScope.Solution,
- includeOverloads, matchDeclaringType).ToList ();
+
+ var solution = new Solution ();
+ solution.RootFolder.AddItem (project);
+
+ var baseType = GenerateAssembly (project, code).GetTypeDefinition ("", typeName, 0);
+
+ var members = baseType.GetMembers (filter1).Concat (baseType.GetConstructors (filter1));
+ if (filter2 != null)
+ members = members.Where (m => filter2(m));
+ var result = MemberCollector.CollectMembers (solution, members.First (), ReferenceFinder.RefactoryScope.Solution,
+ includeOverloads, matchDeclaringType).ToList ();
+ TypeSystemService.UnloadProject (project, true);
+ return result;
}
- List<IMember> CollectMembers (string code, string typeName, string memberName, Predicate<IMember> searchMemberFilter,
+ List<IMember> CollectMembers (string code, string typeName, string memberName, Predicate<IMember> searchMemberFilter,
bool includeOverloads, bool matchDeclaringType)
- {
- return CollectMembers (code, typeName, m => m.Name == memberName && m.DeclaringTypeDefinition.Name == typeName,
+ {
+ return CollectMembers (code, typeName, m => m.Name == memberName && m.DeclaringTypeDefinition.Name == typeName,
searchMemberFilter, includeOverloads, matchDeclaringType);
}
- void TestCollectMembers (string code, string typeName, string memberName, IEnumerable<Predicate<IMember>> expected,
+ void TestCollectMembers (string code, string typeName, string memberName, IEnumerable<Predicate<IMember>> expected,
Predicate<IMember> searchMemberFilter = null, bool includeOverloads = true, bool matchDeclaringType = false)
- {
+ {
var result = CollectMembers (code, typeName, memberName, searchMemberFilter, includeOverloads, matchDeclaringType);
VerifyResult (result, expected);
}
@@ -118,7 +120,7 @@ namespace MonoDevelop.Ide.FindInFiles
return m => m.Name == memberName && m.DeclaringType.Name == declaringType && (filter == null || filter (m));
}
- [Test]
+ [Test]
public void TestMethodOverrides ()
{
var code = @"
@@ -144,7 +146,7 @@ class D : A
TestCollectMembersForAllTypes (code, memberName, types);
}
- [Test]
+ [Test]
public void TestEventOverrides ()
{
var code = @"
@@ -198,7 +200,7 @@ class D : A
TestCollectMembersForAllTypes (code, memberName, types);
}
- [Test]
+ [Test]
public void TestSingleInterfaceImpl ()
{
var code = @"
@@ -326,7 +328,7 @@ class C : IB
TestCollectMembers (code, "IB", memberName, expected3);
}
- [Test]
+ [Test]
public void TestMethodOverloads ()
{
var code = @"
@@ -357,7 +359,7 @@ struct B
}
}
- [Test]
+ [Test]
public void TestIncludeOverloads ()
{
var code = @"
@@ -395,7 +397,7 @@ class D : A
}
- [Test]
+ [Test]
public void TestExcludeOverloads ()
{
var code = @"
@@ -441,7 +443,7 @@ class D : A
}
- [Test]
+ [Test]
public void TestInterfacePlusOverrides ()
{
string code = @"
@@ -509,37 +511,38 @@ class D : B, IA, IB { }
var result3 = MemberCollector.GetBaseTypes (new [] {A, B, C, D, IA, IB}).ToList ();
VerifyResult (result3, new Predicate<ITypeDefinition>[]
{t => t == A, t => t == IA, t => t == IB});
- }
-
- [Test]
- public void TestMatchDeclaringType ()
- {
- var code = @"
-class A
-{
- public virtual void Method() { };
- public void Method(int i) { };
-}
-class B : A
-{
- public override void Method() { };
-}";
- var memberName = "Method";
- var emptyParam = new string [] { };
- var intParam = new [] { "Int32" };
-
- var paramList = new [] { emptyParam, intParam };
- var expected1 = paramList.Select (p => GetMemberFilter ("A", memberName, m => MatchParameters (m, p))).ToList ();
- foreach (var filter in expected1)
- TestCollectMembers (code, "A", memberName, expected1, filter, true, true);
-
- var expected2 = new List<Predicate<IMember>> { GetMemberFilter ("A", memberName, m => MatchParameters (m, emptyParam)) };
- TestCollectMembers (code, "A", memberName, expected2, expected2 [0], false, true);
-
- var expected3 = new List<Predicate<IMember>> { GetMemberFilter ("B", memberName, m => MatchParameters (m, emptyParam)) };
- TestCollectMembers (code, "B", memberName, expected3, expected3 [0], false, true);
- }
-
+ TypeSystemService.UnloadProject (project, true);
+ }
+
+ [Test]
+ public void TestMatchDeclaringType ()
+ {
+ var code = @"
+class A
+{
+ public virtual void Method() { };
+ public void Method(int i) { };
+}
+class B : A
+{
+ public override void Method() { };
+}";
+ var memberName = "Method";
+ var emptyParam = new string [] { };
+ var intParam = new [] { "Int32" };
+
+ var paramList = new [] { emptyParam, intParam };
+ var expected1 = paramList.Select (p => GetMemberFilter ("A", memberName, m => MatchParameters (m, p))).ToList ();
+ foreach (var filter in expected1)
+ TestCollectMembers (code, "A", memberName, expected1, filter, true, true);
+
+ var expected2 = new List<Predicate<IMember>> { GetMemberFilter ("A", memberName, m => MatchParameters (m, emptyParam)) };
+ TestCollectMembers (code, "A", memberName, expected2, expected2 [0], false, true);
+
+ var expected3 = new List<Predicate<IMember>> { GetMemberFilter ("B", memberName, m => MatchParameters (m, emptyParam)) };
+ TestCollectMembers (code, "B", memberName, expected3, expected3 [0], false, true);
+ }
+
[Test]
public void TestConstructor ()
{