15 changed files with 560 additions and 3 deletions
@ -0,0 +1,18 @@
@@ -0,0 +1,18 @@
|
||||
// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
|
||||
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
|
||||
|
||||
using System; |
||||
using ICSharpCode.SharpDevelop.Project; |
||||
|
||||
namespace Gui.Pads.ProjectBrowser.TreeNodes |
||||
{ |
||||
public class ServiceReferenceNode : DirectoryNode |
||||
{ |
||||
public ServiceReferenceNode(string directory) |
||||
: base(directory) |
||||
{ |
||||
this.ContextmenuAddinTreePath = "/SharpDevelop/Pads/ProjectBrowser/ContextMenu/ServiceReferenceNode"; |
||||
this.SpecialFolder = SpecialFolder.ServiceReference; |
||||
} |
||||
} |
||||
} |
@ -0,0 +1,35 @@
@@ -0,0 +1,35 @@
|
||||
// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
|
||||
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
|
||||
|
||||
using System; |
||||
using ICSharpCode.SharpDevelop.Project; |
||||
|
||||
namespace Gui.Pads.ProjectBrowser.TreeNodes |
||||
{ |
||||
public class ServiceReferencesFolderNode : DirectoryNode |
||||
{ |
||||
public ServiceReferencesFolderNode(ProjectItem projectItem, FileNodeStatus status) |
||||
: this((ServiceReferencesProjectItem)projectItem, status) |
||||
{ |
||||
} |
||||
|
||||
public ServiceReferencesFolderNode(ServiceReferencesProjectItem projectItem, FileNodeStatus status) |
||||
: this(projectItem.Directory, status) |
||||
{ |
||||
this.ProjectItem = projectItem; |
||||
} |
||||
|
||||
public ServiceReferencesFolderNode(string directory) |
||||
: this(directory, FileNodeStatus.None) |
||||
{ |
||||
} |
||||
|
||||
public ServiceReferencesFolderNode(string directory, FileNodeStatus status) |
||||
: base(directory, status) |
||||
{ |
||||
this.ContextmenuAddinTreePath = "/SharpDevelop/Pads/ProjectBrowser/ContextMenu/ServiceReferencesFolderNode"; |
||||
this.sortOrder = 0; |
||||
this.SpecialFolder = SpecialFolder.ServiceReferencesFolder; |
||||
} |
||||
} |
||||
} |
@ -0,0 +1,44 @@
@@ -0,0 +1,44 @@
|
||||
// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
|
||||
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
|
||||
|
||||
using System; |
||||
using System.ComponentModel; |
||||
using System.IO; |
||||
using ICSharpCode.Core; |
||||
|
||||
namespace ICSharpCode.SharpDevelop.Project |
||||
{ |
||||
public class ServiceReferencesProjectItem : FileProjectItem |
||||
{ |
||||
public ServiceReferencesProjectItem(IProject project) |
||||
: base(project, ItemType.ServiceReferences) |
||||
{ |
||||
} |
||||
|
||||
internal ServiceReferencesProjectItem(IProject project, IProjectItemBackendStore buildItem) |
||||
: base(project, buildItem) |
||||
{ |
||||
} |
||||
|
||||
[Browsable(false)] |
||||
public string Directory { |
||||
get { return Path.Combine(Project.Directory, Include).Trim('\\'); } |
||||
} |
||||
|
||||
public static bool IsServiceReferencesFolder(IProject project, string folder) |
||||
{ |
||||
foreach (ProjectItem item in project.GetItemsOfType(ItemType.ServiceReferences)) { |
||||
var serviceReferenceProjectItem = (ServiceReferencesProjectItem)item; |
||||
if (serviceReferenceProjectItem.IsDirectoryMatch(folder)) { |
||||
return true; |
||||
} |
||||
} |
||||
return false; |
||||
} |
||||
|
||||
public bool IsDirectoryMatch(string directory) |
||||
{ |
||||
return FileUtility.IsEqualFileName(this.Directory, directory); |
||||
} |
||||
} |
||||
} |
@ -0,0 +1,95 @@
@@ -0,0 +1,95 @@
|
||||
// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
|
||||
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
|
||||
|
||||
using System; |
||||
using Gui.Pads.ProjectBrowser.TreeNodes; |
||||
using ICSharpCode.SharpDevelop.Project; |
||||
using ICSharpCode.SharpDevelop.Tests.WebReferences; |
||||
using NUnit.Framework; |
||||
|
||||
namespace ICSharpCode.SharpDevelop.Tests.ServiceReferences |
||||
{ |
||||
[TestFixture] |
||||
public class DirectoryNodeFactoryTests |
||||
{ |
||||
MSBuildBasedProject project; |
||||
|
||||
void CreateProject() |
||||
{ |
||||
project = WebReferenceTestHelper.CreateTestProject("C#"); |
||||
} |
||||
|
||||
ServiceReferencesProjectItem AddWCFMetadataProjectItemToProject() |
||||
{ |
||||
var projectItem = new ServiceReferencesProjectItem(project); |
||||
projectItem.Include = @"Service References\"; |
||||
ProjectService.AddProjectItem(project, projectItem); |
||||
return projectItem; |
||||
} |
||||
|
||||
[Test] |
||||
public void CreateDirectoryNode_WCFMetadataProjectItem_CreatesServiceReferencesFolderNode() |
||||
{ |
||||
CreateProject(); |
||||
ServiceReferencesProjectItem projectItem = AddWCFMetadataProjectItemToProject(); |
||||
|
||||
DirectoryNode node = DirectoryNodeFactory.CreateDirectoryNode(projectItem, FileNodeStatus.None); |
||||
|
||||
Assert.IsTrue(node is ServiceReferencesFolderNode); |
||||
} |
||||
|
||||
[Test] |
||||
public void CreateDirectoryNode_WCFMetadataProjectItem_FileNodeStatusPassedToDirectoryNodeCreated() |
||||
{ |
||||
CreateProject(); |
||||
ServiceReferencesProjectItem projectItem = AddWCFMetadataProjectItemToProject(); |
||||
|
||||
DirectoryNode node = DirectoryNodeFactory.CreateDirectoryNode(projectItem, FileNodeStatus.Missing); |
||||
FileNodeStatus nodeStatus = node.FileNodeStatus; |
||||
|
||||
Assert.AreEqual(FileNodeStatus.Missing, nodeStatus); |
||||
} |
||||
|
||||
[Test] |
||||
public void CreateDirectoryNode_WCFMetadataProjectItem_ProjectItemPassedToDirectoryNodeCreated() |
||||
{ |
||||
CreateProject(); |
||||
ServiceReferencesProjectItem expectedProjectItem = AddWCFMetadataProjectItemToProject(); |
||||
|
||||
DirectoryNode node = DirectoryNodeFactory.CreateDirectoryNode(expectedProjectItem, FileNodeStatus.None); |
||||
ProjectItem projectItem = node.ProjectItem; |
||||
|
||||
Assert.AreEqual(expectedProjectItem, projectItem); |
||||
} |
||||
|
||||
[Test] |
||||
public void CreateDirectoryNode_ParentIsServiceReferencesFolderNode_CreatesServiceReferenceNode() |
||||
{ |
||||
CreateProject(); |
||||
ServiceReferencesProjectItem expectedProjectItem = AddWCFMetadataProjectItemToProject(); |
||||
DirectoryNode parentServiceReferencesFolderNode = |
||||
DirectoryNodeFactory.CreateDirectoryNode(expectedProjectItem, FileNodeStatus.None); |
||||
string directory = "ServiceReference1"; |
||||
|
||||
ServiceReferenceNode node = |
||||
DirectoryNodeFactory.CreateDirectoryNode(parentServiceReferencesFolderNode, project, directory) as ServiceReferenceNode; |
||||
|
||||
Assert.AreEqual("ServiceReference1", node.Directory); |
||||
} |
||||
|
||||
[Test] |
||||
public void CreateDirectoryNode_ProjectHasServiceReferencesItemAndDirectoryMatchesServiceReferencesPath_CreatesServiceReferencesFolderNode() |
||||
{ |
||||
CreateProject(); |
||||
project.FileName = @"d:\projects\MyProject\MyProject.csproj"; |
||||
ServiceReferencesProjectItem projectItem = AddWCFMetadataProjectItemToProject(); |
||||
projectItem.Include = @"Service References\"; |
||||
|
||||
string directory = @"d:\projects\MyProject\Service References"; |
||||
ServiceReferencesFolderNode referencesNode = |
||||
DirectoryNodeFactory.CreateDirectoryNode(null, project, directory) as ServiceReferencesFolderNode; |
||||
|
||||
Assert.AreEqual(directory, referencesNode.Directory); |
||||
} |
||||
} |
||||
} |
@ -0,0 +1,49 @@
@@ -0,0 +1,49 @@
|
||||
// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
|
||||
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
|
||||
|
||||
using System; |
||||
using ICSharpCode.SharpDevelop.Project; |
||||
using NUnit.Framework; |
||||
|
||||
namespace ICSharpCode.SharpDevelop.Tests.ServiceReferences |
||||
{ |
||||
[TestFixture] |
||||
public class ItemTypeTests |
||||
{ |
||||
[Test] |
||||
public void IsFolder_ItemTypeIsFolder_ReturnsTrue() |
||||
{ |
||||
var itemType = ItemType.Folder; |
||||
bool result = itemType.IsFolder(); |
||||
|
||||
Assert.IsTrue(result); |
||||
} |
||||
|
||||
[Test] |
||||
public void IsFolder_ItemTypeIsResource_ReturnsFalse() |
||||
{ |
||||
var itemType = ItemType.Resource; |
||||
bool result = itemType.IsFolder(); |
||||
|
||||
Assert.IsFalse(result); |
||||
} |
||||
|
||||
[Test] |
||||
public void IsFolder_ItemTypeIsWebReferences_ReturnsTrue() |
||||
{ |
||||
var itemType = ItemType.WebReferences; |
||||
bool result = itemType.IsFolder(); |
||||
|
||||
Assert.IsTrue(result); |
||||
} |
||||
|
||||
[Test] |
||||
public void IsFolder_ItemTypeIsServiceReferences_ReturnsTrue() |
||||
{ |
||||
var itemType = ItemType.ServiceReferences; |
||||
bool result = itemType.IsFolder(); |
||||
|
||||
Assert.IsTrue(result); |
||||
} |
||||
} |
||||
} |
@ -0,0 +1,40 @@
@@ -0,0 +1,40 @@
|
||||
// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
|
||||
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
|
||||
|
||||
using System; |
||||
using ICSharpCode.SharpDevelop.Project; |
||||
using ICSharpCode.SharpDevelop.Tests.WebReferences; |
||||
using NUnit.Framework; |
||||
using Rhino.Mocks; |
||||
|
||||
namespace ICSharpCode.SharpDevelop.Tests.ServiceReferences |
||||
{ |
||||
[TestFixture] |
||||
public class MSBuildBasedProjectTests |
||||
{ |
||||
MSBuildBasedProject project; |
||||
IProjectItemBackendStore backendStore; |
||||
|
||||
void CreateProject() |
||||
{ |
||||
project = WebReferenceTestHelper.CreateTestProject("C#"); |
||||
} |
||||
|
||||
void CreateProjectItemBackendStore() |
||||
{ |
||||
backendStore = MockRepository.GenerateStub<IProjectItemBackendStore>(); |
||||
} |
||||
|
||||
[Test] |
||||
public void Create_ItemTypeIsWCFMetadata_ReturnsServiceReferenceProjectItem() |
||||
{ |
||||
CreateProject(); |
||||
CreateProjectItemBackendStore(); |
||||
backendStore.ItemType = new ItemType("WCFMetadata"); |
||||
|
||||
var projectItem = project.CreateProjectItem(backendStore) as ServiceReferencesProjectItem; |
||||
|
||||
Assert.IsNotNull(projectItem); |
||||
} |
||||
} |
||||
} |
@ -0,0 +1,56 @@
@@ -0,0 +1,56 @@
|
||||
// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
|
||||
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
|
||||
|
||||
using System; |
||||
using Gui.Pads.ProjectBrowser.TreeNodes; |
||||
using ICSharpCode.SharpDevelop.Project; |
||||
using NUnit.Framework; |
||||
|
||||
namespace ICSharpCode.SharpDevelop.Tests.ServiceReferences |
||||
{ |
||||
[TestFixture] |
||||
public class ServiceReferenceNodeTests |
||||
{ |
||||
ServiceReferenceNode referenceNode; |
||||
|
||||
void CreateNode() |
||||
{ |
||||
referenceNode = new ServiceReferenceNode("ServiceReference1"); |
||||
referenceNode.FileNodeStatus = FileNodeStatus.InProject; |
||||
} |
||||
|
||||
[Test] |
||||
public void SpecialFolder_CustomSpecialFolderUsedByServiceReferenceNode_ReturnsServiceReferenceSpecialFolder() |
||||
{ |
||||
CreateNode(); |
||||
|
||||
Assert.AreEqual(SpecialFolder.ServiceReference, referenceNode.SpecialFolder); |
||||
} |
||||
|
||||
[Test] |
||||
public void ContextmenuAddinTreePath_CustomContextMenuPathUsed_ReturnsServiceReferenceContextMenuAddinTreePath() |
||||
{ |
||||
CreateNode(); |
||||
|
||||
string expectedPath = "/SharpDevelop/Pads/ProjectBrowser/ContextMenu/ServiceReferenceNode"; |
||||
|
||||
Assert.AreEqual(expectedPath, referenceNode.ContextmenuAddinTreePath); |
||||
} |
||||
|
||||
[Test] |
||||
public void OpenedImage_CustomOpenedImageUsed_ReturnsWebReferenceImage() |
||||
{ |
||||
CreateNode(); |
||||
|
||||
Assert.AreEqual("ProjectBrowser.WebReference", referenceNode.OpenedImage); |
||||
} |
||||
|
||||
[Test] |
||||
public void ClosedImage_CustomOpenedImageUsed_ReturnsWebReferenceImage() |
||||
{ |
||||
CreateNode(); |
||||
|
||||
Assert.AreEqual("ProjectBrowser.WebReference", referenceNode.ClosedImage); |
||||
} |
||||
} |
||||
} |
@ -0,0 +1,100 @@
@@ -0,0 +1,100 @@
|
||||
// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
|
||||
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
|
||||
|
||||
using System; |
||||
using Gui.Pads.ProjectBrowser.TreeNodes; |
||||
using ICSharpCode.SharpDevelop.Project; |
||||
using ICSharpCode.SharpDevelop.Tests.WebReferences; |
||||
using NUnit.Framework; |
||||
|
||||
namespace ICSharpCode.SharpDevelop.Tests.ServiceReferences |
||||
{ |
||||
[TestFixture] |
||||
public class ServiceReferencesFolderNodeTests |
||||
{ |
||||
MSBuildBasedProject project; |
||||
ServiceReferencesProjectItem projectItem; |
||||
ServiceReferencesFolderNode folderNode; |
||||
|
||||
void CreateProject() |
||||
{ |
||||
project = WebReferenceTestHelper.CreateTestProject("C#"); |
||||
} |
||||
|
||||
void CreateServiceReferenceProjectItem() |
||||
{ |
||||
CreateProject(); |
||||
projectItem = new ServiceReferencesProjectItem(project); |
||||
} |
||||
|
||||
void CreateFolderNode() |
||||
{ |
||||
CreateFolderNode(FileNodeStatus.None); |
||||
} |
||||
|
||||
void CreateFolderNode(FileNodeStatus status) |
||||
{ |
||||
folderNode = new ServiceReferencesFolderNode(projectItem, status); |
||||
} |
||||
|
||||
[Test] |
||||
public void Directory_ProjectItemHasServiceReferenceDirectory_ReturnsFullPathToServiceReferencesDirectory() |
||||
{ |
||||
CreateServiceReferenceProjectItem(); |
||||
project.FileName = @"d:\projects\MyProject\MyProject.csproj"; |
||||
projectItem.Include = @"Service References\"; |
||||
CreateFolderNode(); |
||||
|
||||
string directory = folderNode.Directory; |
||||
|
||||
Assert.AreEqual(@"d:\projects\MyProject\Service References", directory); |
||||
} |
||||
|
||||
[Test] |
||||
public void SortOrder_ServiceReferencesFolderNodeShouldAppearAtTopOfProjectsWindow_ReturnsZero() |
||||
{ |
||||
CreateServiceReferenceProjectItem(); |
||||
CreateFolderNode(); |
||||
|
||||
Assert.AreEqual(0, folderNode.SortOrder); |
||||
} |
||||
|
||||
[Test] |
||||
public void SpecialFolder_ServiceReferencesFolderNodeIdentifiedAsSpecialFolder_ReturnsSpecialFolderServicesReferencesFolder() |
||||
{ |
||||
CreateServiceReferenceProjectItem(); |
||||
CreateFolderNode(); |
||||
|
||||
Assert.AreEqual(SpecialFolder.ServiceReferencesFolder, folderNode.SpecialFolder); |
||||
} |
||||
|
||||
[Test] |
||||
public void ContextMenuAddinTreePath_ServiceReferencesFolderNodeHasContextMenuAddinTreePath_ReturnsContextMenuAddinTreePathForServiceReferences() |
||||
{ |
||||
CreateServiceReferenceProjectItem(); |
||||
CreateFolderNode(); |
||||
|
||||
string expectedPath = "/SharpDevelop/Pads/ProjectBrowser/ContextMenu/ServiceReferencesFolderNode"; |
||||
|
||||
Assert.AreEqual(expectedPath, folderNode.ContextmenuAddinTreePath); |
||||
} |
||||
|
||||
[Test] |
||||
public void OpenedImage_ServiceReferencesFolderNodeHasCustomIcon_ReturnsWebReferenceFolderIcon() |
||||
{ |
||||
CreateServiceReferenceProjectItem(); |
||||
CreateFolderNode(FileNodeStatus.InProject); |
||||
|
||||
Assert.AreEqual("ProjectBrowser.WebReferenceFolder.Open", folderNode.OpenedImage); |
||||
} |
||||
|
||||
[Test] |
||||
public void ClosedImage_ServiceReferencesFolderNodeHasCustomIcon_ReturnsWebReferenceFolderIcon() |
||||
{ |
||||
CreateServiceReferenceProjectItem(); |
||||
CreateFolderNode(FileNodeStatus.InProject); |
||||
|
||||
Assert.AreEqual("ProjectBrowser.WebReferenceFolder.Closed", folderNode.ClosedImage); |
||||
} |
||||
} |
||||
} |
@ -0,0 +1,86 @@
@@ -0,0 +1,86 @@
|
||||
// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
|
||||
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
|
||||
|
||||
using System; |
||||
using ICSharpCode.SharpDevelop.Project; |
||||
using ICSharpCode.SharpDevelop.Tests.WebReferences; |
||||
using NUnit.Framework; |
||||
|
||||
namespace ICSharpCode.SharpDevelop.Tests.ServiceReferences |
||||
{ |
||||
[TestFixture] |
||||
public class ServiceReferencesProjectItemTests |
||||
{ |
||||
MSBuildBasedProject project; |
||||
ServiceReferencesProjectItem projectItem; |
||||
|
||||
void CreateProjectItem() |
||||
{ |
||||
project = WebReferenceTestHelper.CreateTestProject("C#"); |
||||
projectItem = new ServiceReferencesProjectItem(project); |
||||
projectItem.Include = @"Service References\"; |
||||
ProjectService.AddProjectItem(project, projectItem); |
||||
} |
||||
|
||||
[Test] |
||||
public void ItemType_DefaultValue_IsItemTypeServiceReferences() |
||||
{ |
||||
CreateProjectItem(); |
||||
|
||||
ItemType itemType = projectItem.ItemType; |
||||
|
||||
Assert.AreEqual(ItemType.ServiceReferences, itemType); |
||||
} |
||||
|
||||
[Test] |
||||
public void Directory_ProjectItemIncludePathEndsWithForwardSlash_ReturnsFullPathOfServiceReferencesFolder() |
||||
{ |
||||
CreateProjectItem(); |
||||
project.FileName = @"C:\Projects\MyProject\MyProject.csproj"; |
||||
projectItem.Include = @"Service References\"; |
||||
|
||||
string directory = projectItem.Directory; |
||||
|
||||
Assert.AreEqual(@"C:\Projects\MyProject\Service References", directory); |
||||
} |
||||
|
||||
[Test] |
||||
public void IsServiceReferencesFolder_FolderMatchesServiceReferencesFolder_ReturnsTrue() |
||||
{ |
||||
CreateProjectItem(); |
||||
project.FileName = @"C:\Projects\MyProject\MyProject.csproj"; |
||||
projectItem.Include = @"Service References\"; |
||||
string folder = @"C:\Projects\MyProject\Service References"; |
||||
|
||||
bool result = ServiceReferencesProjectItem.IsServiceReferencesFolder(project, folder); |
||||
|
||||
Assert.IsTrue(result); |
||||
} |
||||
|
||||
[Test] |
||||
public void IsServiceReferencesFolder_FolderDoesNotMatcheServiceReferencesFolder_ReturnsFalse() |
||||
{ |
||||
CreateProjectItem(); |
||||
project.FileName = @"C:\Projects\MyProject\MyProject.csproj"; |
||||
projectItem.Include = @"Service References\"; |
||||
string folder = @"d:\projects\MyProject\Test"; |
||||
|
||||
bool result = ServiceReferencesProjectItem.IsServiceReferencesFolder(project, folder); |
||||
|
||||
Assert.IsFalse(result); |
||||
} |
||||
|
||||
[Test] |
||||
public void IsServiceReferencesFolder_FolderMatchesServiceReferencesFolderButWithDifferentCase_ReturnsTrue() |
||||
{ |
||||
CreateProjectItem(); |
||||
project.FileName = @"C:\Projects\MyProject\MyProject.csproj"; |
||||
projectItem.Include = @"Service References\"; |
||||
string folder = @"c:\projects\myproject\service references"; |
||||
|
||||
bool result = ServiceReferencesProjectItem.IsServiceReferencesFolder(project, folder); |
||||
|
||||
Assert.IsTrue(result); |
||||
} |
||||
} |
||||
} |
Loading…
Reference in new issue