public void BlockException_CanBeSerialized()
        {
            // Arrange
            const int dummyLineIndex = 1;
            const int dummyColumn    = 2;
            var       dummyBlock     = new DummyBlock(null)
            {
                Column = dummyColumn,
                Line   = dummyLineIndex
            };
            const string dummyDescription = "dummyDescription";
            IFormatter   dummyFormatter   = new BinaryFormatter();
            var          dummyStream      = new MemoryStream();
            var          testSubject      = new BlockException(dummyBlock, dummyDescription);

            // Act
            dummyFormatter.Serialize(dummyStream, testSubject);
            dummyStream.Position = 0;
            var result = (BlockException)dummyFormatter.Deserialize(dummyStream);

            // Assert
            Assert.Equal(BlockExceptionContext.Block, result.Context);
            Assert.Equal(dummyLineIndex + 1, result.LineNumber);
            Assert.Equal(dummyColumn, result.Column);
            Assert.Equal(dummyDescription, result.Description);
            Assert.Equal(nameof(DummyBlock), result.BlockTypeName);
        }
        public void Message_ReturnsInvalidBlockMessageIfContextIsBlock(string dummyDescription, string dummyExpectedDescription)
        {
            // Arrange
            const int dummyColumn    = 2; // Arbitrary
            const int dummyLineIndex = 5; // Arbitrary
            var       dummyBlock     = new DummyBlock(null)
            {
                Column = dummyColumn, Line = dummyLineIndex
            };
            var testSubject = new BlockException(dummyBlock, dummyDescription);

            // Act
            string result = testSubject.Message;

            // Assert
            Assert.Equal(string.Format(Strings.BlockException_BlockException_InvalidBlock,
                                       nameof(DummyBlock),
                                       dummyLineIndex + 1,
                                       dummyColumn,
                                       dummyExpectedDescription),
                         result, ignoreLineEndingDifferences: true);
        }