public void ValidateSelect_ShouldReturnFalse_WhenCallsSyntaxIsIncorrect(string queryToValidate) { DeclarationsArray declarations = new DeclarationsArray(); SelectValidator validator = new SelectValidator(declarations); bool result = validator.ValidateSelectQuery(queryToValidate); Assert.True(result); }
public void ValidateSelectBoolean_ShouldReturnFalse_WhenModifiesIsAmbiguous() { DeclarationsArray declarations = new DeclarationsArray(); // Use of underscore must not lead to ambiguities. For example, the following query should be rejected // as incorrect as it is not clear if underscore refers to a statement or to a procedure SelectValidator validator = new SelectValidator(declarations); bool result = validator.ValidateSelectQuery("select boolean such that Modifies (_, \"x\")"); Assert.False(result); }
public void ValidateSelectBoolean_ShouldReturnTrue_WhenModifies(string queryToValidate) { DeclarationsArray declarations = new DeclarationsArray(); // Modifies design entity relationships: // Modifies(procedure, variable) // Modifies(stmt, variable) SelectValidator validator = new SelectValidator(declarations); bool result = validator.ValidateSelectQuery(queryToValidate); Assert.True(result); }
public void ValidateSelect_ShouldReturnFalse_WhenSuchThatUsedIncorrectly(string queryToValidate) { DeclarationsArray declarations = new DeclarationsArray(); // **such that grammar rules** // // suchthat - cl : ‘such that’ relCond // relCond : relRef( ‘and’ relRef) * // relRef: ModifiesP | ModifiesS | UsesP | UsesS | Calls | CallsT | Parent | ParentT | // Follows | FollowsT | Next | NextT | Affects | AffectsT SelectValidator validator = new SelectValidator(declarations); bool result = validator.ValidateSelectQuery(queryToValidate); Assert.True(result); }
public bool ValidateQuery(string query) { query = query.ToUpper(); // It removes all multiple spaces in whole query // e.g. procedure p ; select p // will be replaced to: procedure p ; select p query = Regex.Replace(query, @"\s+", " "); string[] statements = query.Split(';'); foreach (string statement in statements) { string firstWord = statement.Trim().Split(' ')[0]; if (firstWord == "SELECT") { SelectValidator = new SelectValidator(DeclarationValidator.GetDeclarationsArray()); SuchThatValidator.SetList(new List <SuchThatValidator.MethodToDo>()); // TODO: ValidateSelectQuery method if (!SelectValidator.ValidateSelectQuery(statement.Trim())) { throw new InvalidQueryException("#Invalid Select Query"); } //tu dodać SelectOutput selectOutput = new SelectOutput(SelectValidator.SelectParam, DeclarationValidator.GetDeclarationsArray()); Console.WriteLine(selectOutput.GenerateResult()); //Console.ReadKey(); } else { if (!DeclarationValidator.ValidateDeclarationQuery(statement.Trim())) { throw new InvalidQueryException("#Invalid Declaration Query"); } } } return(true); }