Browse Source

Show WCF service references in Projects window with different icons.

pull/22/head
Matt Ward 14 years ago
parent
commit
ce4caf8a33
  1. 3
      src/Main/Base/Project/ICSharpCode.SharpDevelop.csproj
  2. 6
      src/Main/Base/Project/Src/Gui/Pads/ProjectBrowser/TreeNodes/DirectoryNode.cs
  3. 9
      src/Main/Base/Project/Src/Gui/Pads/ProjectBrowser/TreeNodes/DirectoryNodeFactory.cs
  4. 18
      src/Main/Base/Project/Src/Gui/Pads/ProjectBrowser/TreeNodes/ServiceReferenceNode.cs
  5. 35
      src/Main/Base/Project/Src/Gui/Pads/ProjectBrowser/TreeNodes/ServiceReferencesFolderNode.cs
  6. 9
      src/Main/Base/Project/Src/Project/Items/ItemType.cs
  7. 44
      src/Main/Base/Project/Src/Project/Items/ServiceReferencesProjectItem.cs
  8. 3
      src/Main/Base/Project/Src/Project/MSBuildBasedProject.cs
  9. 10
      src/Main/Base/Test/ICSharpCode.SharpDevelop.Tests.csproj
  10. 95
      src/Main/Base/Test/ServiceReferences/DirectoryNodeFactoryTests.cs
  11. 49
      src/Main/Base/Test/ServiceReferences/ItemTypeTests.cs
  12. 40
      src/Main/Base/Test/ServiceReferences/MSBuildBasedProjectTests.cs
  13. 56
      src/Main/Base/Test/ServiceReferences/ServiceReferenceNodeTests.cs
  14. 100
      src/Main/Base/Test/ServiceReferences/ServiceReferencesFolderNodeTests.cs
  15. 86
      src/Main/Base/Test/ServiceReferences/ServiceReferencesProjectItemTests.cs

3
src/Main/Base/Project/ICSharpCode.SharpDevelop.csproj

@ -289,6 +289,8 @@ @@ -289,6 +289,8 @@
<Compile Include="Src\Gui\Pads\OutlinePad.cs" />
<Compile Include="Src\Gui\Pads\ProjectBrowser\Commands\SpecialFileNodeCommands.cs" />
<Compile Include="Src\Gui\Pads\ProjectBrowser\TreeNodes\DirectoryNodeFactory.cs" />
<Compile Include="Src\Gui\Pads\ProjectBrowser\TreeNodes\ServiceReferenceNode.cs" />
<Compile Include="Src\Gui\Pads\ProjectBrowser\TreeNodes\ServiceReferencesFolderNode.cs" />
<Compile Include="Src\Gui\Pads\TaskList\TaskListPadCommands.cs" />
<Compile Include="Src\Gui\Pads\ToolsPad.cs" />
<Compile Include="Src\Gui\ProgressCollector.cs" />
@ -320,6 +322,7 @@ @@ -320,6 +322,7 @@
<Compile Include="Src\Project\IBuildFeedbackSink.cs" />
<Compile Include="Src\Project\IProjectChangeWatcher.cs" />
<Compile Include="Src\Project\IProjectItemBackendStore.cs" />
<Compile Include="Src\Project\Items\ServiceReferencesProjectItem.cs" />
<Compile Include="Src\Project\MSBuildEngine\MSBuildAdditionalLogger.cs" />
<Compile Include="Src\Project\MSBuildEngine\MSBuildLoggerFilter.cs" />
<Compile Include="Src\Project\MSBuildEngine\SDConsoleLogger.cs" />

6
src/Main/Base/Project/Src/Gui/Pads/ProjectBrowser/TreeNodes/DirectoryNode.cs

@ -56,6 +56,8 @@ namespace ICSharpCode.SharpDevelop.Project @@ -56,6 +56,8 @@ namespace ICSharpCode.SharpDevelop.Project
public enum SpecialFolder {
None,
AppDesigner,
ServiceReference,
ServiceReferencesFolder,
WebReference,
WebReferencesFolder
}
@ -171,10 +173,12 @@ namespace ICSharpCode.SharpDevelop.Project @@ -171,10 +173,12 @@ namespace ICSharpCode.SharpDevelop.Project
OpenedImage = "ProjectBrowser.PropertyFolder.Open";
ClosedImage = "ProjectBrowser.PropertyFolder.Closed";
break;
case SpecialFolder.ServiceReferencesFolder:
case SpecialFolder.WebReferencesFolder:
OpenedImage = "ProjectBrowser.WebReferenceFolder.Open";
ClosedImage = "ProjectBrowser.WebReferenceFolder.Closed";
break;
case SpecialFolder.ServiceReference:
case SpecialFolder.WebReference:
OpenedImage = "ProjectBrowser.WebReference";
ClosedImage = "ProjectBrowser.WebReference";
@ -332,7 +336,7 @@ namespace ICSharpCode.SharpDevelop.Project @@ -332,7 +336,7 @@ namespace ICSharpCode.SharpDevelop.Project
continue;
}
if (item.ItemType == ItemType.Folder || item.ItemType == ItemType.WebReferences) {
if (item.ItemType.IsFolder()) {
DirectoryNode node;
if (directoryNodeList.TryGetValue(fileName, out node)) {
if (node.FileNodeStatus == FileNodeStatus.None) {

9
src/Main/Base/Project/Src/Gui/Pads/ProjectBrowser/TreeNodes/DirectoryNodeFactory.cs

@ -5,7 +5,7 @@ using System; @@ -5,7 +5,7 @@ using System;
using System.Collections.Generic;
using System.IO;
using System.Windows.Forms;
using Gui.Pads.ProjectBrowser.TreeNodes;
using ICSharpCode.Core;
using ICSharpCode.SharpDevelop.Project.Commands;
@ -16,7 +16,6 @@ namespace ICSharpCode.SharpDevelop.Project @@ -16,7 +16,6 @@ namespace ICSharpCode.SharpDevelop.Project
/// </summary>
public static class DirectoryNodeFactory
{
public static DirectoryNode CreateDirectoryNode(TreeNode parent, IProject project, string directory)
{
DirectoryNode node = new DirectoryNode(directory);
@ -28,6 +27,10 @@ namespace ICSharpCode.SharpDevelop.Project @@ -28,6 +27,10 @@ namespace ICSharpCode.SharpDevelop.Project
node = new WebReferencesFolderNode(directory);
} else if (parent != null && parent is WebReferencesFolderNode) {
node = new WebReferenceNode(directory);
} else if (ServiceReferencesProjectItem.IsServiceReferencesFolder(project, directory)) {
node = new ServiceReferencesFolderNode(directory);
} else if (parent is ServiceReferencesFolderNode) {
node = new ServiceReferenceNode(directory);
}
return node;
}
@ -38,6 +41,8 @@ namespace ICSharpCode.SharpDevelop.Project @@ -38,6 +41,8 @@ namespace ICSharpCode.SharpDevelop.Project
if (item is WebReferencesProjectItem) {
node = new WebReferencesFolderNode((WebReferencesProjectItem)item);
node.FileNodeStatus = status;
} else if (item is ServiceReferencesProjectItem) {
node = new ServiceReferencesFolderNode(item, status);
} else {
node = new DirectoryNode(item.FileName.Trim('\\', '/'), status);
node.ProjectItem = item;

18
src/Main/Base/Project/Src/Gui/Pads/ProjectBrowser/TreeNodes/ServiceReferenceNode.cs

@ -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;
}
}
}

35
src/Main/Base/Project/Src/Gui/Pads/ProjectBrowser/TreeNodes/ServiceReferencesFolderNode.cs

@ -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;
}
}
}

9
src/Main/Base/Project/Src/Project/Items/ItemType.cs

@ -51,6 +51,7 @@ namespace ICSharpCode.SharpDevelop.Project @@ -51,6 +51,7 @@ namespace ICSharpCode.SharpDevelop.Project
public static readonly ItemType Resource = new ItemType("Resource");
public static readonly ItemType Folder = new ItemType("Folder");
public static readonly ItemType WebReferences = new ItemType("WebReferences");
public static readonly ItemType ServiceReferences = new ItemType("WCFMetadata");
/// <summary>
/// Gets a collection of item types that are known not to be used for files.
@ -113,5 +114,13 @@ namespace ICSharpCode.SharpDevelop.Project @@ -113,5 +114,13 @@ namespace ICSharpCode.SharpDevelop.Project
{
return itemName.CompareTo(other.itemName);
}
public bool IsFolder()
{
return
(this == ItemType.Folder) ||
(this == ItemType.WebReferences) ||
(this == ItemType.ServiceReferences);
}
}
}

44
src/Main/Base/Project/Src/Project/Items/ServiceReferencesProjectItem.cs

@ -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);
}
}
}

3
src/Main/Base/Project/Src/Project/MSBuildBasedProject.cs

@ -177,6 +177,9 @@ namespace ICSharpCode.SharpDevelop.Project @@ -177,6 +177,9 @@ namespace ICSharpCode.SharpDevelop.Project
case "WebReferences":
return new WebReferencesProjectItem(this, item);
case "WCFMetadata":
return new ServiceReferencesProjectItem(this, item);
default:
if (this.AvailableFileItemTypes.Contains(item.ItemType)

10
src/Main/Base/Test/ICSharpCode.SharpDevelop.Tests.csproj

@ -40,6 +40,9 @@ @@ -40,6 +40,9 @@
<Reference Include="PresentationFramework">
<RequiredTargetFramework>3.0</RequiredTargetFramework>
</Reference>
<Reference Include="Rhino.Mocks">
<HintPath>..\..\..\AddIns\Analysis\MachineSpecifications\Libraries\RhinoMocks.3.6\Rhino.Mocks.dll</HintPath>
</Reference>
<Reference Include="System" />
<Reference Include="System.Core" />
<Reference Include="System.Data" />
@ -89,6 +92,12 @@ @@ -89,6 +92,12 @@
<Compile Include="OverloadFinding.cs" />
<Compile Include="SearchGenericClassTests.cs" />
<Compile Include="MemberLookupHelperTests.cs" />
<Compile Include="ServiceReferences\DirectoryNodeFactoryTests.cs" />
<Compile Include="ServiceReferences\ItemTypeTests.cs" />
<Compile Include="ServiceReferences\MSBuildBasedProjectTests.cs" />
<Compile Include="ServiceReferences\ServiceReferenceNodeTests.cs" />
<Compile Include="ServiceReferences\ServiceReferencesFolderNodeTests.cs" />
<Compile Include="ServiceReferences\ServiceReferencesProjectItemTests.cs" />
<Compile Include="StringTagProvider\MockProjectForTagProvider.cs" />
<Compile Include="StringTagProvider\NullProjectStringTagProviderTestFixture.cs" />
<Compile Include="StringTagProvider\ProjectTagsTestFixture.cs" />
@ -162,6 +171,7 @@ @@ -162,6 +171,7 @@
<Name>ICSharpCode.Core</Name>
</ProjectReference>
<Folder Include="Highlighting" />
<Folder Include="ServiceReferences" />
<Folder Include="StringTagProvider" />
<Folder Include="Utils" />
<Folder Include="Utils\Tests" />

95
src/Main/Base/Test/ServiceReferences/DirectoryNodeFactoryTests.cs

@ -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);
}
}
}

49
src/Main/Base/Test/ServiceReferences/ItemTypeTests.cs

@ -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);
}
}
}

40
src/Main/Base/Test/ServiceReferences/MSBuildBasedProjectTests.cs

@ -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);
}
}
}

56
src/Main/Base/Test/ServiceReferences/ServiceReferenceNodeTests.cs

@ -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);
}
}
}

100
src/Main/Base/Test/ServiceReferences/ServiceReferencesFolderNodeTests.cs

@ -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);
}
}
}

86
src/Main/Base/Test/ServiceReferences/ServiceReferencesProjectItemTests.cs

@ -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…
Cancel
Save