public bool IsValidBracketString(String input, BracketValidator validator = null)
        {
            // Message not needed since error is for the developer and not the end user

            /*if (s == null)
             *  throw new ArgumentNullException("A string is required");*/
            /*if (input == null)
             *  throw new ArgumentNullException(nameof(input));*/
            // Use the tenary operator for readability
            input = input ?? throw new ArgumentNullException(nameof(input));

            /*if (validator == null)
             *  validator = BracketValidator.CreateDefaultValidator();*/
            validator = validator ?? BracketValidator.CreateDefaultValidator();

            // Prevent redunant type declarations
            //Stack<char> openStack = new Stack<char>();
            var openStack = new Stack <char>();

            foreach (var curBracket in input)
            {
                if (validator.IsOpen(curBracket))
                {
                    openStack.Push(curBracket);
                }
                else if (openStack.Count == 0 || validator.IsMatchingPair(openStack.Pop(), curBracket))
                {
                    return(false);
                }
            }
            return(openStack.Count == 0);
        }
            public static BracketValidator CreateDefaultValidator()
            {
                var validator = new BracketValidator();

                validator.AddPair('{', '}');
                validator.AddPair('[', ']');
                validator.AddPair('(', ')');

                return(validator);
            }
Пример #3
0
        public void Can_Validate_Brackets()
        {
            // Arrange
            BracketValidator b = new BracketValidator();
            bool             trueCase;
            bool             falseCase;

            // Act
            trueCase  = b.Validate("()[]{}([{}])({[]})");
            falseCase = b.Validate("({[)]}");

            // Assert
            Assert.IsTrue(trueCase);
            Assert.IsFalse(falseCase);
        }
 public void OneTimeSetUp()
 {
     validator = new BracketValidator();
 }
Пример #5
0
        public void Validate_Valid()
        {
            bool result = BracketValidator.Validate("(a + b)[{!c}()]");

            Assert.IsTrue(result);
        }
Пример #6
0
        public void Validate_Mixed()
        {
            bool result = BracketValidator.Validate("()[{(})]");

            Assert.IsFalse(result);
        }
Пример #7
0
        public void Validate_Incomplete()
        {
            bool result = BracketValidator.Validate("((((");

            Assert.IsFalse(result);
        }
Пример #8
0
        public void Validate_Unbalanced()
        {
            bool result = BracketValidator.Validate("()[{()]");

            Assert.IsFalse(result);
        }
Пример #9
0
 public BracketValidatorUnitTests()
 {
     sut = new BracketValidator();
 }