コード例 #1
0
        public void TestDBComparerProcedure(RegexFoundingUnitTest param)
        {
            // Arrange
            var  e        = RegexFounding.List.First(x => x.Action == param.SqlActionId && x.ApplyOn == param.SqlWhatId);
            Bloc expected = new Bloc()
            {
                ScriptId     = 0,
                SqlActionId  = param.SqlActionId,
                TypeObjectId = param.SqlWhatId,
            };

            // Act
            var ba = new BlocAnalyzer();

            ba.Analyze(e, 0, param.Text);

            // Assert
            Assert.NotNull(ba.Blocs);
            if (param.Result)
            {
                Assert.Single(ba.Blocs);
                Assert.Collection(ba.Blocs, b => Assert.Equal(expected, b));
            }
            else
            {
                Assert.Empty(ba.Blocs);
            }
        }
コード例 #2
0
        /// <summary>
        /// Durant l'édition du Texte SQL (ou en fin de saisie) :
        /// Vérifie que dans le script en cours d'édition pour un objet on a bien le CREATE XXX qui correspond
        /// (ET met à jour l'interface utilisateur pour le ui indiquer)
        /// </summary>
        private void AnalyseEntete()
        {
            if (currentObjectEdited == null || currentObjectEdited.TypeObjectId <= 0 || string.IsNullOrWhiteSpace(sqlTextBox1.Text))
            {
                return;
            }

            RegexFounding pattern = RegexFounding.List.FirstOrDefault(x => x.Action == SqlAction.Create && x.ApplyOn == currentObjectEdited.TypeObjectId);

            if (pattern == null)
            { // pas d'analyse possible pour ce type d'objet
                lblResumes.Text = string.Empty;
                return;
            }

            var bla = new BlocAnalyzer();

            bla.Analyze(pattern, 0, sqlTextBox1.Text);
            if (bla.Blocs.Count == 1)
            {
                currentObjectEdited.ObjectSchema = bla.Blocs[0].BlocSchema;
                currentObjectEdited.ObjectName   = bla.Blocs[0].BlocName;
                lblResumes.Text = $"Trouvé {currentObjectEdited.GetTypeObject().TypeObjectName} {currentObjectEdited}";
            }
            else
            {
                currentObjectEdited.ObjectSchema = string.Empty;
                currentObjectEdited.ObjectName   = string.Empty;
                lblResumes.Text = "Analyse du script...";
            }
        }
コード例 #3
0
        public void TestRaiseError()
        {
            var    e        = RegexFounding.List.First(x => x.Action == SqlAction.RaiseError && x.ApplyOn == TypeObject.None);
            string text     = @"
RAISERROR ('message plusieurs mots', 3, 16)

DECLARE @x VARCHAR(100)
RAISERROR ('message info', 3, 16)
RAISERROR ('message 10', 10, 33) 

RAISERROR ('message 11', 11, 33) 
RAISERROR ('message 12', 12, 33) 
RAISERROR ('message 13', 13, 33) 
RAISERROR ('message 14'' plusiers tests', 14, 33) 
RAISERROR ('message 15', 15, 33) 
RAISERROR ('message 16', 16, 33) 
RAISERROR ('message 17', 17, 33) with nowait; SET @x='EE';
RAISERROR ('message 18', 18, 33) 
RAISERROR ('message plusieurs mots', 19, 16)
";
            Bloc   expected = new Bloc()
            {
                ScriptId     = 0,
                SqlActionId  = SqlAction.RaiseError,
                TypeObjectId = TypeObject.None
            };

            // Act
            var ba = new BlocAnalyzer();

            ba.Analyze(e, 0, text);

            // Assert
            Assert.NotNull(ba.Blocs);
            Assert.Equal(8, ba.Blocs.Count);
            Assert.All(ba.Blocs, b => Assert.Equal(expected, b)
                       );
        }
コード例 #4
0
        public void TestCommentMonoLine()
        {
            var    e        = RegexFounding.List.First(x => x.Action == SqlAction.Comment && x.ApplyOn == TypeObject.None && x.Expression.ToString().StartsWith("(?m)"));
            string text     = @"
DECLARE @x VARCHAR(100)
--- RAISERROR ('message info', 3, 16)
RAISERROR ('message 10', 10, 33) 

RAISE---RROR ('message 11', ---11, 33) 
RAISERROR ('message 12', 12, 33) 
RAISERROR ('message 13', 13, 33) 
RAISERROR ('message 14', 14, 33) 
RAISERROR ('message 15', 15, 33) 
RAISERROR ('message 16', 16, 33) 
RAISER---ROR ('message 17', 17, 33) with nowait; SET @x='EE';
RAISERROR ('message 18', 18, 33) 
RAISERROR ('message plusieurs mots', 19, 16)
---d";
            Bloc   expected = new Bloc()
            {
                ScriptId     = 0,
                SqlActionId  = SqlAction.Comment,
                TypeObjectId = TypeObject.None
            };

            // Act
            var ba = new BlocAnalyzer();

            ba.Analyze(e, 0, text);

            // Assert
            Assert.NotNull(ba.Blocs);
            Assert.Equal(4, ba.Blocs.Count);
            Assert.All(ba.Blocs, b => Assert.Equal(expected, b)
                       );
        }
コード例 #5
0
        public void TestCodeClient()
        {
            var    e        = RegexFounding.List.First(x => x.Action == SqlAction.CodeClient && x.ApplyOn == TypeObject.None);
            string text     = @"
SELECT  CodeClientIs(1)
";
            Bloc   expected = new Bloc()
            {
                ScriptId     = 0,
                SqlActionId  = SqlAction.CodeClient,
                TypeObjectId = TypeObject.None,
                ClientCodeId = 1
            };

            // Act
            var ba = new BlocAnalyzer();

            ba.Analyze(e, 0, text);

            // Assert
            Assert.NotNull(ba.Blocs);
            Assert.Single(ba.Blocs);
            Assert.Collection(ba.Blocs, b => Assert.Equal(expected, b));
        }