Exemple #1
0
 private void validateReference(bool abs, AreaPtg ref1)
 {
     Assert.AreEqual(abs, !ref1.IsFirstColRelative, "First column reference is not " + (abs ? "absolute" : "relative"));
     Assert.AreEqual(abs, !ref1.IsLastColRelative, "Last column reference is not " + (abs ? "absolute" : "relative"));
     Assert.AreEqual(abs, !ref1.IsFirstRowRelative, "First row reference is not " + (abs ? "absolute" : "relative"));
     Assert.AreEqual(abs, !ref1.IsLastRowRelative, "Last row reference is not " + (abs ? "absolute" : "relative"));
 }
Exemple #2
0
        public void TestGetValue_bug44950()
        {
            // TODO - this Test probably isn't Testing much anymore
            AreaPtg ptg = new AreaPtg("B2:D3");
            NumberEval one = new NumberEval(1);
            ValueEval[] values = {
				one,
				new NumberEval(2),
				new NumberEval(3),
				new NumberEval(4),
				new NumberEval(5),
				new NumberEval(6),
		};
            AreaEval ae = EvalFactory.CreateAreaEval(ptg, values);
            if (one == ae.GetAbsoluteValue(1, 2))
            {
                throw new AssertionException("Identified bug 44950 a");
            }
            Confirm(1, ae, 1, 1);
            Confirm(2, ae, 1, 2);
            Confirm(3, ae, 1, 3);
            Confirm(4, ae, 2, 1);
            Confirm(5, ae, 2, 2);
            Confirm(6, ae, 2, 3);

        }
Exemple #3
0
 private static void resetColumns(AreaPtg aptg)
 {
     int fc = aptg.FirstColumn;
     int lc = aptg.LastColumn;
     aptg.FirstColumn = (fc);
     aptg.LastColumn = (lc);
     Assert.AreEqual(fc, aptg.FirstColumn);
     Assert.AreEqual(lc, aptg.LastColumn);
 }
Exemple #4
0
 public void SetUp()
 {
     short firstRow = 5;
     short lastRow = 13;
     short firstCol = 7;
     short lastCol = 17;
     relative = new AreaPtg(firstRow, lastRow, firstCol, lastCol, true, true, true, true);
     absolute = new AreaPtg(firstRow, lastRow, firstCol, lastCol, false, false, false, false);
 }
Exemple #5
0
 /**
  * Creates a dummy AreaEval
  * @param values empty (<code>null</code>) entries in this array will be Converted to NumberEval.ZERO
  */
 public static AreaEval CreateAreaEval(AreaPtg areaPtg, ValueEval[] values)
 {
     int nCols = areaPtg.LastColumn - areaPtg.FirstColumn + 1;
     int nRows = areaPtg.LastRow - areaPtg.FirstRow + 1;
     int nExpected = nRows * nCols;
     if (values.Length != nExpected)
     {
         throw new SystemException("Expected " + nExpected + " values but got " + values.Length);
     }
     for (int i = 0; i < nExpected; i++)
     {
         if (values[i] == null)
         {
             values[i] = NumberEval.ZERO;
         }
     }
     return new MockAreaEval(areaPtg, values);
 }
Exemple #6
0
        public void TestAbsoluteRelativeRefs()
        {
            AreaPtg sca1 = new AreaPtg(4, 5, 6, 7, true, false, true, false);
            AreaPtg sca2 = new AreaPtg(4, 5, 6, 7, false, true, false, true);
            AreaPtg sca3 = new AreaPtg(5, 5, 7, 7, true, false, true, false);
            AreaPtg sca4 = new AreaPtg(5, 5, 7, 7, false, true, false, true);

            Assert.AreEqual("G5:$H$6", sca1.ToFormulaString(), "first rel., last abs.");
            Assert.AreEqual("$G$5:H6", sca2.ToFormulaString(), "first abs., last rel.");
            Assert.AreEqual("H6:$H$6", sca3.ToFormulaString(), "first rel., last abs.");
            Assert.AreEqual("$H$6:H6", sca4.ToFormulaString(), "first abs., last rel.");

            AreaPtg cla1 = CloneArea(sca1);
            AreaPtg cla2 = CloneArea(sca2);
            AreaPtg cla3 = CloneArea(sca3);
            AreaPtg cla4 = CloneArea(sca4);

            Assert.AreEqual("G5:$H$6", cla1.ToFormulaString(), "first rel., last abs.");
            Assert.AreEqual("$G$5:H6", cla2.ToFormulaString(), "first abs., last rel.");
            Assert.AreEqual("H6:$H$6", cla3.ToFormulaString(), "first rel., last abs.");
            Assert.AreEqual("$H$6:H6", cla4.ToFormulaString(), "first abs., last rel.");
        }
        public void TestColumnOperand()
        {

            short firstRow = (short)8;
            short lastRow = (short)12;
            short colNum = (short)5;
            AreaPtg areaPtg = new AreaPtg(firstRow, lastRow, colNum, colNum, false, false, false, false);
            ValueEval[] values = {
				new NumberEval(27),
				new NumberEval(29),
				new NumberEval(35),	// value in row 10
				new NumberEval(37),
				new NumberEval(38),
		};
            ValueEval[] args = {
			EvalFactory.CreateAreaEval(areaPtg, values),
		};

            double result = NumericFunctionInvoker.Invoke(EvalInstances.UnaryPlus, args, 10, (short)20);

            Assert.AreEqual(35, result, 0);
        }
Exemple #8
0
        private static void ConfirmAreaShift(AreaPtg aptg,
                int firstRowMoved, int lastRowMoved, int numberRowsMoved,
                int expectedAreaFirstRow, int expectedAreaLastRow)
        {
            FormulaShifter fs = FormulaShifter.CreateForRowShift(0, firstRowMoved, lastRowMoved, numberRowsMoved);
            bool expectedChanged = aptg.FirstRow != expectedAreaFirstRow || aptg.LastRow != expectedAreaLastRow;

            AreaPtg copyPtg = (AreaPtg)aptg.Copy(); // clone so we can re-use aptg in calling method
            Ptg[] ptgs = { copyPtg, };
            bool actualChanged = fs.AdjustFormula(ptgs, 0);
            if (expectedAreaFirstRow < 0)
            {
                Assert.AreEqual(typeof(AreaErrPtg), ptgs[0].GetType());
                return;
            }
            Assert.AreEqual(expectedChanged, actualChanged);
            Assert.AreEqual(copyPtg, ptgs[0]);  // expected to change in place (although this is not a strict requirement)
            Assert.AreEqual(expectedAreaFirstRow, copyPtg.FirstRow);
            Assert.AreEqual(expectedAreaLastRow, copyPtg.LastRow);
        }
Exemple #9
0
 /**
  * Creates a dummy AreaEval
  * @param values empty (<code>null</code>) entries in this array will be Converted to NumberEval.ZERO
  */
 public static AreaEval CreateAreaEval(String areaRefStr, ValueEval[] values)
 {
     AreaPtg areaPtg = new AreaPtg(areaRefStr);
     return CreateAreaEval(areaPtg, values);
 }
Exemple #10
0
 private AreaPtg CloneArea(AreaPtg a)
 {
     return new AreaPtg(
             a.FirstRow, a.LastRow, a.FirstColumn, a.LastColumn,
             a.IsFirstRowRelative, a.IsLastRowRelative, a.IsFirstColRelative, a.IsLastColRelative
     );
 }
Exemple #11
0
        /**
 *
 * @param sheetIden may be <code>null</code>
 * @param part1
 * @param part2 may be <code>null</code>
 */
        private ParseNode CreateAreaRefParseNode(SheetIdentifier sheetIden, SimpleRangePart part1,
                SimpleRangePart part2)
        {

            int extIx;
            if (sheetIden == null)
            {
                extIx = Int32.MinValue;
            }
            else
            {
                String sName = sheetIden.SheetID.Name;
                if (sheetIden.BookName == null)
                {
                    extIx = _book.GetExternalSheetIndex(sName);
                }
                else
                {
                    extIx = _book.GetExternalSheetIndex(sheetIden.BookName, sName);
                }
            }
            Ptg ptg;
            if (part2 == null)
            {
                CellReference cr = part1.getCellReference();
                if (sheetIden == null)
                {
                    ptg = new RefPtg(cr);
                }
                else
                {
                    ptg = new Ref3DPtg(cr, extIx);
                }
            }
            else
            {
                AreaReference areaRef = CreateAreaRef(part1, part2);

                if (sheetIden == null)
                {
                    ptg = new AreaPtg(areaRef);
                }
                else
                {
                    ptg = new Area3DPtg(areaRef, extIx);
                }
            }
            return new ParseNode(ptg);
        }
Exemple #12
0
        private static CellRangeAddress ShiftRange(FormulaShifter Shifter, CellRangeAddress cra, int currentExternSheetIx)
        {
            // FormulaShifter works well in terms of Ptgs - so convert CellRangeAddress to AreaPtg (and back) here
            AreaPtg aptg = new AreaPtg(cra.FirstRow, cra.LastRow, cra.FirstColumn, cra.LastColumn, false, false, false, false);
            Ptg[] ptgs = { aptg, };

            if (!Shifter.AdjustFormula(ptgs, currentExternSheetIx))
            {
                return cra;
            }
            Ptg ptg0 = ptgs[0];
            if (ptg0 is AreaPtg)
            {
                AreaPtg bptg = (AreaPtg)ptg0;
                return new CellRangeAddress(bptg.FirstRow, bptg.LastRow, bptg.FirstColumn, bptg.LastColumn);
            }
            if (ptg0 is AreaErrPtg)
            {
                return null;
            }
            throw new InvalidOperationException("Unexpected Shifted ptg class (" + ptg0.GetType().Name + ")");
        }
Exemple #13
0
        /**
         *
         * @param sheetIden may be <code>null</code>
         * @param part1
         * @param part2 may be <code>null</code>
         */
        private ParseNode CreateAreaRefParseNode(SheetIdentifier sheetIden, SimpleRangePart part1,
                SimpleRangePart part2)
        {
            Ptg ptg;
            if (part2 == null)
            {
                CellReference cr = part1.CellReference;
                if (sheetIden == null)
                {
                    ptg = new RefPtg(cr);
                }
                else
                {
                    ptg = _book.Get3DReferencePtg(cr, sheetIden);
                }
            }
            else
            {
                AreaReference areaRef = CreateAreaRef(part1, part2);

                if (sheetIden == null)
                {
                    ptg = new AreaPtg(areaRef);
                }
                else
                {
                    ptg = _book.Get3DReferencePtg(areaRef, sheetIden);
                }
            }
            return new ParseNode(ptg);
        }