public void Enumerator_ThrowsExcetion_ForMissingDependencies() { // Arrange var source = new[] { new Item { Key = "One", Dependencies = null }, new Item { Key = "Two", Dependencies = new[] { "Three", "Four" } }, new Item { Key = "Three", Dependencies = new[] { "One" } }, new Item { Key = "Four", Dependencies = new[] { "Five" } } }; var enumerable = new DependencyKeyOrderedEnumerable <Item, string>(source, i => i.Key, (i, k) => i.Dependencies); // Act // Assert var ioe = Assert.Throws <InvalidOperationException>(() => enumerable.ToList()); Assert.Equal("Missing dependency: 'Two => Four => Five?'", ioe.Message); }
public void Enumerator_CreatesDependencySortedSet() { // Arrange var source = new[] { new Item { Key = "One", Dependencies = null }, new Item { Key = "Two", Dependencies = new[] { "Three", "Four" } }, new Item { Key = "Three", Dependencies = new[] { "One" } }, new Item { Key = "Four", Dependencies = null } }; var enumerable = new DependencyKeyOrderedEnumerable <Item, string>(source, i => i.Key, (i, k) => i.Dependencies); // Act var sorted = enumerable.ToList(); // Assert Assert.Equal(4, sorted.Count); Assert.Same(source[0], sorted[0]); Assert.Same(source[2], sorted[1]); Assert.Same(source[3], sorted[2]); Assert.Same(source[1], sorted[3]); }