|
1 | | -using System; |
2 | | -using System.Collections.Generic; |
3 | | -using System.Collections.ObjectModel; |
| 1 | +using System.Collections.Generic; |
4 | 2 | using System.Linq; |
5 | 3 | using Microsoft.VisualStudio.TestTools.UnitTesting; |
6 | 4 | using Irony.Parsing; |
7 | | -using System.Globalization; |
8 | | -using XLParser; |
9 | 5 |
|
10 | 6 | namespace XLParser.Tests |
11 | 7 | { |
@@ -410,17 +406,11 @@ public void StructuredTableReferenceMultipleRows() |
410 | 406 | { |
411 | 407 | List<ParserReference> references = new FormulaAnalyzer("=SUM([@Jan]:[@Feb])").ParserReferences().ToList(); |
412 | 408 |
|
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); |
| 409 | + Assert.AreEqual(1, references.Count); |
| 410 | + Assert.AreEqual(ReferenceType.Table, references.First().ReferenceType); |
| 411 | + Assert.AreEqual(null, references.First().Name); |
| 412 | + CollectionAssert.AreEqual(new[] {"@"}, references.First().TableSpecifiers); |
| 413 | + CollectionAssert.AreEqual(new[] {"Jan", "Feb"}, references.First().TableColumns); |
424 | 414 | } |
425 | 415 |
|
426 | 416 | [TestMethod] |
@@ -449,17 +439,54 @@ public void StructuredTableReferenceMultipleHeaders() |
449 | 439 | { |
450 | 440 | List<ParserReference> references = new FormulaAnalyzer("=COUNTA(Sales_5[[#Headers],[Jan]]:Sales_5[[#Headers],[Mar]])").ParserReferences().ToList(); |
451 | 441 |
|
452 | | - Assert.AreEqual(2, references.Count); |
| 442 | + Assert.AreEqual(1, references.Count); |
453 | 443 |
|
454 | 444 | Assert.AreEqual(ReferenceType.Table, references[0].ReferenceType); |
455 | 445 | Assert.AreEqual("Sales_5", references[0].Name); |
456 | 446 | CollectionAssert.AreEqual(new[] {"#Headers"}, references[0].TableSpecifiers); |
| 447 | + CollectionAssert.AreEqual(new[] {"Jan", "Mar"}, references[0].TableColumns); |
| 448 | + } |
| 449 | + |
| 450 | + [TestMethod] |
| 451 | + public void StructuredTableReferenceIntersectColumns() |
| 452 | + { |
| 453 | + List<ParserReference> references = new FormulaAnalyzer("=SUM(Sales_2[Jan]:Sales_2[Feb])").ParserReferences().ToList(); |
| 454 | + |
| 455 | + Assert.AreEqual(1, references.Count); |
| 456 | + Assert.AreEqual(ReferenceType.Table, references.First().ReferenceType); |
| 457 | + Assert.AreEqual("Sales_2", references.First().Name); |
| 458 | + CollectionAssert.AreEqual(new string[] {}, references.First().TableSpecifiers); |
| 459 | + CollectionAssert.AreEqual(new[] {"Jan", "Feb"}, references.First().TableColumns); |
| 460 | + } |
| 461 | + |
| 462 | + [TestMethod] |
| 463 | + public void StructuredTableReferenceIntersectDifferentSpecifiers() |
| 464 | + { |
| 465 | + List<ParserReference> references = new FormulaAnalyzer("=COUNTA(Sales_2[[#Headers],[Jan]]:Sales_2[[#Data],[Feb]])").ParserReferences().ToList(); |
| 466 | + |
| 467 | + Assert.AreEqual(1, references.Count); |
| 468 | + Assert.AreEqual(ReferenceType.Table, references.First().ReferenceType); |
| 469 | + Assert.AreEqual("Sales_2", references.First().Name); |
| 470 | + CollectionAssert.AreEqual(new string[] {}, references.First().TableSpecifiers); |
| 471 | + CollectionAssert.AreEqual(new[] {"Jan", "Feb"}, references.First().TableColumns); |
| 472 | + } |
| 473 | + |
| 474 | + [TestMethod] |
| 475 | + public void StructuredTableReferenceIntersectDifferentTables() |
| 476 | + { |
| 477 | + List<ParserReference> references = new FormulaAnalyzer("=COUNTA(Sales_2[Jan]:Sales_4[Feb])").ParserReferences().ToList(); |
| 478 | + |
| 479 | + Assert.AreEqual(2, references.Count); |
| 480 | + |
| 481 | + Assert.AreEqual(ReferenceType.Table, references[0].ReferenceType); |
| 482 | + Assert.AreEqual("Sales_2", references[0].Name); |
| 483 | + CollectionAssert.AreEqual(new string[] {}, references[0].TableSpecifiers); |
457 | 484 | CollectionAssert.AreEqual(new[] {"Jan"}, references[0].TableColumns); |
458 | 485 |
|
459 | 486 | 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); |
| 487 | + Assert.AreEqual("Sales_4", references[1].Name); |
| 488 | + CollectionAssert.AreEqual(new string[] {}, references[1].TableSpecifiers); |
| 489 | + CollectionAssert.AreEqual(new[] {"Feb"}, references[1].TableColumns); |
463 | 490 | } |
464 | 491 |
|
465 | 492 | [TestMethod] |
|
0 commit comments