public async Task MapFilesToViewModelAsync_ForGivenMultipleProjectPaths_CreatesTreeOfProjectDirectories()
        {
            var rootDirectory = @"c:\test\input_directory";
            var projectFiles  = new
            {
                FirstProject  = @"c:\test\input_directory\Project1.csproj",
                SecondProject = @"c:\test\input_directory\ChildDirWith2Projects\Project2\Project2.csproj",
                ThirdProject  = @"c:\test\input_directory\ChildDirWith2Projects\Project3\Project3.csproj",
                FourthProject = @"c:\test\input_directory\Project4\Project4.csproj",
                FifthProject  = @"c:\test\input_directory\Project4\Project5.csproj",
                SixthProject  = @"c:\test\input_directory\Project4\Project6\Project6"
            };

            var expectedObjectTree = new List <IFsItemViewModel>();

            expectedObjectTree.Add(new FsProjectDirectoryViewModel("Project1", projectFiles.FirstProject));

            var inputDirectory = new FsDirectoryViewModel("input_directory");

            var childDirWith2Projects = new FsDirectoryViewModel("ChildDirWith2Projects");

            childDirWith2Projects.ChildItems.Add(new FsProjectDirectoryViewModel("Project2", projectFiles.SecondProject));
            childDirWith2Projects.ChildItems.Add(new FsProjectDirectoryViewModel("Project3", projectFiles.ThirdProject));
            inputDirectory.ChildItems.Add(childDirWith2Projects);

            inputDirectory.ChildItems.Add(new FsProjectDirectoryViewModel("Project4", projectFiles.FourthProject));
            inputDirectory.ChildItems.Add(new FsProjectDirectoryViewModel("Project5", projectFiles.FifthProject));

            var project4Directory = new FsDirectoryViewModel("Project4");

            project4Directory.ChildItems.Add(new FsProjectDirectoryViewModel("Project6", projectFiles.SixthProject));
            inputDirectory.ChildItems.Add(project4Directory);

            expectedObjectTree.Add(inputDirectory);

            var projectList = new[]
            {
                projectFiles.FirstProject, projectFiles.SecondProject, projectFiles.ThirdProject,
                projectFiles.FourthProject, projectFiles.FifthProject, projectFiles.SixthProject
            };

            var mapper           = Mapper.Instance;
            var resultObjectTree = await mapper.MapFilesToViewModelAsync(rootDirectory, projectList, CancellationToken.None);

            foreach (var expectedTreeItem in expectedObjectTree)
            {
                Assert.Contains(expectedTreeItem, resultObjectTree);
            }
            Assert.Equal(expectedObjectTree.Count, resultObjectTree.Length);
        }
 public void Visit(FsDirectoryViewModel directory)
 {
     directory.CreateSolutionFolder = _CreateSolutionFolders;
 }