public void TryGetDTEProject_ReturnsNullWhenShortNameIsAmbiguous()
        {
            // Arrange
            var target = new ProjectSystemCache();

            var projectNamesA = new ProjectNames(
                fullName: @"C:\src\projectA\project.csproj",
                uniqueName: @"folderA\project",
                shortName: "project",
                customUniqueName: @"folderA\project",
                projectId: _projectGuid1);

            var projectNamesB = new ProjectNames(
                fullName: @"C:\src\projectB\project.csproj",
                uniqueName: @"folderB\project",
                shortName: projectNamesA.ShortName,
                customUniqueName: @"folderB\project",
                projectId: _projectGuid2);

            target.AddProject(projectNamesA, vsProjectAdapter: null, nuGetProject: null);
            target.AddProject(projectNamesB, vsProjectAdapter: null, nuGetProject: null);

            IVsProjectAdapter actual;

            // Act
            var success = target.TryGetVsProjectAdapter(projectNamesA.ShortName, out actual);

            // Assert
            Assert.False(success, "The project should not have been fetched from the cache by short name.");
            Assert.Null(actual);
        }
        public void TryGetVsProjectAdapter_ReturnsProjectByCustomUniqueName()
        {
            // Arrange
            var target           = new ProjectSystemCache();
            var projectNames     = GetTestProjectNames();
            var vsProjectAdapter = new Mock <IVsProjectAdapter>();

            target.AddProject(projectNames, vsProjectAdapter.Object, nuGetProject: null);
            IVsProjectAdapter actual;

            // Act
            var success = target.TryGetVsProjectAdapter(projectNames.CustomUniqueName, out actual);

            // Assert
            Assert.True(success, "The project should have been fetched from the cache by custom unique name.");
            Assert.Same(vsProjectAdapter.Object, actual);
        }
        public void TryGetDTEProject_ReturnsProjectWhenShortNameIsNotAmbiguous()
        {
            // Arrange
            var target           = new ProjectSystemCache();
            var projectNames     = GetTestProjectNames();
            var vsProjectAdapter = new Mock <IVsProjectAdapter>();

            target.AddProject(projectNames, vsProjectAdapter.Object, nuGetProject: null);
            IVsProjectAdapter actual;

            // Act
            var success = target.TryGetVsProjectAdapter(projectNames.ShortName, out actual);

            // Assert
            Assert.True(success, "The project should have been fetched from the cache by short name.");
            Assert.Same(vsProjectAdapter.Object, actual);
        }
        public void TryGetVsProjectAdapter_ReturnsProjectByUniqueName()
        {
            // Arrange
            var target       = new ProjectSystemCache();
            var projectNames = new ProjectNames(
                fullName: @"C:\src\project\project.csproj",
                uniqueName: @"folder\project",
                shortName: "project",
                customUniqueName: @"folder\project");
            var vsProjectAdapter = new Mock <IVsProjectAdapter>();

            target.AddProject(projectNames, vsProjectAdapter.Object, nuGetProject: null);
            IVsProjectAdapter actual;

            // Act
            var success = target.TryGetVsProjectAdapter(projectNames.UniqueName, out actual);

            // Assert
            Assert.True(success, "The project should have been fetched from the cache by unique name.");
            Assert.Same(vsProjectAdapter.Object, actual);
        }