Пример #1
0
        public void ValidateSelect_ShouldReturnFalse_WhenCallsSyntaxIsIncorrect(string queryToValidate)
        {
            DeclarationsArray declarations = new DeclarationsArray();
            SelectValidator   validator    = new SelectValidator(declarations);
            bool result = validator.ValidateSelectQuery(queryToValidate);

            Assert.True(result);
        }
Пример #2
0
        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);
        }
Пример #3
0
        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);
        }
Пример #4
0
        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);
        }
Пример #5
0
        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);
        }