@@ -10,7 +10,7 @@ namespace Sql.Analyzer.UnitTests.Parsers
1010 public class SqlParserTests
1111 {
1212 [ TestMethod ]
13- public void FindSqlVariables_DeclareVariable_NotDetected ( )
13+ public void FindSqlVariables_DeclareVariable ( )
1414 {
1515 var sql =
1616 @"DECLARE @ids udt_ids_list;
@@ -34,7 +34,7 @@ FROM dbo.table
3434 }
3535
3636 [ TestMethod ]
37- public void FindSqlVariables_Identity_NotDetected ( )
37+ public void FindSqlVariables_Identity ( )
3838 {
3939 var sql =
4040 @"SELECT id, @@IDENTITY
@@ -46,5 +46,50 @@ FROM dbo.table
4646 Assert . AreEqual ( 1 , parameters . Count ) ;
4747 Assert . AreEqual ( "name" , parameters . First ( ) ) ;
4848 }
49+
50+ [ TestMethod ]
51+ public void FindSqlVariables_IfStatement ( )
52+ {
53+ var sql =
54+ @"declare @result tinyint = 0;
55+
56+ IF @ip = 'unknown'
57+ SET @result = 0;
58+ ELSE
59+ SET @result = 1;
60+
61+ select @result;" ;
62+
63+ var parameters = SqlParser . FindParameters ( sql ) ;
64+
65+ Assert . AreEqual ( 1 , parameters . Count ) ;
66+ Assert . AreEqual ( "ip" , parameters . First ( ) ) ;
67+ }
68+
69+ [ TestMethod ]
70+ public void FindSqlVariables_MultipleDeclaration ( )
71+ {
72+ var sql =
73+ @"DECLARE @Planner1 VARCHAR(50) = '2566927',
74+ @Planner2 varchar(10) = '12201704',
75+ @OtherVar int = 42
76+ SELECT * FROM table" ;
77+
78+ var parameters = SqlParser . FindParameters ( sql ) ;
79+
80+ Assert . AreEqual ( 0 , parameters . Count ) ;
81+ }
82+
83+ [ TestMethod ]
84+ public void FindSqlVariables_ExecuteStoreProcedure ( )
85+ {
86+ var sql = @"EXEC sp_api_user_GetServicesSchedule @id = @uid, @adminID = @aid" ;
87+
88+ var parameters = SqlParser . FindParameters ( sql ) ;
89+
90+ Assert . AreEqual ( 2 , parameters . Count ) ;
91+ Assert . IsTrue ( parameters . Contains ( "uid" ) ) ;
92+ Assert . IsTrue ( parameters . Contains ( "aid" ) ) ;
93+ }
4994 }
5095}
0 commit comments