@@ -309,6 +309,8 @@ FROM SomeTable a JOIN SomeTable b
309309 Assert . AreEqual ( 21 , select . From . Tokens . Count ) ;
310310 Assert . IsNull ( select . Where ) ;
311311 Assert . AreEqual ( 1 , select . Select . Columns . Count ) ;
312+ Assert . AreEqual ( 3 , select . Select . Columns [ 0 ] . Tokens . Count ) ;
313+ Assert . AreEqual ( "a" , select . Select . Columns [ 0 ] . Expression . AsMulticolumn . TableReference . Single ( ) . Text ) ;
312314 }
313315
314316 [ Test ]
@@ -889,5 +891,42 @@ public void SelectStatement_SELECT_NULL()
889891 Assert . AreEqual ( TSQLExpressionType . Null , select . Select . Columns [ 3 ] . Expression . Type ) ;
890892 Assert . AreEqual ( 5 , select . Select . Columns [ 4 ] . Expression . AsConstant . Literal . AsNumericLiteral . Value ) ;
891893 }
894+
895+ [ Test ]
896+ public void SelectStatement_ChainedOperators ( )
897+ {
898+ // regression test for https://github.com/bruce-dunwiddie/tsql-parser/issues/110
899+ List < TSQLStatement > statements = TSQLStatementReader . ParseStatements (
900+ @"select isnull(a, 0) * isnull(b, 0) / 100 as Result from myTable" ,
901+ includeWhitespace : false ) ;
902+
903+ Assert . AreEqual ( 1 , statements . Count ) ;
904+ TSQLSelectStatement select = statements . Single ( ) . AsSelect ;
905+ Assert . AreEqual ( 20 , select . Tokens . Count ) ;
906+ Assert . AreEqual ( 1 , select . Select . Columns . Count ) ;
907+ }
908+
909+ [ Test ]
910+ public void SelectStatement_Stuff ( )
911+ {
912+ // regression test for https://github.com/bruce-dunwiddie/tsql-parser/issues/108
913+ List < TSQLStatement > statements = TSQLStatementReader . ParseStatements (
914+ @"select stuff ( (select top 10 note from asset_note where note is not null order by note_id for XML path('')) , 1 , 1 , 'Note: ' );" ,
915+ includeWhitespace : false ) ;
916+
917+ Assert . AreEqual ( 1 , statements . Count ) ;
918+ TSQLSelectStatement select = statements . Single ( ) . AsSelect ;
919+
920+ TSQLSelectStatement innerSelect = select
921+ . Select
922+ . Columns [ 0 ]
923+ . Expression
924+ . AsFunction
925+ . Arguments [ 0 ]
926+ . AsSubquery
927+ . Select ;
928+
929+ Assert . AreEqual ( 6 , innerSelect . For . Tokens . Count ) ;
930+ }
892931 }
893932}
0 commit comments