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); }
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(); }
public void Validate_Valid() { bool result = BracketValidator.Validate("(a + b)[{!c}()]"); Assert.IsTrue(result); }
public void Validate_Mixed() { bool result = BracketValidator.Validate("()[{(})]"); Assert.IsFalse(result); }
public void Validate_Incomplete() { bool result = BracketValidator.Validate("(((("); Assert.IsFalse(result); }
public void Validate_Unbalanced() { bool result = BracketValidator.Validate("()[{()]"); Assert.IsFalse(result); }
public BracketValidatorUnitTests() { sut = new BracketValidator(); }