You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
131 lines
4.2 KiB
131 lines
4.2 KiB
// 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.CodeDom.Compiler; |
|
using System.Collections.Generic; |
|
using System.Linq; |
|
using ICSharpCode.SharpDevelop.Dom; |
|
using ICSharpCode.SharpDevelop.Gui.Dialogs.ReferenceDialog.ServiceReference; |
|
using ICSharpCode.SharpDevelop.Project; |
|
using ICSharpCode.SharpDevelop.Tests.WebReferences; |
|
using Microsoft.CSharp; |
|
using NUnit.Framework; |
|
using Rhino.Mocks; |
|
|
|
namespace ICSharpCode.SharpDevelop.Tests.ServiceReferences |
|
{ |
|
[TestFixture] |
|
public class ProjectWithServiceReferencesTests |
|
{ |
|
IProject fakeProject; |
|
ProjectWithServiceReferences project; |
|
List<ProjectItem> projectItemsAddedToProject; |
|
MSBuildBasedProject msbuildProject; |
|
|
|
void CreateProject() |
|
{ |
|
projectItemsAddedToProject = new List<ProjectItem>(); |
|
fakeProject = MockRepository.GenerateStub<IProject>(); |
|
project = new ProjectWithServiceReferences(fakeProject); |
|
} |
|
|
|
void CreateProjectWithMSBuildProject() |
|
{ |
|
msbuildProject = WebReferenceTestHelper.CreateTestProject("C#"); |
|
project = new ProjectWithServiceReferences(msbuildProject); |
|
} |
|
|
|
void SetProjectDirectory(string directory) |
|
{ |
|
fakeProject.Stub(p => p.Directory).Return(directory); |
|
} |
|
|
|
void SetProjectCodeDomProvider(LanguageProperties languageProperties) |
|
{ |
|
fakeProject.Stub(p => p.LanguageProperties).Return(languageProperties); |
|
} |
|
|
|
ProjectItem GetFirstServiceReferenceFileInMSBuildProject(string fileName) |
|
{ |
|
return msbuildProject.Items.SingleOrDefault(item => item.FileName == fileName); |
|
} |
|
|
|
ServiceReferencesProjectItem GetFirstWCFMetadataItemInMSBuildProject() |
|
{ |
|
return msbuildProject.GetItemsOfType(ItemType.ServiceReferences).SingleOrDefault() as ServiceReferencesProjectItem; |
|
} |
|
|
|
[Test] |
|
public void ServiceReferencesFolder_ProjectHasNoServiceReferences_ReturnsServiceReferencesFolderAsProjectSubFolder() |
|
{ |
|
CreateProject(); |
|
SetProjectDirectory(@"d:\projects\MyProject"); |
|
|
|
string folder = project.ServiceReferencesFolder; |
|
string expectedFolder = @"d:\projects\MyProject\Service References"; |
|
|
|
Assert.AreEqual(expectedFolder, folder); |
|
} |
|
|
|
[Test] |
|
public void CodeDomProvider_UnderlyingProjectUsesCSharpCodeDomProvider_ProjectUsesCSharpCodeDomProvider() |
|
{ |
|
CreateProject(); |
|
SetProjectCodeDomProvider(LanguageProperties.CSharp); |
|
|
|
ICodeDomProvider codeDomProvider = project.CodeDomProvider; |
|
string fileExtension = codeDomProvider.FileExtension; |
|
|
|
Assert.AreEqual("cs", fileExtension); |
|
} |
|
|
|
[Test] |
|
public void GetServiceReferenceProxyFileName_ProjectHasNoServiceReferences_ReturnsFileNameInServiceReferencesFolderWithSubFolderNamedAfterServiceReference() |
|
{ |
|
CreateProject(); |
|
SetProjectDirectory(@"d:\projects\MyProject"); |
|
|
|
string fileName = project.GetServiceReferenceFileName("Service1"); |
|
string expectedFileName = @"d:\projects\MyProject\Service References\Service1\Reference.cs"; |
|
|
|
Assert.AreEqual(expectedFileName, fileName); |
|
} |
|
|
|
[Test] |
|
public void AddServiceReferenceProxyFile_ProjectHasNoServiceReferences_ProxyFileAddedToProjectAsFileToCompile() |
|
{ |
|
CreateProjectWithMSBuildProject(); |
|
|
|
string proxyFileName = @"d:\projects\MyProject\Service References\Service1\Reference.cs"; |
|
project.AddServiceReferenceProxyFile(proxyFileName); |
|
|
|
ProjectItem item = GetFirstServiceReferenceFileInMSBuildProject(proxyFileName); |
|
|
|
Assert.AreEqual(ItemType.Compile, item.ItemType); |
|
} |
|
|
|
[Test] |
|
public void Save_SaveProjectChanges_UnderlyingProjectIsSaved() |
|
{ |
|
CreateProject(); |
|
|
|
project.Save(); |
|
|
|
fakeProject.AssertWasCalled(p => p.Save()); |
|
} |
|
|
|
[Test] |
|
public void AddServiceReferenceProxyFile_ProjectHasNoServiceReferences_WCFMetadataItemAddedToProjectForServiceReferencesFolder() |
|
{ |
|
CreateProjectWithMSBuildProject(); |
|
|
|
string proxyFileName = @"d:\projects\MyProject\Service References\Service1\Reference.cs"; |
|
project.AddServiceReferenceProxyFile(proxyFileName); |
|
|
|
ServiceReferencesProjectItem item = GetFirstWCFMetadataItemInMSBuildProject(); |
|
|
|
Assert.AreEqual("Service References", item.Include); |
|
} |
|
} |
|
}
|
|
|