public void Test_WorkspaceChanges()
        {
            var workspace = new TestWorkspace();
            var solution = workspace.CurrentSolution;
            var project1 = workspace.AddProject("P1");
            var graph = ProjectDependencyService.GetDependencyGraphAsync(workspace.CurrentSolution, CancellationToken.None).Result;
            var project2 = workspace.AddProject("P2");
            graph = ProjectDependencyService.GetDependencyGraphAsync(workspace.CurrentSolution, CancellationToken.None).Result;
            var sortedProjects = graph.GetTopologicallySortedProjects();
            AssertEx.SetEqual(sortedProjects, project1, project2);
            
            Project ps = workspace.CurrentSolution.GetProject(project1);
            int startCount = ps.MetadataReferences.Count;

            var source2 = @"
using System;
public class X
{
}
";
            MetadataReference comp1 = CreateCSharpCompilation(source2).ToMetadataReference();            
            workspace.OnMetadataReferenceAdded(project1, comp1);
            workspace.OnAssemblyNameChanged(project1, "ChangedP1");
            
            Assert.False(ps.CompilationOptions.CheckOverflow);
            CompilationOptions co = new CSharp.CSharpCompilationOptions(outputKind: OutputKind.DynamicallyLinkedLibrary, checkOverflow: true);            
            workspace.OnCompilationOptionsChanged(project1, co);
            
            ps = workspace.CurrentSolution.GetProject(project1);
            Assert.Equal(startCount + 1, ps.MetadataReferences.Count);
            Assert.Equal(ps.AssemblyName, "ChangedP1");
            Assert.True(ps.CompilationOptions.CheckOverflow);            
        }
 public void TestMoveToLatestSolution()
 {
     var workspace = new TestWorkspace();
     var solution = workspace.CurrentSolution;
     var project1 = workspace.AddProject("P1");
     var graph = ProjectDependencyService.GetDependencyGraphAsync(workspace.CurrentSolution, CancellationToken.None).Result;
     var project2 = workspace.AddProject("P2");
     graph = ProjectDependencyService.GetDependencyGraphAsync(workspace.CurrentSolution, CancellationToken.None).Result;
     var sortedProjects = graph.GetTopologicallySortedProjects();
     AssertEx.SetEqual(sortedProjects, project1, project2);
     workspace.OnAssemblyNameChanged(project1, "ChangedP1");                     
 }
        public void TestMoveToLatestSolution()
        {
            var workspace = new TestWorkspace();
            var solution  = workspace.CurrentSolution;
            var project1  = workspace.AddProject("P1");
            var graph     = ProjectDependencyService.GetDependencyGraphAsync(workspace.CurrentSolution, CancellationToken.None).Result;
            var project2  = workspace.AddProject("P2");

            graph = ProjectDependencyService.GetDependencyGraphAsync(workspace.CurrentSolution, CancellationToken.None).Result;
            var sortedProjects = graph.GetTopologicallySortedProjects();

            AssertEx.SetEqual(sortedProjects, project1, project2);
            workspace.OnAssemblyNameChanged(project1, "ChangedP1");
        }
 public void Test_WorkspaceOutputFilePathChanges()
 {
     var workspace = new TestWorkspace();
     var solution = workspace.CurrentSolution;
     var project = workspace.AddProject("P1");
     Project ps = workspace.CurrentSolution.GetProject(project);
     Assert.Equal(null, ps.OutputFilePath);
     workspace.OnOutputFilePathChanged(project, "NewPath");            
     ps = workspace.CurrentSolution.GetProject(project);
     Assert.Equal("NewPath", ps.OutputFilePath);
 }
        public void Test_WorkspaceOutputFilePathChanges()
        {
            var     workspace = new TestWorkspace();
            var     solution  = workspace.CurrentSolution;
            var     project   = workspace.AddProject("P1");
            Project ps        = workspace.CurrentSolution.GetProject(project);

            Assert.Equal(null, ps.OutputFilePath);
            workspace.OnOutputFilePathChanged(project, "NewPath");
            ps = workspace.CurrentSolution.GetProject(project);
            Assert.Equal("NewPath", ps.OutputFilePath);
        }
        public void Test_WorkspaceChanges()
        {
            var workspace = new TestWorkspace();
            var solution  = workspace.CurrentSolution;
            var project1  = workspace.AddProject("P1");
            var graph     = ProjectDependencyService.GetDependencyGraphAsync(workspace.CurrentSolution, CancellationToken.None).Result;
            var project2  = workspace.AddProject("P2");

            graph = ProjectDependencyService.GetDependencyGraphAsync(workspace.CurrentSolution, CancellationToken.None).Result;
            var sortedProjects = graph.GetTopologicallySortedProjects();

            AssertEx.SetEqual(sortedProjects, project1, project2);

            Project ps         = workspace.CurrentSolution.GetProject(project1);
            int     startCount = ps.MetadataReferences.Count;

            var source2             = @"
using System;
public class X
{
}
";
            MetadataReference comp1 = CreateCSharpCompilation(source2).ToMetadataReference();

            workspace.OnMetadataReferenceAdded(project1, comp1);
            workspace.OnAssemblyNameChanged(project1, "ChangedP1");

            Assert.False(ps.CompilationOptions.CheckOverflow);
            CompilationOptions co = new CSharp.CSharpCompilationOptions(outputKind: OutputKind.DynamicallyLinkedLibrary, checkOverflow: true);

            workspace.OnCompilationOptionsChanged(project1, co);

            ps = workspace.CurrentSolution.GetProject(project1);
            Assert.Equal(startCount + 1, ps.MetadataReferences.Count);
            Assert.Equal(ps.AssemblyName, "ChangedP1");
            Assert.True(ps.CompilationOptions.CheckOverflow);
        }