Example #1
0
        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));
            }
        }
Example #2
0
        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);
            }
        }
Example #3
0
        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));
            }
        }