public void CompileSingleCellReferenceMultiCellReferenceOutsideOfRow() { var structuredReference = $"{StructuredReferenceExpressionTest.TableName}[[#Data],[{StructuredReferenceExpressionTest.Header3}]:[{StructuredReferenceExpressionTest.Header4}]]"; // NOTE:: RangeAddressFactory.Create() takes column first, then row var origin = this.AddressFactory.Create("Sheet1", 7, 15); var parsingContext = ParsingContext.Create(); using (var scope = parsingContext.Scopes.NewScope(origin)) { var expression = new StructuredReferenceExpression(structuredReference, this.DataProvider, parsingContext, false); var result = expression.Compile(); var resultRange = result.Result as ExcelDataProvider.IRangeInfo; Assert.AreEqual(4, resultRange.Address.Start.Row); Assert.AreEqual(5, resultRange.Address.Start.Column); Assert.AreEqual(9, resultRange.Address.End.Row); Assert.AreEqual(6, resultRange.Address.End.Column); Assert.AreEqual("h3_r1", resultRange.GetOffset(0, 0)); Assert.AreEqual("h3_r2", resultRange.GetOffset(1, 0)); Assert.AreEqual("h3_r3", resultRange.GetOffset(2, 0)); Assert.AreEqual("h3_r4", resultRange.GetOffset(3, 0)); Assert.AreEqual(3, resultRange.GetOffset(4, 0)); Assert.AreEqual("h3_r6", resultRange.GetOffset(5, 0)); Assert.AreEqual("h4_r1", resultRange.GetOffset(0, 1)); Assert.AreEqual("h4_r2", resultRange.GetOffset(1, 1)); Assert.AreEqual("h4_r3", resultRange.GetOffset(2, 1)); Assert.AreEqual("h4_r4", resultRange.GetOffset(3, 1)); Assert.AreEqual(4, resultRange.GetOffset(4, 1)); Assert.AreEqual("h4_r6", resultRange.GetOffset(5, 1)); } }
public void CompileSingleCellReferenceDoNotNegate() { var structuredReference = $"{StructuredReferenceExpressionTest.TableName}[[#This Row],[{StructuredReferenceExpressionTest.Header1}]]"; // NOTE:: RangeAddressFactory.Create() takes column first, then row var origin = this.AddressFactory.Create("Sheet1", 7, 8); var parsingContext = ParsingContext.Create(); using (var scope = parsingContext.Scopes.NewScope(origin)) { var expression = new StructuredReferenceExpression(structuredReference, this.DataProvider, parsingContext, false); var result = expression.Compile(); Assert.AreEqual(1, result.Result); } }
public void CompileSingleCellReferenceSingleCellResolveAsRange() { var structuredReference = $"{StructuredReferenceExpressionTest.TableName}[[#This Row],[{StructuredReferenceExpressionTest.Header1}]]"; // NOTE:: RangeAddressFactory.Create() takes column first, then row var origin = this.AddressFactory.Create("Sheet1", 7, 8); var parsingContext = ParsingContext.Create(); using (var scope = parsingContext.Scopes.NewScope(origin)) { var expression = new StructuredReferenceExpression(structuredReference, this.DataProvider, parsingContext, false); expression.ResolveAsRange = true; var result = expression.Compile(); var resultRange = result.Result as ExcelDataProvider.IRangeInfo; Assert.AreEqual(8, resultRange.Address.Start.Row); Assert.AreEqual(3, resultRange.Address.Start.Column); Assert.AreEqual(8, resultRange.Address.End.Row); Assert.AreEqual(3, resultRange.Address.End.Column); Assert.AreEqual(1, resultRange.GetOffset(0, 0)); } }