public void EnsureItemTypeIsCorrect_CriticalException_IsNotCaught()
        {
            var projectItemMock = new Mock <ProjectItem>();

            projectItemMock.Setup(x => x.Properties).Throws <AccessViolationException>();

            Action act = () => CSharpVBBindingOperation.EnsureItemTypeIsCorrect(projectItemMock.Object);

            act.Should().ThrowExactly <AccessViolationException>();
        }
        public void EnsureItemTypeIsCorrect_NonCriticalException_IsCaughtAndWrapped()
        {
            var projectMock    = new ProjectMock("myproject.vbproj");
            var innerException = new ArgumentException("aaa bbb");

            var projectItemMock = new Mock <ProjectItem>();

            projectItemMock.Setup(x => x.ContainingProject).Returns(projectMock);
            projectItemMock.Setup(x => x.Properties).Throws(innerException);

            Action act = () => CSharpVBBindingOperation.EnsureItemTypeIsCorrect(projectItemMock.Object);

            act.Should().ThrowExactly <SonarLintException>()
            .Where(x => x.Message.Contains(projectMock.FilePath) &&
                   x.Message.Contains(innerException.Message))
            .And.InnerException.Should().BeSameAs(innerException);
        }