public void SetUpFixture() { MSBuildBasedProject project = WebReferenceTestHelper.CreateTestProject("C#"); project.FileName = Path.Combine(projectDirectory, "foo.csproj"); project.AppDesignerFolder = "Properties"; WebReferencesProjectItem webReferencesItem = new WebReferencesProjectItem(project); webReferencesItem.Include = "Web References\\"; ProjectService.AddProjectItem(project, webReferencesItem); FileProjectItem fileItem = new FileProjectItem(project, ItemType.Folder); fileItem.Include = "MissingFolder\\"; ProjectService.AddProjectItem(project, fileItem); ProjectNode projectNode = new ProjectNode(project); appDesignerFolderNode = DirectoryNodeFactory.CreateDirectoryNode(projectNode, project, Path.Combine(projectDirectory, "Properties")); ordinaryFolderNode = DirectoryNodeFactory.CreateDirectoryNode(projectNode, project, Path.Combine(project.Directory, "Test")); webReferencesFolderNode = DirectoryNodeFactory.CreateDirectoryNode(projectNode, project, Path.Combine(project.Directory, webReferencesItem.Include)); webReferenceNode = DirectoryNodeFactory.CreateDirectoryNode(webReferencesFolderNode, project, Path.Combine(Path.Combine(project.Directory, webReferencesItem.Include), "localhost")); missingWebReferencesFolderNode = DirectoryNodeFactory.CreateDirectoryNode(webReferencesItem, FileNodeStatus.Missing); missingOrdinaryFolderNode = DirectoryNodeFactory.CreateDirectoryNode(fileItem, FileNodeStatus.Missing); }
public void CreateDirectoryNode_WCFMetadataProjectItem_CreatesServiceReferencesFolderNode() { CreateProject(); ServiceReferencesProjectItem projectItem = AddWCFMetadataProjectItemToProject(); DirectoryNode node = DirectoryNodeFactory.CreateDirectoryNode(projectItem, FileNodeStatus.None); Assert.IsTrue(node is ServiceReferencesFolderNode); }
public void CreateDirectoryNode_WCFMetadataProjectItem_ProjectItemPassedToDirectoryNodeCreated() { CreateProject(); ServiceReferencesProjectItem expectedProjectItem = AddWCFMetadataProjectItemToProject(); DirectoryNode node = DirectoryNodeFactory.CreateDirectoryNode(expectedProjectItem, FileNodeStatus.None); ProjectItem projectItem = node.ProjectItem; Assert.AreEqual(expectedProjectItem, projectItem); }
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); }
public void CreateDirectoryNode_FileProjectItemThatEndsWithBackSlash_DirectoryNodeCreatedWithBackSlashRemoved() { CreateProject(); project.FileName = FileName.Create(@"d:\projects\MyProject\MyProject.csproj"); FileProjectItem projectItem = CreateFileProjectItem(@"MyFolder\"); DirectoryNode node = DirectoryNodeFactory.CreateDirectoryNode(projectItem, FileNodeStatus.None); Assert.AreEqual(@"d:\projects\MyProject\MyFolder", node.Directory.ToString()); }
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.ToString()); }
public void CreateDirectoryNode_ProjectHasServiceReferencesItemAndDirectoryMatchesServiceReferencesPath_CreatesServiceReferencesFolderNode() { CreateProject(); project.FileName = FileName.Create(@"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.ToString()); }
protected override void Initialize() { Dictionary <string, FileNode> fileNodeDictionary = new Dictionary <string, FileNode>((IEqualityComparer <string>)StringComparer.InvariantCultureIgnoreCase); Dictionary <string, DirectoryNode> directoryNodeList = new Dictionary <string, DirectoryNode>((IEqualityComparer <string>)StringComparer.InvariantCultureIgnoreCase); string relativeDirectoryPath = (this.RelativePath.Length <= 0) ? string.Empty : (this.RelativePath.Replace('\\', '/') + "/"); foreach (FileProjectItem item in this.Project.Items.OfType <FileProjectItem>()) { string virtualName = item.VirtualName.Replace('\\', '/'); if (virtualName.EndsWith("/", StringComparison.Ordinal)) { virtualName = virtualName.Substring(0, virtualName.Length - 1); } string fileName = Path.GetFileName(virtualName); if (!string.Equals(virtualName, relativeDirectoryPath + fileName, StringComparison.InvariantCultureIgnoreCase)) { this.AddParentFolder(virtualName, relativeDirectoryPath, directoryNodeList); // continue; } if (item.ItemType == ItemType.Folder || item.ItemType == ItemType.WebReferences) { DirectoryNode newDirectoryNode = DirectoryNodeFactory.CreateDirectoryNode(this, this.Project, fileName); if (!System.IO.Directory.Exists(item.FileName)) { newDirectoryNode.FileNodeStatus = FileNodeStatus.Missing; } newDirectoryNode.ProjectItem = item; newDirectoryNode.AddTo(this); directoryNodeList[fileName] = newDirectoryNode; } else { FileNode fileNode = new FileNode(item.FileName); if (!File.Exists(item.FileName)) { fileNode.FileNodeStatus = FileNodeStatus.Missing; } fileNode.ProjectItem = item; fileNodeDictionary[fileName] = fileNode; fileNode.AddTo(this); } } // Add files found in file system if (System.IO.Directory.Exists(this.Directory)) { foreach (string subDirectory in System.IO.Directory.GetDirectories(this.Directory)) { string filename = Path.GetFileName(subDirectory); if (filename != ".svn") { DirectoryNode node; if (directoryNodeList.TryGetValue(filename, out node)) { if (node.FileNodeStatus == FileNodeStatus.None) { node.FileNodeStatus = FileNodeStatus.InProject; } } else { node = DirectoryNodeFactory.CreateDirectoryNode(this, this.Project, subDirectory); node.AddTo(this); } } } foreach (string fullpath in System.IO.Directory.GetFiles(this.Directory)) { string file = Path.GetFileName(fullpath); FileNode node; if (fileNodeDictionary.TryGetValue(file, out node)) { if (node.FileNodeStatus == FileNodeStatus.None) { node.FileNodeStatus = FileNodeStatus.InProject; } } else { node = new FileNode(file); node.AddTo(this); } } } }