public void FlattenDepthFirstCalculations_GivenHeirarchyOfObjects_ReturnsFalttenedList() { // Arrange IEnumerable <Calculation> nodes = GetCalculationNodes(); // Act IEnumerable <Calculation> flattened = nodes.FlattenDepthFirst(); // Assert flattened .Should() .HaveCount(6); IEnumerable <string> nameOrder = flattened.Select(c => c.Name); nameOrder .Should() .ContainInOrder(new[] { "Name1", "Name2", "Name3", "Name6", "Name4", "Name5", }); }