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); } }
/// <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..."; } }
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) ); }
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) ); }
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)); }