@@ -211,6 +211,44 @@ describe('Tests for selecting rules', () => {
211211 expect ( ruleNamesFor ( selection , 'stubEngine3' ) ) . toEqual ( stubEngine3Rules ) ;
212212 } ) ;
213213
214+ it . each ( [
215+ {
216+ selector : '(2,3):stubEngine1' ,
217+ engines : [ 'stubEngine1' ] ,
218+ stubEngine1Rules : [ 'stub1RuleB' , 'stub1RuleC' , 'stub1RuleE' ] ,
219+ stubEngine2Rules : [ ] ,
220+ stubEngine3Rules : [ ]
221+ } ,
222+ {
223+ selector : 'stubEngine1:(2,3)' ,
224+ engines : [ 'stubEngine1' ] ,
225+ stubEngine1Rules : [ 'stub1RuleB' , 'stub1RuleC' , 'stub1RuleE' ] ,
226+ stubEngine2Rules : [ ] ,
227+ stubEngine3Rules : [ ]
228+ } ,
229+ {
230+ selector : '(stubEngine1:2),3' ,
231+ engines : [ 'stubEngine1' , 'stubEngine2' , 'stubEngine3' ] ,
232+ stubEngine1Rules : [ 'stub1RuleB' , 'stub1RuleC' , 'stub1RuleE' ] ,
233+ stubEngine2Rules : [ 'stub2RuleA' ] ,
234+ stubEngine3Rules : [ 'stub3RuleA' ]
235+ } ,
236+ {
237+ selector : '3,(stubEngine1:2)' ,
238+ engines : [ 'stubEngine1' , 'stubEngine2' , 'stubEngine3' ] ,
239+ stubEngine1Rules : [ 'stub1RuleB' , 'stub1RuleC' , 'stub1RuleE' ] ,
240+ stubEngine2Rules : [ 'stub2RuleA' ] ,
241+ stubEngine3Rules : [ 'stub3RuleA' ]
242+ }
243+ ] ) ( 'Operations within parentheses resolve before operations outside them. Case: $selector' , async ( { selector, engines, stubEngine1Rules, stubEngine2Rules, stubEngine3Rules} ) => {
244+ const selection : RuleSelection = await codeAnalyzer . selectRules ( [ selector ] ) ;
245+
246+ expect ( selection . getEngineNames ( ) ) . toEqual ( engines ) ;
247+ expect ( ruleNamesFor ( selection , 'stubEngine1' ) ) . toEqual ( stubEngine1Rules ) ;
248+ expect ( ruleNamesFor ( selection , 'stubEngine2' ) ) . toEqual ( stubEngine2Rules ) ;
249+ expect ( ruleNamesFor ( selection , 'stubEngine3' ) ) . toEqual ( stubEngine3Rules ) ;
250+ } )
251+
214252 it . each ( [
215253 {
216254 case : 'colons are used and multiple selectors are provided' ,
0 commit comments