Skip to content

Commit bd94569

Browse files
committed
Add more unit tests
1 parent 028c45d commit bd94569

File tree

1 file changed

+59
-2
lines changed

1 file changed

+59
-2
lines changed

src/XLParser.Tests/FormulaAnalysisTest.cs

Lines changed: 59 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)