From 29171ff0623fe2969cc86198109ff82a22e0cc24 Mon Sep 17 00:00:00 2001 From: Matt Ward Date: Fri, 25 May 2012 22:15:55 +0100 Subject: [PATCH] Implement EnvDTE.CodeElements.Item method. --- .../Project/Src/EnvDTE/CodeElements.cs | 2 ++ .../Src/EnvDTE/CodeElementsInNamespace.cs | 19 ++++++++++++++++ .../EnvDTE/CodeElementsInNamespaceTests.cs | 22 +++++++++++++++++++ 3 files changed, 43 insertions(+) diff --git a/src/AddIns/Misc/PackageManagement/Project/Src/EnvDTE/CodeElements.cs b/src/AddIns/Misc/PackageManagement/Project/Src/EnvDTE/CodeElements.cs index 15ce405c52..6f51e8b134 100644 --- a/src/AddIns/Misc/PackageManagement/Project/Src/EnvDTE/CodeElements.cs +++ b/src/AddIns/Misc/PackageManagement/Project/Src/EnvDTE/CodeElements.cs @@ -11,5 +11,7 @@ namespace ICSharpCode.PackageManagement.EnvDTE new IEnumerator GetEnumerator(); int Count { get; } + + CodeElement Item(object index); } } diff --git a/src/AddIns/Misc/PackageManagement/Project/Src/EnvDTE/CodeElementsInNamespace.cs b/src/AddIns/Misc/PackageManagement/Project/Src/EnvDTE/CodeElementsInNamespace.cs index 34958b0945..2b65082e2d 100644 --- a/src/AddIns/Misc/PackageManagement/Project/Src/EnvDTE/CodeElementsInNamespace.cs +++ b/src/AddIns/Misc/PackageManagement/Project/Src/EnvDTE/CodeElementsInNamespace.cs @@ -4,6 +4,7 @@ using System; using System.Collections; using System.Collections.Generic; +using System.Linq; using ICSharpCode.SharpDevelop.Dom; @@ -71,5 +72,23 @@ namespace ICSharpCode.PackageManagement.EnvDTE { return codeElements.GetEnumerator(); } + + public CodeElement Item(object index) + { + if (index is int) { + return Item((int)index); + } + return Item((string)index); + } + + CodeElement Item(int index) + { + return codeElements[index - 1]; + } + + CodeElement Item(string name) + { + return codeElements.Single(element => element.Name == name); + } } } diff --git a/src/AddIns/Misc/PackageManagement/Test/Src/EnvDTE/CodeElementsInNamespaceTests.cs b/src/AddIns/Misc/PackageManagement/Test/Src/EnvDTE/CodeElementsInNamespaceTests.cs index 20f9f8258a..4f56846cfa 100644 --- a/src/AddIns/Misc/PackageManagement/Test/Src/EnvDTE/CodeElementsInNamespaceTests.cs +++ b/src/AddIns/Misc/PackageManagement/Test/Src/EnvDTE/CodeElementsInNamespaceTests.cs @@ -110,5 +110,27 @@ namespace PackageManagement.Tests.EnvDTE Assert.AreEqual("GrandChild", grandChildNamespace.Name); } + + [Test] + public void Item_OneClassCompletionEntryAndFirstItemSelected_ReturnsOneCodeClass() + { + helper.AddClassToProjectContent("Test", "Test.MyClass"); + CreateCodeElements("Test"); + + CodeClass2 codeClass = codeElements.Item(1) as CodeClass2; + + Assert.AreEqual("Test.MyClass", codeClass.FullName); + } + + [Test] + public void Item_OneClassCompletionEntryAndItemSelectedByName_ReturnsOneCodeClass() + { + helper.AddClassToProjectContent("Test", "Test.MyClass"); + CreateCodeElements("Test"); + + CodeClass2 codeClass = codeElements.Item("MyClass") as CodeClass2; + + Assert.AreEqual("Test.MyClass", codeClass.FullName); + } } }