public void ShouldAppearUnresolved_CircularDependency_DoesNotRecurseInfinitely() { const string id1 = @"tfm1\xxx\dependency1"; const string id2 = @"tfm1\xxx\dependency2"; const string providerType = "Xxx"; var dependency1 = new TestDependency { Id = id1, ProviderType = providerType, TopLevel = true, DependencyIDs = ImmutableArray.Create(id2) }; var dependency2 = new TestDependency { Id = id2, ProviderType = providerType, TopLevel = true, DependencyIDs = ImmutableArray.Create(id1) }; var snapshot = TargetedDependenciesSnapshotFactory.ImplementFromDependencies(new IDependency[] { dependency1, dependency2 }); // verify it doesn't stack overflow snapshot.ShouldAppearUnresolved(dependency1); }
public void CreateTargetViewModel_HasUnresolvedDependency() { var project = UnconfiguredProjectFactory.Create(); var targetFramework = new TargetFramework(moniker: "tFm1"); var targetedSnapshot = TargetedDependenciesSnapshotFactory.ImplementHasUnresolvedDependency(hasUnresolvedDependency: true, targetFramework); var factory = new DependenciesViewModelFactory(project); var result = factory.CreateTargetViewModel(targetedSnapshot); Assert.NotNull(result); Assert.Equal(targetFramework.FullName, result.Caption); Assert.Equal(ManagedImageMonikers.LibraryWarning, result.Icon); Assert.Equal(ManagedImageMonikers.LibraryWarning, result.ExpandedIcon); Assert.True(result.Flags.Contains(DependencyTreeFlags.TargetNode)); Assert.True(result.Flags.Contains("$TFM:tFm1")); }
public void ShouldAppearUnresolved() { var unresolvedTopLevel = new TestDependency { ProviderType = "Yyy", Id = "tfm1\\yyy\\unresolvedTopLevel", Resolved = false, TopLevel = true }; var unresolvedReachable = new TestDependency { ProviderType = "Yyy", Id = "tfm1\\yyy\\unresolvedReachable", Resolved = false, TopLevel = false }; var resolvedUnreachableWithHiddenParent = new TestDependency { ProviderType = "Yyy", Id = "tfm1\\yyy\\resolvedUnreachableWithHiddenParent", Resolved = true, TopLevel = false }; var resolvedHiddenParent = new TestDependency { ProviderType = "Yyy", Id = "tfm1\\yyy\\resolvedHiddenParent", Resolved = true, TopLevel = true, Visible = false, DependencyIDs = ImmutableArray.Create(resolvedUnreachableWithHiddenParent.Id) }; var resolvedTopLevelWithUnresolvedChild = new TestDependency { ProviderType = "Yyy", Id = "tfm1\\yyy\\resolvedTopLevelWithUnresolvedChild", Resolved = true, TopLevel = true, DependencyIDs = ImmutableArray.Create(unresolvedReachable.Id) }; var resolvedTopLevel = new TestDependency { ProviderType = "Yyy", Id = "tfm1\\yyy\\resolvedTopLevel", Resolved = true, TopLevel = true }; var resolvedUnreachable = new TestDependency { ProviderType = "Yyy", Id = "tfm1\\yyy\\resolvedUnreachable", Resolved = true, TopLevel = false }; var resolvedChildWithVisibleUnresolvedParent = new TestDependency { ProviderType = "Yyy", Id = "tfm1\\yyy\\resolvedChildWithVisibleUnresolvedParent", Resolved = true, TopLevel = false }; var unresolvedTopLevelWithUnresolvedChild = new TestDependency { ProviderType = "Yyy", Id = "tfm1\\yyy\\unresolvedTopLevelWithUnresolvedChild", Resolved = false, TopLevel = true, DependencyIDs = ImmutableArray.Create(resolvedChildWithVisibleUnresolvedParent.Id) }; var snapshot = TargetedDependenciesSnapshotFactory.ImplementFromDependencies(new IDependency[] { unresolvedTopLevel, unresolvedReachable, resolvedUnreachableWithHiddenParent, resolvedHiddenParent, resolvedTopLevelWithUnresolvedChild, resolvedTopLevel, resolvedUnreachable, resolvedChildWithVisibleUnresolvedParent, unresolvedTopLevelWithUnresolvedChild }); Assert.True(snapshot.ShouldAppearUnresolved(unresolvedTopLevel)); Assert.True(snapshot.ShouldAppearUnresolved(unresolvedReachable)); Assert.True(snapshot.ShouldAppearUnresolved(resolvedTopLevelWithUnresolvedChild)); Assert.True(snapshot.ShouldAppearUnresolved(unresolvedTopLevelWithUnresolvedChild)); Assert.False(snapshot.ShouldAppearUnresolved(resolvedTopLevel)); Assert.False(snapshot.ShouldAppearUnresolved(resolvedChildWithVisibleUnresolvedParent)); #if DEBUG // These throw in unit tests but assert elsewhere Assert.ThrowsAny <Exception>(() => snapshot.ShouldAppearUnresolved(resolvedUnreachable)); Assert.ThrowsAny <Exception>(() => snapshot.ShouldAppearUnresolved(resolvedHiddenParent)); Assert.ThrowsAny <Exception>(() => snapshot.ShouldAppearUnresolved(resolvedUnreachableWithHiddenParent)); Assert.ThrowsAny <Exception>(() => snapshot.ShouldAppearUnresolved(new TestDependency { Id = "ID", Resolved = false })); Assert.ThrowsAny <Exception>(() => snapshot.ShouldAppearUnresolved(new TestDependency { Id = "ID", Resolved = true })); #else Assert.False(snapshot.ShouldAppearUnresolved(resolvedUnreachable)); Assert.False(snapshot.ShouldAppearUnresolved(resolvedHiddenParent)); Assert.False(snapshot.ShouldAppearUnresolved(resolvedUnreachableWithHiddenParent)); Assert.True(snapshot.ShouldAppearUnresolved(new TestDependency { Id = "ID", Resolved = false })); Assert.False(snapshot.ShouldAppearUnresolved(new TestDependency { Id = "ID", Resolved = true })); #endif }
public void ToViewModel() { var iconSet = new DependencyIconSet( KnownMonikers.Uninstall, KnownMonikers.AbsolutePosition, KnownMonikers.AboutBox, KnownMonikers.Abbreviation); // This is a resolved dependency var dependencyResolved = new TestDependency { ProviderType = "Yyy", Id = "tfm1\\yyy\\dependencyResolved", Name = "dependencyResolved", Caption = "DependencyResolved", SchemaName = "MySchema", SchemaItemType = "MySchemaItemType", Priority = 1, Resolved = true, TopLevel = true, IconSet = iconSet }; // This is an unresolved dependency var dependencyUnresolved = new TestDependency { ProviderType = "Yyy", Id = "tfm1\\yyy\\dependencyUnresolved", Name = "dependencyUnresolved", Caption = "DependencyUnresolved", SchemaName = "MySchema", SchemaItemType = "MySchemaItemType", Priority = 1, Resolved = false, TopLevel = true, IconSet = iconSet }; // This is a resolved dependency with an unresolved child dependency var dependencyUnresolvedChild = new TestDependency { ProviderType = "Yyy", Id = "tfm1\\yyy\\dependencyUnresolvedChild", Name = "dependencyUnresolvedChild", Caption = "DependencyUnresolvedChild", SchemaName = "MySchema", SchemaItemType = "MySchemaItemType", Priority = 1, Resolved = true, TopLevel = true, IconSet = iconSet, DependencyIDs = ImmutableArray.Create(dependencyUnresolved.Id) }; var snapshotResolved = TargetedDependenciesSnapshotFactory.ImplementFromDependencies(new[] { dependencyResolved }); var snapshotUnresolved = TargetedDependenciesSnapshotFactory.ImplementFromDependencies(new[] { dependencyUnresolved }); var snapshotUnresolvedChild = TargetedDependenciesSnapshotFactory.ImplementFromDependencies(new[] { dependencyUnresolved, dependencyUnresolvedChild }); Assert.False(snapshotResolved.ShouldAppearUnresolved(dependencyResolved)); Assert.True(snapshotUnresolved.ShouldAppearUnresolved(dependencyUnresolved)); Assert.True(snapshotUnresolvedChild.ShouldAppearUnresolved(dependencyUnresolvedChild)); var viewModelResolved = dependencyResolved.ToViewModel(snapshotResolved); Assert.Equal(dependencyResolved.Caption, viewModelResolved.Caption); Assert.Equal(dependencyResolved.Flags, viewModelResolved.Flags); Assert.Equal(dependencyResolved.Id, viewModelResolved.FilePath); Assert.Equal(dependencyResolved.SchemaName, viewModelResolved.SchemaName); Assert.Equal(dependencyResolved.SchemaItemType, viewModelResolved.SchemaItemType); Assert.Equal(dependencyResolved.Priority, viewModelResolved.Priority); Assert.Equal(iconSet.Icon, viewModelResolved.Icon); Assert.Equal(iconSet.ExpandedIcon, viewModelResolved.ExpandedIcon); var viewModelUnresolved = dependencyUnresolved.ToViewModel(snapshotResolved); Assert.Equal(dependencyUnresolved.Caption, viewModelUnresolved.Caption); Assert.Equal(dependencyUnresolved.Flags, viewModelUnresolved.Flags); Assert.Equal(dependencyUnresolved.Id, viewModelUnresolved.FilePath); Assert.Equal(dependencyUnresolved.SchemaName, viewModelUnresolved.SchemaName); Assert.Equal(dependencyUnresolved.SchemaItemType, viewModelUnresolved.SchemaItemType); Assert.Equal(dependencyUnresolved.Priority, viewModelUnresolved.Priority); Assert.Equal(iconSet.UnresolvedIcon, viewModelUnresolved.Icon); Assert.Equal(iconSet.UnresolvedExpandedIcon, viewModelUnresolved.ExpandedIcon); var viewModelUnresolvedChild = dependencyUnresolvedChild.ToViewModel(snapshotUnresolvedChild); Assert.Equal(dependencyUnresolvedChild.Caption, viewModelUnresolvedChild.Caption); Assert.Equal(dependencyUnresolvedChild.Flags, viewModelUnresolvedChild.Flags); Assert.Equal(dependencyUnresolvedChild.Id, viewModelUnresolvedChild.FilePath); Assert.Equal(dependencyUnresolvedChild.SchemaName, viewModelUnresolvedChild.SchemaName); Assert.Equal(dependencyUnresolvedChild.SchemaItemType, viewModelUnresolvedChild.SchemaItemType); Assert.Equal(dependencyUnresolvedChild.Priority, viewModelUnresolvedChild.Priority); Assert.Equal(iconSet.UnresolvedIcon, viewModelUnresolvedChild.Icon); Assert.Equal(iconSet.UnresolvedExpandedIcon, viewModelUnresolvedChild.ExpandedIcon); }