public void TryOpenBlock_ThrowsBlockExceptionIfAnExceptionIsThrownWhileCreatingProxyFencedBlock() { // Arrange int dummyFenceCharCount = 3; const int dummyLineIndex = 6; const int dummyIndent = 2; const string dummyText = "dummyText"; BlockProcessor dummyBlockProcessor = MarkdigTypesFactory.CreateBlockProcessor(); dummyBlockProcessor.Line = new StringSlice(dummyText); dummyBlockProcessor.Column = dummyIndent; dummyBlockProcessor.LineIndex = dummyLineIndex; DummyProxyFencedBlock dummyProxyFencedBlock = _mockRepository.Create <DummyProxyFencedBlock>(null).Object; Mock <IFencedBlockFactory <Block, DummyProxyFencedBlock> > mockFencedBlockFactory = _mockRepository.Create <IFencedBlockFactory <Block, DummyProxyFencedBlock> >(); var dummyException = new Exception(); Mock <ExposedFencedBlockParser> mockTestSubject = CreateMockExposedFencedBlockParser(mockFencedBlockFactory.Object); mockFencedBlockFactory. Setup(f => f.CreateProxyFencedBlock(dummyIndent, dummyFenceCharCount, dummyBlockProcessor, mockTestSubject.Object)). Throws(dummyException); mockTestSubject.CallBase = true; mockTestSubject.Setup(t => t.LineContainsOpeningFence(It.Is <StringSlice>(s => s.Text == dummyText), out dummyFenceCharCount)).Returns(true); // Act and assert BlockException result = Assert.Throws <BlockException>(() => mockTestSubject.Object.ExposedTryOpenBlock(dummyBlockProcessor)); Assert.Equal(string.Format(Strings.BlockException_BlockException_InvalidBlock, nameof(Block), dummyLineIndex + 1, dummyIndent, Strings.BlockException_Shared_ExceptionOccurredWhileCreatingBlock), result.Message); Assert.Same(dummyException, result.InnerException); _mockRepository.VerifyAll(); }
public void TryOpenBlock_ReturnsContinueDiscardAndAddsNewProxyFencedBlockToNewBlocksIfLineContainsAnOpeningFence() { // Arrange int dummyFenceCharCount = 3; const int dummyIndent = 2; const string dummyText = "dummyText"; BlockProcessor dummyBlockProcessor = MarkdigTypesFactory.CreateBlockProcessor(); dummyBlockProcessor.Line = new StringSlice(dummyText); dummyBlockProcessor.Column = dummyIndent; DummyProxyFencedBlock dummyProxyFencedBlock = _mockRepository.Create <DummyProxyFencedBlock>(null).Object; Mock <IFencedBlockFactory <Block, DummyProxyFencedBlock> > mockFencedBlockFactory = _mockRepository.Create <IFencedBlockFactory <Block, DummyProxyFencedBlock> >(); Mock <ExposedFencedBlockParser> mockTestSubject = CreateMockExposedFencedBlockParser(mockFencedBlockFactory.Object); mockFencedBlockFactory. Setup(f => f.CreateProxyFencedBlock(dummyIndent, dummyFenceCharCount, dummyBlockProcessor, mockTestSubject.Object)). Returns(dummyProxyFencedBlock); mockTestSubject.CallBase = true; mockTestSubject.Setup(t => t.LineContainsOpeningFence(It.Is <StringSlice>(s => s.Text == dummyText), out dummyFenceCharCount)).Returns(true); // Act BlockState result = mockTestSubject.Object.ExposedTryOpenBlock(dummyBlockProcessor); // Assert _mockRepository.VerifyAll(); Assert.Equal(BlockState.ContinueDiscard, result); Assert.Same(dummyProxyFencedBlock, dummyBlockProcessor.NewBlocks.Peek()); }