public void Add(Int32 row, Int32 column, XLCell cell)
        {
            Count++;

            IncrementUsage(RowsUsed, row);
            IncrementUsage(ColumnsUsed, column);

            if (!RowsCollection.TryGetValue(row, out Dictionary <int, XLCell> columnsCollection))
            {
                columnsCollection = new Dictionary <int, XLCell>();
                RowsCollection.Add(row, columnsCollection);
            }
            columnsCollection.Add(column, cell);
            if (row > MaxRowUsed)
            {
                MaxRowUsed = row;
            }
            if (column > MaxColumnUsed)
            {
                MaxColumnUsed = column;
            }

            if (Deleted.TryGetValue(row, out HashSet <int> delHash))
            {
                delHash.Remove(column);
            }
        }
        public void ExtendTest(int rowCount)
        {
            var target = new RowsCollection();

            var      lifeLineStub = new Mock <Lifeline>(MockBehavior.Loose, null, null, null, 0);
            Lifeline lifeline     = lifeLineStub.Object;
            var      rowMocks     = new Stack <Mock>();

            for (int i = 0; i < rowCount; i++)
            {
                var rowMock = new Mock <Row>(MockBehavior.Strict, 0);
                rowMocks.Push(rowMock);
                rowMock.Setup(row => row.Extend(lifeline));
                Row targetRow = rowMock.Object;
                target.Add(targetRow);
            }
            target.Extend(lifeline);

            foreach (var rowMock in rowMocks)
            {
                rowMock.VerifyAll();
            }
        }