Browse Source

Added unit test for category sorting.

newNRvisualizers
Mike Krüger 14 years ago
parent
commit
1c46d7d4c5
  1. 6
      ICSharpCode.NRefactory.CSharp/Completion/CompletionDataWrapper.cs
  2. 45
      ICSharpCode.NRefactory.Tests/CSharp/CodeCompletion/CodeCompletionBugTests.cs

6
ICSharpCode.NRefactory.CSharp/Completion/CompletionDataWrapper.cs

@ -209,14 +209,14 @@ namespace ICSharpCode.NRefactory.CSharp.Completion @@ -209,14 +209,14 @@ namespace ICSharpCode.NRefactory.CSharp.Completion
{
var compareCategory = other as TypeCompletionCategory;
if (compareCategory == null)
return 1;
return -1;
if (Type.ReflectionName == compareCategory.Type.ReflectionName)
return 0;
if (Type.GetAllBaseTypes ().Any (t => t.ReflectionName == compareCategory.Type.ReflectionName))
return 1;
return -1;
return -1;
return 1;
}
}
}

45
ICSharpCode.NRefactory.Tests/CSharp/CodeCompletion/CodeCompletionBugTests.cs

@ -4157,5 +4157,50 @@ class Program @@ -4157,5 +4157,50 @@ class Program
Assert.IsNotNull (provider.Find ("args"), "'args' not found.");
});
}
[Test()]
public void TestCodeCompletionCategorySorting ()
{
CompletionDataList provider = CreateProvider (
@"class CClass : BClass
{
public int C;
}
class BClass : AClass
{
public int B;
}
class AClass
{
public int A;
}
class Test
{
public void TestMethod ()
{
CClass a;
$a.$
}
}");
Assert.IsNotNull (provider, "provider not found.");
var list = new List<CompletionCategory> ();
for (int i = 0; i < provider.Count; i++) {
if (list.Contains (provider[i].CompletionCategory))
continue;
list.Add (provider[i].CompletionCategory);
}
Assert.AreEqual (4, list.Count);
list.Sort ();
Assert.AreEqual ("CClass", list[0].DisplayText);
Assert.AreEqual ("BClass", list[1].DisplayText);
Assert.AreEqual ("AClass", list[2].DisplayText);
Assert.AreEqual ("System.Object", list[3].DisplayText);
}
}
}

Loading…
Cancel
Save