public void Stack_CreateFromAggregatedExceptionWithInnerException()
{
bool caughtException = false;
try
{
File.Create(Path.GetInvalidFileNameChars()[0].ToString(), 0);
}
catch (ArgumentException exception)
{
var innerException1 = new InvalidOperationException("Test exception 1.");
var innerException2 = new InvalidOperationException("Test exception 2.", exception);
var aggregated = new AggregateException(innerException1, innerException2);
IList <Stack> stacks = Stack.CreateStacks(aggregated).ToList();
stacks.Count.Should().Be(4);
aggregated.StackTrace.Should().Be(null);
Assert.Equal("[No frames]", stacks[0].ToString());
Assert.Equal("[No frames]", stacks[1].ToString());
Assert.Equal("[No frames]", stacks[2].ToString());
stacks[3].ToString().Should().BeCrossPlatformEquivalentStrings(exception.StackTrace);
Assert.Equal(aggregated.FormatMessage(), stacks[0].Message.Text);
Assert.Equal(innerException1.FormatMessage(), stacks[1].Message.Text);
Assert.Equal(innerException2.FormatMessage(), stacks[2].Message.Text);
Assert.Equal(exception.FormatMessage(), stacks[3].Message.Text);
caughtException = true;
}
Assert.True(caughtException);
}