public ExposedFencedBlockParser(IFencedBlockFactory <Block, DummyProxyFencedBlock> FencedBlockFactory,
                                 char fenceChar,
                                 bool matchingFencesRequired,
                                 FenceTrailingCharacters fenceTrailingCharacters) :
     base(FencedBlockFactory, fenceChar, matchingFencesRequired, fenceTrailingCharacters)
 {
 }
 private Mock <ExposedFencedBlockParser> CreateMockExposedFencedBlockParser(IFencedBlockFactory <Block, DummyProxyFencedBlock> FencedBlockFactory = null,
                                                                            char fenceChar = default,
                                                                            bool matchingFencesRequired = default,
                                                                            FenceTrailingCharacters fenceTrailingCharacters = default)
 {
     return(_mockRepository.Create <ExposedFencedBlockParser>(FencedBlockFactory ?? _mockRepository.Create <IFencedBlockFactory <Block, DummyProxyFencedBlock> >().Object,
                                                              fenceChar,
                                                              matchingFencesRequired,
                                                              fenceTrailingCharacters));
 }
        /// <summary>
        /// Creates a <see cref="FencedBlockParser{TMain, TProxy}"/>.
        /// </summary>
        /// <param name="fencedBlockFactory">The factory for creating <typeparamref name="TMain"/>s and <typeparamref name="TProxy"/>s.</param>
        /// <param name="fenceChar">The character used in the <typeparamref name="TMain"/>'s fences.</param>
        /// <param name="matchingFencesRequired">The value specifying whether opening and closing fences must have the same number of characters.</param>
        /// <param name="fenceTrailingCharacters">The value specifying what trailing characters are allowed after the opening fence.</param>
        /// <exception cref="ArgumentNullException">Thrown if <paramref name="fencedBlockFactory"/> is <c>null</c>.</exception>
        protected FencedBlockParser(IFencedBlockFactory <TMain, TProxy> fencedBlockFactory,
                                    char fenceChar,
                                    bool matchingFencesRequired = false,
                                    FenceTrailingCharacters fenceTrailingCharacters = default)
        {
            _fencedBlockFactory = fencedBlockFactory ?? throw new ArgumentNullException(nameof(fencedBlockFactory));

            _matchingFencesRequired  = matchingFencesRequired;
            _fenceTrailingCharacters = fenceTrailingCharacters;
            _fenceChar        = fenceChar;
            OpeningCharacters = new char[] { fenceChar };
        }
        public void LineContainsOpeningFence_ReturnsTrueIfLineContainsAnOpeningFenceAndFalseOtherwise(FenceTrailingCharacters dummyFenceTrailingCharacters,
                                                                                                      string dummyLineText,
                                                                                                      char dummyFenceChar,
                                                                                                      bool expectedContains,
                                                                                                      int expectedFenceCharCount)
        {
            // Arrange
            var dummyLine = new StringSlice(dummyLineText);
            ExposedFencedBlockParser testSubject = CreateExposedFencedBlockParser(fenceChar: dummyFenceChar, fenceTrailingCharacters: dummyFenceTrailingCharacters);

            // Act
            bool resultContains = testSubject.LineContainsOpeningFence(dummyLine, out int resultFenceCharCount);

            // Assert
            Assert.Equal(expectedContains, resultContains);
            Assert.Equal(expectedFenceCharCount, resultFenceCharCount);
        }