@@ -382,7 +382,7 @@ public void StructuredTableReferenceUnqualifiedWithNumbers()
382382 }
383383
384384 [ TestMethod ]
385- public void StructuredTableReferenceMultipleColumnSpecifiers ( )
385+ public void StructuredTableReferenceSpecifierAndColumns ( )
386386 {
387387 List < ParserReference > references = new FormulaAnalyzer ( "=DeptSales[[#All],[Sales Amount]:[Commission Amount]]" ) . ParserReferences ( ) . ToList ( ) ;
388388
@@ -394,7 +394,7 @@ public void StructuredTableReferenceMultipleColumnSpecifiers()
394394 }
395395
396396 [ TestMethod ]
397- public void StructuredTableReferenceMultipleItemSpecifiers ( )
397+ public void StructuredTableReferenceSpecifiersAndColumn ( )
398398 {
399399 List < ParserReference > references = new FormulaAnalyzer ( "=DeptSales[[#Headers],[#Data],[% Commission]]" ) . ParserReferences ( ) . ToList ( ) ;
400400
@@ -405,6 +405,63 @@ public void StructuredTableReferenceMultipleItemSpecifiers()
405405 CollectionAssert . AreEqual ( new [ ] { "% Commission" } , references . First ( ) . TableColumns ) ;
406406 }
407407
408+ [ TestMethod ]
409+ public void StructuredTableReferenceMultipleRows ( )
410+ {
411+ List < ParserReference > references = new FormulaAnalyzer ( "=SUM([@Jan]:[@Feb])" ) . ParserReferences ( ) . ToList ( ) ;
412+
413+ Assert . AreEqual ( 2 , references . Count ) ;
414+
415+ Assert . AreEqual ( ReferenceType . Table , references [ 0 ] . ReferenceType ) ;
416+ Assert . AreEqual ( null , references [ 0 ] . Name ) ;
417+ CollectionAssert . AreEqual ( new [ ] { "@" } , references [ 0 ] . TableSpecifiers ) ;
418+ CollectionAssert . AreEqual ( new [ ] { "Jan" } , references [ 0 ] . TableColumns ) ;
419+
420+ Assert . AreEqual ( ReferenceType . Table , references [ 1 ] . ReferenceType ) ;
421+ Assert . AreEqual ( null , references [ 1 ] . Name ) ;
422+ CollectionAssert . AreEqual ( new [ ] { "@" } , references [ 1 ] . TableSpecifiers ) ;
423+ CollectionAssert . AreEqual ( new [ ] { "Feb" } , references [ 1 ] . TableColumns ) ;
424+ }
425+
426+ [ TestMethod ]
427+ public void StructuredTableReferenceMultipleColumns ( )
428+ {
429+ List < ParserReference > references = new FormulaAnalyzer ( "=XLOOKUP($G7,Sales[[Region]:[Region]],Sales[Mar])" ) . ParserReferences ( ) . ToList ( ) ;
430+
431+ Assert . AreEqual ( 3 , references . Count ) ;
432+
433+ Assert . AreEqual ( ReferenceType . Cell , references [ 0 ] . ReferenceType ) ;
434+ Assert . AreEqual ( "$G7" , references [ 0 ] . MinLocation ) ;
435+
436+ Assert . AreEqual ( ReferenceType . Table , references [ 1 ] . ReferenceType ) ;
437+ Assert . AreEqual ( "Sales" , references [ 1 ] . Name ) ;
438+ CollectionAssert . AreEqual ( new string [ ] { } , references [ 1 ] . TableSpecifiers ) ;
439+ CollectionAssert . AreEqual ( new [ ] { "Region" , "Region" } , references [ 1 ] . TableColumns ) ;
440+
441+ Assert . AreEqual ( ReferenceType . Table , references [ 2 ] . ReferenceType ) ;
442+ Assert . AreEqual ( "Sales" , references [ 2 ] . Name ) ;
443+ CollectionAssert . AreEqual ( new string [ ] { } , references [ 2 ] . TableSpecifiers ) ;
444+ CollectionAssert . AreEqual ( new [ ] { "Mar" } , references [ 2 ] . TableColumns ) ;
445+ }
446+
447+ [ TestMethod ]
448+ public void StructuredTableReferenceMultipleHeaders ( )
449+ {
450+ List < ParserReference > references = new FormulaAnalyzer ( "=COUNTA(Sales_5[[#Headers],[Jan]]:Sales_5[[#Headers],[Mar]])" ) . ParserReferences ( ) . ToList ( ) ;
451+
452+ Assert . AreEqual ( 2 , references . Count ) ;
453+
454+ Assert . AreEqual ( ReferenceType . Table , references [ 0 ] . ReferenceType ) ;
455+ Assert . AreEqual ( "Sales_5" , references [ 0 ] . Name ) ;
456+ CollectionAssert . AreEqual ( new [ ] { "#Headers" } , references [ 0 ] . TableSpecifiers ) ;
457+ CollectionAssert . AreEqual ( new [ ] { "Jan" } , references [ 0 ] . TableColumns ) ;
458+
459+ Assert . AreEqual ( ReferenceType . Table , references [ 1 ] . ReferenceType ) ;
460+ Assert . AreEqual ( "Sales_5" , references [ 1 ] . Name ) ;
461+ CollectionAssert . AreEqual ( new [ ] { "#Headers" } , references [ 1 ] . TableSpecifiers ) ;
462+ CollectionAssert . AreEqual ( new [ ] { "Mar" } , references [ 1 ] . TableColumns ) ;
463+ }
464+
408465 [ TestMethod ]
409466 public void SheetWithUnderscore ( )
410467 {
0 commit comments