public void AddProjectRestoreInfo_AfterAddProject_UpdatesCacheEntry() { // Arrange var target = new ProjectSystemCache(); var projectNames = new ProjectNames( fullName: @"C:\src\project\project.csproj", uniqueName: @"folder\project", shortName: "project", customUniqueName: @"folder\project"); var projectNamesFromFullPath = ProjectNames.FromFullProjectPath(@"C:\src\project\project.csproj"); var projectRestoreInfo = new DependencyGraphSpec(); target.AddProject(projectNames, vsProjectAdapter: null, nuGetProject: null); // Act target.AddProjectRestoreInfo(projectNamesFromFullPath, projectRestoreInfo); // Assert var getPackageSpecSuccess = target.TryGetProjectRestoreInfo(projectNames.FullName, out var actual); var getProjectNameFromUniqueNameSuccess = target.TryGetProjectNames(projectNames.UniqueName, out var names1); var getProjectNameFromFullNameSuccess = target.TryGetProjectNames(projectNames.FullName, out var names2); Assert.True(getPackageSpecSuccess); Assert.True(getProjectNameFromUniqueNameSuccess); Assert.True(getProjectNameFromFullNameSuccess); Assert.Same(projectRestoreInfo, actual); Assert.Equal(@"folder\project", names1.CustomUniqueName); Assert.Equal(@"folder\project", names2.CustomUniqueName); }
public void AddProjectRestoreInfo_TriggersEvent_WithEventHandler_NoReset() { // Arrange var target = new ProjectSystemCache(); var projectNames = GetTestProjectNames(); var projectRestoreInfo = new DependencyGraphSpec(); var eventCount = 0; target.CacheUpdated += delegate(object sender, NuGetEventArgs <string> e) { eventCount++; }; // Act target.AddProjectRestoreInfo(projectNames, projectRestoreInfo, additionalMessages: null); target.AddProjectRestoreInfo(projectNames, projectRestoreInfo, additionalMessages: null); target.AddProject(projectNames, vsProjectAdapter: null, nuGetProject: null); // Assert DependencyGraphSpec actual; ProjectNames names; var getPackageSpecSuccess = target.TryGetProjectRestoreInfo(projectNames.FullName, out actual, out _); var getProjectNameSuccess = target.TryGetProjectNames(projectNames.UniqueName, out names); Assert.True(getPackageSpecSuccess); Assert.True(getProjectNameSuccess); Assert.Same(projectRestoreInfo, actual); Assert.Equal(@"folder\project", names.CustomUniqueName); // Since no listener resets the dirty flag, the cache remains dirty and only 1 event is raised. Assert.Equal(target.IsCacheDirty, 1); Assert.Equal(eventCount, 1); }
public void AddProjectRestoreInfo_TriggersNoEvent_NoEventHandler() { // Arrange var target = new ProjectSystemCache(); var projectNames = new ProjectNames( fullName: @"C:\src\project\project.csproj", uniqueName: @"folder\project", shortName: "project", customUniqueName: @"folder\project"); var projectNamesFromFullPath = ProjectNames.FromFullProjectPath(@"C:\src\project\project.csproj"); var projectRestoreInfo = new DependencyGraphSpec(); // Act target.AddProjectRestoreInfo(projectNamesFromFullPath, projectRestoreInfo); target.AddProject(projectNames, vsProjectAdapter: null, nuGetProject: null); // Assert DependencyGraphSpec actual; ProjectNames names; var getPackageSpecSuccess = target.TryGetProjectRestoreInfo(projectNames.FullName, out actual); var getProjectNameSuccess = target.TryGetProjectNames(projectNames.UniqueName, out names); Assert.True(getPackageSpecSuccess); Assert.True(getProjectNameSuccess); Assert.Same(projectRestoreInfo, actual); Assert.Equal(@"folder\project", names.CustomUniqueName); // Cache remains clean since no one is listening to the cache events Assert.Equal(target.IsCacheDirty, 0); }
public void AddProjectRestoreInfo_TriggersEvent_WithEventHandler_WithReset() { // Arrange var target = new ProjectSystemCache(); var projectNames = GetTestProjectNames(); var projectNamesFromFullPath = ProjectNames.FromFullProjectPath(projectNames.FullName); var projectRestoreInfo = new DependencyGraphSpec(); var eventCount = 0; target.CacheUpdated += delegate(object sender, NuGetEventArgs <string> e) { if (target.TestResetDirtyFlag()) { eventCount++; } }; // Act target.AddProjectRestoreInfo(projectNamesFromFullPath, projectRestoreInfo, additionalMessages: null); target.AddProject(projectNames, vsProjectAdapter: null, nuGetProject: null); // Assert DependencyGraphSpec actual; ProjectNames names; var getPackageSpecSuccess = target.TryGetProjectRestoreInfo(projectNames.FullName, out actual, out _); var getProjectNameSuccess = target.TryGetProjectNames(projectNames.UniqueName, out names); Assert.True(getPackageSpecSuccess); Assert.True(getProjectNameSuccess); Assert.Same(projectRestoreInfo, actual); Assert.Equal(@"folder\project", names.CustomUniqueName); Assert.Equal(target.IsCacheDirty, 0); Assert.Equal(eventCount, 1); }
public void AddProject_AfterAddProjectRestoreInfo_UpdatesCacheEntry() { // Arrange var target = new ProjectSystemCache(); var projectNames = GetTestProjectNames(); var projectNamesFromFullPath = ProjectNames.FromFullProjectPath(projectNames.FullName); var projectRestoreInfo = new DependencyGraphSpec(); target.AddProjectRestoreInfo(projectNamesFromFullPath, projectRestoreInfo, additionalMessages: null); // Act target.AddProject(projectNames, vsProjectAdapter: null, nuGetProject: null); // Assert DependencyGraphSpec actual; ProjectNames names; var getPackageSpecSuccess = target.TryGetProjectRestoreInfo(projectNames.FullName, out actual, out _); var getProjectNameSuccess = target.TryGetProjectNames(projectNames.UniqueName, out names); Assert.True(getPackageSpecSuccess); Assert.True(getProjectNameSuccess); Assert.Same(projectRestoreInfo, actual); Assert.Equal(@"folder\project", names.CustomUniqueName); }
public void AddProjectRestoreInfoSource_Succeeds() { // Arrange var target = new ProjectSystemCache(); var projectNames = GetTestProjectNames(); object projectRestoreInfoSource = new(); // Act var result = target.AddProjectRestoreInfoSource(projectNames, projectRestoreInfoSource); // Assert Assert.True(result); var getProjectRestoreInfoSources = target.GetProjectRestoreInfoSources(); var getProjectNameFromUniqueNameSuccess = target.TryGetProjectNames(projectNames.UniqueName, out var names1); var getProjectNameFromFullNameSuccess = target.TryGetProjectNames(projectNames.FullName, out var names2); Assert.True(getProjectRestoreInfoSources.Any()); Assert.Equal(projectRestoreInfoSource, getProjectRestoreInfoSources.Single()); Assert.True(getProjectNameFromUniqueNameSuccess); Assert.True(getProjectNameFromFullNameSuccess); Assert.Equal(@"folder\project", names1.CustomUniqueName); Assert.Equal(@"folder\project", names2.CustomUniqueName); }
public void AddProjectRestoreInfoSource_AfterAddProject_UpdatesCacheEntry() { // Arrange var target = new ProjectSystemCache(); var projectNames = GetTestProjectNames(); object projectRestoreInfoSource = new(); target.AddProject(projectNames, vsProjectAdapter: null, nuGetProject: null); // Act target.AddProjectRestoreInfoSource(projectNames, projectRestoreInfoSource); // Assert var getProjectRestoreInfoSources = target.GetProjectRestoreInfoSources(); var getProjectNameFromUniqueNameSuccess = target.TryGetProjectNames(projectNames.UniqueName, out var names1); var getProjectNameFromFullNameSuccess = target.TryGetProjectNames(projectNames.FullName, out var names2); Assert.True(getProjectRestoreInfoSources.Any()); Assert.Equal(projectRestoreInfoSource, getProjectRestoreInfoSources.Single()); Assert.True(getProjectNameFromUniqueNameSuccess); Assert.True(getProjectNameFromFullNameSuccess); Assert.Equal(@"folder\project", names1.CustomUniqueName); Assert.Equal(@"folder\project", names2.CustomUniqueName); }
public void AddProjectRestoreInfo_TriggersEvent_WithEventHandler_NoReset() { // Arrange var target = new ProjectSystemCache(); var projectNames = new ProjectNames( fullName: @"C:\src\project\project.csproj", uniqueName: @"folder\project", shortName: "project", customUniqueName: @"folder\project"); var projectNamesFromFullPath = ProjectNames.FromFullProjectPath(@"C:\src\project\project.csproj"); var projectRestoreInfo = new DependencyGraphSpec(); var eventCount = 0; target.CacheUpdated += delegate(object sender, NuGetEventArgs <string> e) { eventCount++; }; // Act target.AddProjectRestoreInfo(projectNamesFromFullPath, projectRestoreInfo); target.AddProjectRestoreInfo(projectNamesFromFullPath, projectRestoreInfo); target.AddProject(projectNames, dteProject: null, nuGetProject: null); // Assert DependencyGraphSpec actual; ProjectNames names; var getPackageSpecSuccess = target.TryGetProjectRestoreInfo(projectNames.FullName, out actual); var getProjectNameSuccess = target.TryGetProjectNames(projectNames.UniqueName, out names); Assert.True(getPackageSpecSuccess); Assert.True(getProjectNameSuccess); Assert.Same(projectRestoreInfo, actual); Assert.Equal(@"folder\project", names.CustomUniqueName); // Since no listener resets the dirty flag, the cache remains dirty and only 1 event is raised. Assert.Equal(target.IsCacheDirty, 1); Assert.Equal(eventCount, 1); }
public void AddProjectRestoreInfo_TriggersNoEvent_NoEventHandler() { // Arrange var target = new ProjectSystemCache(); var projectNames = GetTestProjectNames(); var projectRestoreInfo = new DependencyGraphSpec(); // Act target.AddProjectRestoreInfo(projectNames, projectRestoreInfo, additionalMessages: null); target.AddProject(projectNames, vsProjectAdapter: null, nuGetProject: null); // Assert DependencyGraphSpec actual; ProjectNames names; var getPackageSpecSuccess = target.TryGetProjectRestoreInfo(projectNames.FullName, out actual, out _); var getProjectNameSuccess = target.TryGetProjectNames(projectNames.UniqueName, out names); Assert.True(getPackageSpecSuccess); Assert.True(getProjectNameSuccess); Assert.Same(projectRestoreInfo, actual); Assert.Equal(@"folder\project", names.CustomUniqueName); // Cache remains clean since no one is listening to the cache events Assert.Equal(target.IsCacheDirty, 0); }