コード例 #1
0
ファイル: StackTests.cs プロジェクト: Microsoft/sarif-sdk
        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.AreEqual("[No frames]", stacks[0].ToString());
                Assert.AreEqual("[No frames]", stacks[1].ToString());
                Assert.AreEqual("[No frames]", stacks[2].ToString());
                Assert.AreEqual(exception.StackTrace, stacks[3].ToString());

                Assert.AreEqual(aggregated.FormatMessage(), stacks[0].Message);
                Assert.AreEqual(innerException1.FormatMessage(), stacks[1].Message);
                Assert.AreEqual(innerException2.FormatMessage(), stacks[2].Message);
                Assert.AreEqual(exception.FormatMessage(), stacks[3].Message);

                caughtException = true;
            }
            Assert.IsTrue(caughtException);
        }