8126 lines
422 KiB
JavaScript
8126 lines
422 KiB
JavaScript
/*
|
||
* (c) Copyright Ascensio System SIA 2010-2024
|
||
*
|
||
* This program is a free software product. You can redistribute it and/or
|
||
* modify it under the terms of the GNU Affero General Public License (AGPL)
|
||
* version 3 as published by the Free Software Foundation. In accordance with
|
||
* Section 7(a) of the GNU AGPL its Section 15 shall be amended to the effect
|
||
* that Ascensio System SIA expressly excludes the warranty of non-infringement
|
||
* of any third-party rights.
|
||
*
|
||
* This program is distributed WITHOUT ANY WARRANTY; without even the implied
|
||
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. For
|
||
* details, see the GNU AGPL at: http://www.gnu.org/licenses/agpl-3.0.html
|
||
*
|
||
* You can contact Ascensio System SIA at 20A-6 Ernesta Birznieka-Upish
|
||
* street, Riga, Latvia, EU, LV-1050.
|
||
*
|
||
* The interactive user interfaces in modified source and object code versions
|
||
* of the Program must display Appropriate Legal Notices, as required under
|
||
* Section 5 of the GNU AGPL version 3.
|
||
*
|
||
* Pursuant to Section 7(b) of the License you must retain the original Product
|
||
* logo when distributing the program. Pursuant to Section 7(e) we decline to
|
||
* grant you any rights under trademark law for use of our trademarks.
|
||
*
|
||
* All the Product's GUI elements, including illustrations and icon sets, as
|
||
* well as technical writing content are licensed under the terms of the
|
||
* Creative Commons Attribution-ShareAlike 4.0 International. See the License
|
||
* terms at http://creativecommons.org/licenses/by-sa/4.0/legalcode
|
||
*
|
||
*/
|
||
|
||
$(function () {
|
||
|
||
Asc.spreadsheet_api.prototype._init = function () {
|
||
this._loadModules();
|
||
};
|
||
Asc.spreadsheet_api.prototype._loadFonts = function (fonts, callback) {
|
||
callback();
|
||
};
|
||
Asc.spreadsheet_api.prototype.onEndLoadFile = function (fonts, callback) {
|
||
openDocument();
|
||
};
|
||
AscCommonExcel.WorkbookView.prototype._calcMaxDigitWidth = function () {
|
||
};
|
||
AscCommonExcel.WorkbookView.prototype._init = function () {
|
||
};
|
||
AscCommonExcel.WorkbookView.prototype._isLockedUserProtectedRange = function (callback) {
|
||
callback(true);
|
||
};
|
||
AscCommonExcel.WorkbookView.prototype._onWSSelectionChanged = function () {
|
||
};
|
||
AscCommonExcel.WorkbookView.prototype.showWorksheet = function () {
|
||
};
|
||
AscCommonExcel.WorkbookView.prototype.recalculateDrawingObjects = function () {
|
||
};
|
||
AscCommonExcel.WorkbookView.prototype.restoreFocus = function () {
|
||
};
|
||
AscCommonExcel.WorkbookView.prototype._onChangeSelection = function (isStartPoint, dc, dr, isCoord, isCtrl, callback) {
|
||
if (!this._checkStopCellEditorInFormulas()) {
|
||
return;
|
||
}
|
||
|
||
var ws = this.getWorksheet();
|
||
if (ws.model.getSheetProtection(Asc.c_oAscSheetProtectType.selectUnlockedCells)) {
|
||
return;
|
||
}
|
||
if (ws.model.getSheetProtection(Asc.c_oAscSheetProtectType.selectLockedCells)) {
|
||
//TODO _getRangeByXY ?
|
||
var newRange = isCoord ? ws._getRangeByXY(dc, dr) :
|
||
ws._calcSelectionEndPointByOffset(dc, dr);
|
||
var lockedCell = ws.model.getLockedCell(newRange.c2, newRange.r2);
|
||
if (lockedCell || lockedCell === null) {
|
||
return;
|
||
}
|
||
}
|
||
|
||
if (this.selectionDialogMode && !ws.model.selectionRange) {
|
||
if (isCoord) {
|
||
ws.model.selectionRange = new AscCommonExcel.SelectionRange(ws.model);
|
||
|
||
// remove first range if we paste argument with ctrl key
|
||
if (isCtrl && ws.model.selectionRange.ranges && Array.isArray(ws.model.selectionRange.ranges)) {
|
||
ws.model.selectionRange.ranges.shift();
|
||
}
|
||
|
||
isStartPoint = true;
|
||
} else {
|
||
ws.model.selectionRange = ws.model.copySelection.clone();
|
||
}
|
||
}
|
||
|
||
var t = this;
|
||
var d = isStartPoint ? ws.changeSelectionStartPoint(dc, dr, isCoord, isCtrl) :
|
||
ws.changeSelectionEndPoint(dc, dr, isCoord, isCoord && this.keepType);
|
||
if (!isCoord && !isStartPoint) {
|
||
// Выделение с зажатым shift
|
||
this.canUpdateAfterShiftUp = true;
|
||
}
|
||
this.keepType = isCoord;
|
||
// if (isCoord && !this.timerEnd && this.timerId === null) {
|
||
// this.timerId = setTimeout(function () {
|
||
// var arrClose = [];
|
||
// arrClose.push(new asc_CMM({type: c_oAscMouseMoveType.None}));
|
||
// t.handlers.trigger("asc_onMouseMove", arrClose);
|
||
// t._onUpdateCursor(AscCommon.Cursors.CellCur);
|
||
// t.timerId = null;
|
||
// t.timerEnd = true;
|
||
// }, 1000);
|
||
// }
|
||
|
||
if (this.isFormulaEditMode && this.isCellEditMode && this.cellEditor && this.cellEditor.openFromTopLine) {
|
||
/* set focus to the top formula entry line */
|
||
this.cellEditor.restoreFocus();
|
||
}
|
||
|
||
AscCommonExcel.applyFunction(callback, d);
|
||
};
|
||
AscCommonExcel.WorksheetView.prototype._init = function () {
|
||
};
|
||
AscCommonExcel.WorksheetView.prototype.updateRanges = function () {
|
||
};
|
||
AscCommonExcel.WorksheetView.prototype._autoFitColumnsWidth = function () {
|
||
};
|
||
AscCommonExcel.WorksheetView.prototype.cleanSelection = function () {
|
||
};
|
||
AscCommonExcel.WorksheetView.prototype._drawSelection = function () {
|
||
};
|
||
AscCommonExcel.WorksheetView.prototype._scrollToRange = function () {
|
||
};
|
||
AscCommonExcel.WorksheetView.prototype.draw = function () {
|
||
};
|
||
AscCommonExcel.WorksheetView.prototype._prepareDrawingObjects = function () {
|
||
};
|
||
AscCommonExcel.WorksheetView.prototype._initCellsArea = function () {
|
||
};
|
||
AscCommonExcel.WorksheetView.prototype.getZoom = function () {
|
||
};
|
||
AscCommonExcel.WorksheetView.prototype._prepareCellTextMetricsCache = function () {
|
||
};
|
||
AscCommonExcel.WorksheetView.prototype._getCellCache = function (col, row) {
|
||
let _cell = null;
|
||
this.model.getRange3(row, col, row, col)._foreachNoEmpty(function(cell, row, col) {
|
||
if (cell && !cell.isEmptyTextString()) {
|
||
_cell = {cellType: cell.getType()}
|
||
}
|
||
}, null, true);
|
||
return _cell;
|
||
};
|
||
|
||
AscCommon.baseEditorsApi.prototype._onEndLoadSdk = function () {
|
||
};
|
||
AscCommonExcel.WorksheetView.prototype._isLockedCells = function (range, subType, callback) {
|
||
callback(true);
|
||
return true;
|
||
};
|
||
AscCommonExcel.WorksheetView.prototype._isLockedAll = function (callback) {
|
||
callback(true);
|
||
};
|
||
AscCommonExcel.WorksheetView.prototype._isLockedFrozenPane = function (callback) {
|
||
callback(true);
|
||
};
|
||
AscCommonExcel.WorksheetView.prototype._updateVisibleColsCount = function () {
|
||
};
|
||
AscCommonExcel.WorksheetView.prototype._calcActiveCellOffset = function () {
|
||
};
|
||
|
||
AscCommon.baseEditorsApi.prototype._onEndLoadSdk = function () {
|
||
};
|
||
Asc.ReadDefTableStyles = function(){};
|
||
|
||
function openDocument(){
|
||
AscCommon.g_oTableId.init();
|
||
api._onEndLoadSdk();
|
||
api.isOpenOOXInBrowser = false;
|
||
api.OpenDocumentFromBin(null, AscCommon.getEmpty());
|
||
}
|
||
|
||
var api = new Asc.spreadsheet_api({
|
||
'id-view': 'editor_sdk'
|
||
});
|
||
api.FontLoader = {
|
||
LoadDocumentFonts: function() {}
|
||
};
|
||
window["Asc"]["editor"] = api;
|
||
AscCommon.g_oTableId.init();
|
||
api._onEndLoadSdk();
|
||
api.isOpenOOXInBrowser = false;
|
||
api.OpenDocumentFromBin(null, AscCommon.getEmpty());
|
||
api.initCollaborativeEditing({});
|
||
api.wb = new AscCommonExcel.WorkbookView(api.wbModel, api.controller, api.handlers, api.HtmlElement,
|
||
api.topLineEditorElement, api, api.collaborativeEditing, api.fontRenderingMode);
|
||
var wb = api.wbModel;
|
||
wb.handlers.add("getSelectionState", function () {
|
||
return null;
|
||
});
|
||
wb.handlers.add("getLockDefNameManagerStatus", function () {
|
||
return true;
|
||
});
|
||
wb.handlers.add("asc_onConfirmAction", function (test1, callback) {
|
||
callback(true);
|
||
});
|
||
api.wb.cellCommentator = new AscCommonExcel.CCellCommentator({
|
||
model: api.wbModel.aWorksheets[0],
|
||
collaborativeEditing: null,
|
||
draw: function() {
|
||
},
|
||
handlers: {
|
||
trigger: function() {
|
||
return false;
|
||
}
|
||
}
|
||
});
|
||
|
||
AscCommonExcel.CCellCommentator.prototype.isLockedComment = function (oComment, callbackFunc) {
|
||
callbackFunc(true);
|
||
};
|
||
AscCommonExcel.CCellCommentator.prototype.drawCommentCells = function () {
|
||
};
|
||
AscCommonExcel.CCellCommentator.prototype.ascCvtRatio = function () {
|
||
};
|
||
|
||
var wsView = api.wb.getWorksheet(0);
|
||
wsView.handlers = api.handlers;
|
||
wsView.objectRender = new AscFormat.DrawingObjects();
|
||
var ws = api.wbModel.aWorksheets[0];
|
||
|
||
var getRange = function (c1, r1, c2, r2) {
|
||
return new window["Asc"].Range(c1, r1, c2, r2);
|
||
};
|
||
const clearData = function (c1, r1, c2, r2) {
|
||
ws.autoFilters.deleteAutoFilter(getRange(0,0,0,0));
|
||
ws.TableParts = [];
|
||
ws.removeRows(r1, r2, false);
|
||
ws.removeCols(c1, c2);
|
||
};
|
||
|
||
function checkUndoRedo(fBefore, fAfter, desc) {
|
||
fAfter("after_" + desc);
|
||
AscCommon.History.Undo();
|
||
fBefore("undo_" + desc);
|
||
AscCommon.History.Redo();
|
||
fAfter("redo_" + desc);
|
||
AscCommon.History.Undo();
|
||
}
|
||
|
||
function compareData (assert, range, data, desc) {
|
||
for (let i = range.r1; i <= range.r2; i++) {
|
||
for (let j = range.c1; j <= range.c2; j++) {
|
||
let rangeVal = ws.getCell3(i, j);
|
||
let dataVal = data[i - range.r1][j - range.c1];
|
||
assert.strictEqual(rangeVal.getValue(), dataVal, desc + " compare " + rangeVal.getName());
|
||
}
|
||
}
|
||
}
|
||
function autofillData (assert, rangeTo, expectedData, description) {
|
||
for (let i = rangeTo.r1; i <= rangeTo.r2; i++) {
|
||
for (let j = rangeTo.c1; j <= rangeTo.c2; j++) {
|
||
let rangeToVal = ws.getCell3(i, j);
|
||
let dataVal = expectedData[i - rangeTo.r1][j - rangeTo.c1];
|
||
assert.strictEqual(rangeToVal.getValue(), dataVal, `${description} Cell: ${rangeToVal.getName()}, Value: ${dataVal}`);
|
||
}
|
||
}
|
||
}
|
||
function reverseAutofillData (assert, rangeTo, expectedData, description) {
|
||
for (let i = rangeTo.r1; i >= rangeTo.r2; i--) {
|
||
for (let j = rangeTo.c1; j >= rangeTo.c2; j--) {
|
||
let rangeToVal = ws.getCell3(i, j);
|
||
let dataVal = expectedData[Math.abs(i - rangeTo.r1)][Math.abs(j - rangeTo.c1)];
|
||
assert.strictEqual(rangeToVal.getValue(), dataVal, `${description} Cell: ${rangeToVal.getName()}, Value: ${dataVal}`);
|
||
}
|
||
}
|
||
}
|
||
function getAutoFillRange(wsView, c1To, r1To, c2To, r2To, nHandleDirection, nFillHandleArea) {
|
||
wsView.fillHandleArea = nFillHandleArea;
|
||
wsView.fillHandleDirection = nHandleDirection;
|
||
wsView.activeFillHandle = getRange(c1To, r1To, c2To, r2To);
|
||
wsView.applyFillHandle(0,0,false);
|
||
|
||
return wsView;
|
||
}
|
||
function updateDataToUpCase (aExpectedData) {
|
||
return aExpectedData.map (function (expectedData) {
|
||
if (Array.isArray(expectedData)) {
|
||
return [expectedData[0].toUpperCase()]
|
||
}
|
||
return expectedData.toUpperCase();
|
||
});
|
||
}
|
||
function updateDataToLowCase (aExpectedData) {
|
||
return aExpectedData.map (function (expectedData) {
|
||
if (Array.isArray(expectedData)) {
|
||
return [expectedData[0].toLowerCase()]
|
||
}
|
||
return expectedData.toLowerCase();
|
||
});
|
||
}
|
||
function getHorizontalAutofillCases(c1From, c2From, c1To, c2To, assert, expectedData, nFillHandleArea) {
|
||
const [
|
||
expectedDataCapitalized,
|
||
expectedDataUpper,
|
||
expectedDataLower,
|
||
expectedDataShortCapitalized,
|
||
expectedDataShortUpper,
|
||
expectedDataShortLower
|
||
] = expectedData;
|
||
|
||
const nHandleDirection = 0; // 0 - Horizontal, 1 - Vertical
|
||
let autofillC1 = nFillHandleArea === 3 ? c2From + 1 : c1From - 1;
|
||
const autoFillAssert = nFillHandleArea === 3 ? autofillData : reverseAutofillData;
|
||
const descSequenceType = nFillHandleArea === 3 ? 'Asc sequence.' : 'Reverse sequence.';
|
||
// With capitalized
|
||
ws.selectionRange.ranges = [getRange(c1From, 0, c2From, 0)];
|
||
wsView = getAutoFillRange(wsView, c1To, 0, c2To, 0, nHandleDirection, nFillHandleArea);
|
||
let autoFillRange = getRange(autofillC1, 0, c2To, 0);
|
||
autoFillAssert(assert, autoFillRange, [expectedDataCapitalized], `Case: ${descSequenceType} With capitalized`);
|
||
|
||
//Upper-registry
|
||
ws.selectionRange.ranges = [getRange(c1From, 1, c2From, 1)];
|
||
wsView = getAutoFillRange(wsView, c1To, 1, c2To, 1, nHandleDirection, nFillHandleArea);
|
||
autoFillRange = getRange(autofillC1, 1, c2To, 1);
|
||
autoFillAssert(assert, autoFillRange, [expectedDataUpper], `Case: ${descSequenceType} Upper-registry`);
|
||
|
||
// Lower-registry
|
||
ws.selectionRange.ranges = [getRange(c1From, 2, c2From, 2)];
|
||
wsView = getAutoFillRange(wsView, c1To, 2, c2To, 2, nHandleDirection, nFillHandleArea);
|
||
autoFillRange = getRange(autofillC1, 2, c2To, 2);
|
||
autoFillAssert(assert, autoFillRange, [expectedDataLower], `Case: ${descSequenceType} Lower-registry`);
|
||
|
||
// Camel-registry - SuNdAy
|
||
ws.selectionRange.ranges = [getRange(c1From, 3, c2From, 3)];
|
||
wsView = getAutoFillRange(wsView, c1To, 3, c2To, 3, nHandleDirection, nFillHandleArea);
|
||
autoFillRange = getRange(autofillC1, 3, c2To, 3);
|
||
autoFillAssert(assert, autoFillRange, [expectedDataCapitalized], `Case: ${descSequenceType} Camel-registry - Su.`);
|
||
|
||
// Camel-registry - SUnDaY
|
||
ws.selectionRange.ranges = [getRange(c1From, 4, c2From, 4)];
|
||
wsView = getAutoFillRange(wsView, c1To, 4, c2To, 4, nHandleDirection, nFillHandleArea);
|
||
autoFillRange = getRange(autofillC1, 4, c2To, 4);
|
||
autoFillAssert(assert, autoFillRange, [expectedDataUpper], `Case: ${descSequenceType} Camel-registry - SU.`);
|
||
|
||
// Camel-registry - sUnDaY
|
||
ws.selectionRange.ranges = [getRange(c1From, 5, c2From, 5)];
|
||
wsView = getAutoFillRange(wsView, c1To, 5, c2To, 5, nHandleDirection, nFillHandleArea);
|
||
autoFillRange = getRange(autofillC1, 5, c2To, 5);
|
||
autoFillAssert(assert, autoFillRange, [expectedDataLower], `Case: ${descSequenceType} Camel-registry - sU.`);
|
||
|
||
// Camel-registry - suNDay
|
||
ws.selectionRange.ranges = [getRange(c1From, 6, c2From, 6)];
|
||
wsView = getAutoFillRange(wsView, c1To, 6, c2To, 6, nHandleDirection, nFillHandleArea);
|
||
autoFillRange = getRange(autofillC1, 6, c2To, 6);
|
||
autoFillAssert(assert, autoFillRange, [expectedDataLower], `Case: ${descSequenceType} Camel-registry - su.`);
|
||
|
||
// Short name day of the week with capitalized
|
||
ws.selectionRange.ranges = [getRange(c1From, 7, c2From, 7)];
|
||
wsView = getAutoFillRange(wsView, c1To, 7, c2To, 7, nHandleDirection, nFillHandleArea);
|
||
autoFillRange = getRange(autofillC1, 7, c2To, 7);
|
||
autoFillAssert(assert, autoFillRange, [expectedDataShortCapitalized], `Case: ${descSequenceType} Short name with capitalized`);
|
||
|
||
// Short name day of the week Upper-registry
|
||
ws.selectionRange.ranges = [getRange(c1From, 8, c2From,8)];
|
||
wsView = getAutoFillRange(wsView, c1To, 8, c2To, 8, nHandleDirection, nFillHandleArea);
|
||
autoFillRange = getRange(autofillC1, 8, c2To, 8);
|
||
autoFillAssert(assert, autoFillRange, [expectedDataShortUpper], `Case: ${descSequenceType} Short name Upper-registry start from Sun`);
|
||
|
||
// Short name day of the week Lower-registry
|
||
ws.selectionRange.ranges = [getRange(c1From,9,c2From,9)];
|
||
wsView = getAutoFillRange(wsView, c1To, 9, c2To, 9, nHandleDirection, nFillHandleArea);
|
||
autoFillRange = getRange(autofillC1, 9, c2To, 9);
|
||
autoFillAssert(assert, autoFillRange, [expectedDataShortLower], `Case: ${descSequenceType} Short name Lower-registry`);
|
||
|
||
// Short name day of the week Camel-registry - SuN
|
||
ws.selectionRange.ranges = [getRange(c1From, 10, c2From, 10)];
|
||
wsView = getAutoFillRange(wsView, c1To, 10, c2To, 10, nHandleDirection, nFillHandleArea);
|
||
autoFillRange = getRange(autofillC1, 10, c2To, 10);
|
||
autoFillAssert(assert, autoFillRange, [expectedDataShortCapitalized], `Case: ${descSequenceType} Short name Camel-registry - Su.`);
|
||
|
||
// Short name day of the week Camel-registry - SUn
|
||
ws.selectionRange.ranges = [getRange(c1From, 11, c2From, 11)];
|
||
wsView = getAutoFillRange(wsView, c1To, 11, c2To, 11, nHandleDirection, nFillHandleArea);
|
||
autoFillRange = getRange(autofillC1, 11, c2To, 11);
|
||
autoFillAssert(assert, autoFillRange, [expectedDataShortUpper], `Case: ${descSequenceType} Short name Camel-registry - SU.`);
|
||
|
||
// Short name day of the week Camel-registry - sUn
|
||
ws.selectionRange.ranges = [getRange(c1From, 12, c2From, 12)];
|
||
wsView = getAutoFillRange(wsView, c1To, 12, c2To, 12, nHandleDirection, nFillHandleArea);
|
||
autoFillRange = getRange(autofillC1, 12, c2To, 12);
|
||
autoFillAssert(assert, autoFillRange, [expectedDataShortLower], `Case: ${descSequenceType} Short name Camel-registry - sU.`);
|
||
|
||
// Short name day of the week Camel-registry - suN
|
||
ws.selectionRange.ranges = [getRange(c1From, 13, c2From, 13)];
|
||
wsView = getAutoFillRange(wsView, c1To, 13, c2To, 13, nHandleDirection, nFillHandleArea);
|
||
autoFillRange = getRange(autofillC1, 13, c2To, 13);
|
||
autoFillAssert(assert, autoFillRange, [expectedDataShortLower], `Case: ${descSequenceType} Short name Camel-registry - su.`);
|
||
}
|
||
|
||
function getVerticalAutofillCases (r1From, r2From, r1To, r2To, assert, expectedData, nFillHandleArea) {
|
||
const [
|
||
expectedDataCapitalized,
|
||
expectedDataUpper,
|
||
expectedDataLower,
|
||
expectedDataShortCapitalized,
|
||
expectedDataShortUpper,
|
||
expectedDataShortLower
|
||
] = expectedData;
|
||
|
||
const nHandleDirection = 1; // 0 - Horizontal, 1 - Vertical,
|
||
let autofillR1 = nFillHandleArea === 3 ? r2From + 1 : r1From - 1;
|
||
const autoFillAssert = nFillHandleArea === 3 ? autofillData : reverseAutofillData;
|
||
const descSequenceType = nFillHandleArea === 3 ? 'Asc sequence.' : 'Reverse sequence.';
|
||
// With capitalized
|
||
ws.selectionRange.ranges = [getRange(0, r1From, 0, r2From)];
|
||
wsView = getAutoFillRange(wsView, 0, r1To, 0, r2To, nHandleDirection, nFillHandleArea);
|
||
let autoFillRange = getRange(0, autofillR1, 0, r2To);
|
||
autoFillAssert(assert, autoFillRange, expectedDataCapitalized, `Case: ${descSequenceType} With capitalized`);
|
||
|
||
//Upper-registry
|
||
ws.selectionRange.ranges = [getRange(1, r1From, 1, r2From)];
|
||
wsView = getAutoFillRange(wsView, 1, r1To, 1, r2To, nHandleDirection, nFillHandleArea);
|
||
autoFillRange = getRange(1, autofillR1, 1, r2To);
|
||
autoFillAssert(assert, autoFillRange, expectedDataUpper, `Case: ${descSequenceType} Upper-registry`);
|
||
|
||
// Lower-registry
|
||
ws.selectionRange.ranges = [getRange(2, r1From, 2, r2From)];
|
||
wsView = getAutoFillRange(wsView, 2, r1To, 2, r2To, nHandleDirection, nFillHandleArea);
|
||
autoFillRange = getRange(2, autofillR1, 2, r2To);
|
||
autoFillAssert(assert, autoFillRange, expectedDataLower, `Case: ${descSequenceType} Lower-registry`);
|
||
|
||
// Camel-registry - SuNdAy
|
||
ws.selectionRange.ranges = [getRange(3, r1From, 3, r2From)];
|
||
wsView = getAutoFillRange(wsView, 3, r1To, 3, r2To, nHandleDirection, nFillHandleArea);
|
||
autoFillRange = getRange(3, autofillR1, 3, r2To);
|
||
autoFillAssert(assert, autoFillRange, expectedDataCapitalized, `Case: ${descSequenceType} Camel-registry - Su.`);
|
||
|
||
// Camel-registry - SUnDaY
|
||
ws.selectionRange.ranges = [getRange(4, r1From, 4, r2From)];
|
||
wsView = getAutoFillRange(wsView, 4, r1To, 4, r2To, nHandleDirection, nFillHandleArea);
|
||
autoFillRange = getRange(4, autofillR1, 4, r2To);
|
||
autoFillAssert(assert, autoFillRange, expectedDataUpper, `Case: ${descSequenceType} Camel-registry - SU.`);
|
||
|
||
// Camel-registry - sUnDaY
|
||
ws.selectionRange.ranges = [getRange(5, r1From, 5, r2From)];
|
||
wsView = getAutoFillRange(wsView, 5, r1To, 5, r2To, nHandleDirection, nFillHandleArea);
|
||
autoFillRange = getRange(5, autofillR1, 5, r2To);
|
||
autoFillAssert(assert, autoFillRange, expectedDataLower, `Case: ${descSequenceType} Camel-registry - sU.`);
|
||
|
||
// Camel-registry - suNDay
|
||
ws.selectionRange.ranges = [getRange(6, r1From, 6, r2From)];
|
||
wsView = getAutoFillRange(wsView, 6, r1To, 6, r2To, nHandleDirection, nFillHandleArea);
|
||
autoFillRange = getRange(6, autofillR1, 6, r2To);
|
||
autoFillAssert(assert, autoFillRange, expectedDataLower, `Case: ${descSequenceType} Camel-registry - su.`);
|
||
|
||
// Short name day of the week with capitalized
|
||
ws.selectionRange.ranges = [getRange(7, r1From, 7, r2From)];
|
||
wsView = getAutoFillRange(wsView, 7, r1To, 7, r2To, nHandleDirection, nFillHandleArea);
|
||
autoFillRange = getRange(7, autofillR1, 7, r2To);
|
||
autoFillAssert(assert, autoFillRange, expectedDataShortCapitalized, `Case: ${descSequenceType} Short name with capitalized`);
|
||
|
||
// Short name day of the week Upper-registry
|
||
ws.selectionRange.ranges = [getRange(8, r1From, 8, r2From)];
|
||
wsView = getAutoFillRange(wsView, 8, r1To, 8, r2To, nHandleDirection, nFillHandleArea);
|
||
autoFillRange = getRange(8, autofillR1, 8, r2To);
|
||
autoFillAssert(assert, autoFillRange, expectedDataShortUpper, `Case: ${descSequenceType} Short name Upper-registry`);
|
||
|
||
// Short name day of the week Lower-registry
|
||
ws.selectionRange.ranges = [getRange(9, r1From, 9, r2From)];
|
||
wsView = getAutoFillRange(wsView, 9, r1To, 9, r2To, nHandleDirection, nFillHandleArea);
|
||
autoFillRange = getRange(9, autofillR1, 9, r2To);
|
||
autoFillAssert(assert, autoFillRange, expectedDataShortLower, `Case: ${descSequenceType} Short name Lower-registry`);
|
||
|
||
// Short name day of the week Camel-registry - SuN
|
||
ws.selectionRange.ranges = [getRange(10, r1From, 10, r2From)];
|
||
wsView = getAutoFillRange(wsView, 10, r1To, 10, r2To, nHandleDirection, nFillHandleArea);
|
||
autoFillRange = getRange(10, autofillR1, 10, r2To);
|
||
autoFillAssert(assert, autoFillRange, expectedDataShortCapitalized, `Case: ${descSequenceType} Short name Camel-registry - Su.`);
|
||
|
||
// Short name day of the week Camel-registry - SUn
|
||
ws.selectionRange.ranges = [getRange(11, r1From, 11, r2From)];
|
||
wsView = getAutoFillRange(wsView, 11, r1To, 11, r2To, nHandleDirection, nFillHandleArea);
|
||
autoFillRange = getRange(11, autofillR1, 11, r2To);
|
||
autoFillAssert(assert, autoFillRange, expectedDataShortUpper, `Case: ${descSequenceType} Short name Camel-registry - SU.`);
|
||
|
||
// Short name day of the week Camel-registry - sUn
|
||
ws.selectionRange.ranges = [getRange(12, r1From, 12, r2From)];
|
||
wsView = getAutoFillRange(wsView, 12, r1To, 12, r2To, nHandleDirection, nFillHandleArea);
|
||
autoFillRange = getRange(12, autofillR1, 12, r2To);
|
||
autoFillAssert(assert, autoFillRange, expectedDataShortLower, `Case: ${descSequenceType} Short name Camel-registry - sU.`);
|
||
|
||
// Short name day of the week Camel-registry - suN
|
||
ws.selectionRange.ranges = [getRange(13, r1From, 13, r2From)];
|
||
wsView = getAutoFillRange(wsView, 13, r1To, 13, r2To, nHandleDirection, nFillHandleArea);
|
||
autoFillRange = getRange(13, autofillR1, 13, r2To);
|
||
autoFillAssert(assert, autoFillRange, expectedDataShortLower, `Case: ${descSequenceType} Short name Camel-registry - su.`);
|
||
|
||
}
|
||
|
||
function CacheColumn() {
|
||
this.left = 0;
|
||
this.width = 0;
|
||
|
||
this._widthForPrint = null;
|
||
}
|
||
|
||
QUnit.test("Test: \"Move rows/cols\"", function (assert) {
|
||
let testData = [
|
||
["row1col1", "row1col2", "row1col3", "row1col4", "row1col5", "row1col6"],
|
||
["row2col1", "row2col2", "row2col3", "row2col4", "row2col5", "row2col6"],
|
||
["row3col1", "row3col2", "row3col3", "row3col4", "row3col5", "row3col6"],
|
||
["row4col1", "row4col2", "row4col3", "row4col4", "row4col5", "row4col6"],
|
||
["row5col1", "row5col2", "row5col3", "row5col4", "row5col5", "row5col6"],
|
||
["row6col1", "row6col2", "row6col3", "row6col4", "row6col5", "row6col6"],
|
||
["row7col1", "row7col2", "row7col3", "row7col4", "row7col5", "row7col6"],
|
||
["row8col1", "row8col2", "row8col3", "row8col4", "row8col5", "row8col6"],
|
||
["row9col1", "row9col2", "row9col3", "row9col4", "row9col5", "row9col6"]
|
||
];
|
||
|
||
let range = ws.getRange4(0, 0);
|
||
range.fillData(testData);
|
||
|
||
//***COLS***
|
||
//***move without ctrl***
|
||
//***move without shift***
|
||
//move from 1 to 3 cols
|
||
wsView.activeMoveRange = getRange(3, 0, 3, AscCommon.gc_nMaxRow);
|
||
ws.selectionRange.ranges = [getRange(1, 0, 1, AscCommon.gc_nMaxRow)];
|
||
wsView.startCellMoveRange = getRange(1, 0, 1, 0);
|
||
wsView.startCellMoveRange.colRowMoveProps = {ctrlKey: false, shiftKey: false};
|
||
wsView.applyMoveRangeHandle();
|
||
|
||
let rangeCompare = getRange(0, 1, 5, 1);
|
||
checkUndoRedo(function (desc) {
|
||
compareData(assert, rangeCompare, [["row2col1", "row2col2", "row2col3", "row2col4", "row2col5", "row2col6"]], desc);
|
||
}, function (desc){
|
||
compareData(assert, rangeCompare, [["row2col1", "", "row2col3", "row2col2", "row2col5", "row2col6"]], desc);
|
||
}, " move_col_1 ");
|
||
|
||
//move from 1-2 to 3-4 cols
|
||
wsView.activeMoveRange = getRange(3, 0, 4, AscCommon.gc_nMaxRow);
|
||
ws.selectionRange.ranges = [getRange(1, 0, 2, AscCommon.gc_nMaxRow)];
|
||
wsView.startCellMoveRange = getRange(1, 0, 1, 0);
|
||
wsView.startCellMoveRange.colRowMoveProps = {ctrlKey: false, shiftKey: false};
|
||
wsView.applyMoveRangeHandle();
|
||
|
||
checkUndoRedo(function (desc) {
|
||
compareData(assert, rangeCompare, [["row2col1", "row2col2", "row2col3", "row2col4", "row2col5", "row2col6"]], desc);
|
||
}, function (desc){
|
||
compareData(assert, rangeCompare, [["row2col1", "", "", "row2col2", "row2col3", "row2col6"]], desc);
|
||
}, " move_col_2 ");
|
||
|
||
|
||
//***move with ctrl***
|
||
//***move without shift***
|
||
//move from 1 to 3 cols
|
||
wsView.activeMoveRange = getRange(3, 0, 3, AscCommon.gc_nMaxRow);
|
||
ws.selectionRange.ranges = [getRange(1, 0, 1, AscCommon.gc_nMaxRow)];
|
||
wsView.startCellMoveRange = getRange(1, 0, 1, 0);
|
||
wsView.startCellMoveRange.colRowMoveProps = {ctrlKey: true, shiftKey: false};
|
||
wsView.applyMoveRangeHandle(true);
|
||
|
||
checkUndoRedo(function (desc) {
|
||
compareData(assert, rangeCompare, [["row2col1", "row2col2", "row2col3", "row2col4", "row2col5", "row2col6"]], desc);
|
||
}, function (desc){
|
||
compareData(assert, rangeCompare, [["row2col1", "row2col2", "row2col3", "row2col2", "row2col5", "row2col6"]], desc);
|
||
}, " move_col_1_ctrl ");
|
||
|
||
//move from 1-2 to 3-4 cols
|
||
wsView.activeMoveRange = getRange(3, 0, 4, AscCommon.gc_nMaxRow);
|
||
ws.selectionRange.ranges = [getRange(1, 0, 2, AscCommon.gc_nMaxRow)];
|
||
wsView.startCellMoveRange = getRange(1, 0, 1, 0);
|
||
wsView.startCellMoveRange.colRowMoveProps = {ctrlKey: true, shiftKey: false};
|
||
wsView.applyMoveRangeHandle(true);
|
||
|
||
checkUndoRedo(function (desc) {
|
||
compareData(assert, rangeCompare, [["row2col1", "row2col2", "row2col3", "row2col4", "row2col5", "row2col6"]], desc);
|
||
}, function (desc){
|
||
compareData(assert, rangeCompare, [["row2col1", "row2col2", "row2col3", "row2col2", "row2col3", "row2col6"]], desc);
|
||
}, " move_col_2_ctrl ");
|
||
|
||
|
||
//***move without ctrl***
|
||
//***move with shift***
|
||
wsView.activeMoveRange = getRange(3, 0, 3, AscCommon.gc_nMaxRow);
|
||
ws.selectionRange.ranges = [getRange(1, 0, 1, AscCommon.gc_nMaxRow)];
|
||
wsView.startCellMoveRange = getRange(1, 0, 1, 0);
|
||
wsView.startCellMoveRange.colRowMoveProps = {ctrlKey: false, shiftKey: true, colByX: 3};
|
||
wsView.applyMoveRangeHandle();
|
||
|
||
checkUndoRedo(function (desc) {
|
||
compareData(assert, rangeCompare, [["row2col1", "row2col2", "row2col3", "row2col4", "row2col5", "row2col6"]], desc);
|
||
}, function (desc){
|
||
compareData(assert, rangeCompare, [["row2col1", "row2col3", "row2col4", "row2col2", "row2col5", "row2col6"]], desc);
|
||
}, " move_col_1_shift ");
|
||
|
||
//***move with ctrl***
|
||
//***move with shift***
|
||
wsView.activeMoveRange = getRange(3, 0, 3, AscCommon.gc_nMaxRow);
|
||
ws.selectionRange.ranges = [getRange(1, 0, 1, AscCommon.gc_nMaxRow)];
|
||
wsView.startCellMoveRange = getRange(1, 0, 1, 0);
|
||
wsView.startCellMoveRange.colRowMoveProps = {ctrlKey: true, shiftKey: true, colByX: 3};
|
||
wsView.applyMoveRangeHandle(true);
|
||
|
||
checkUndoRedo(function (desc) {
|
||
compareData(assert, rangeCompare, [["row2col1", "row2col2", "row2col3", "row2col4", "row2col5", "row2col6"]], desc);
|
||
}, function (desc){
|
||
compareData(assert, rangeCompare, [["row2col1", "row2col2", "row2col3", "row2col4", "row2col2", "row2col5"]], desc);
|
||
}, " move_col_1_shift_ctrl ");
|
||
|
||
|
||
//***ROWS***
|
||
//***move without ctrl***
|
||
//***move without shift***
|
||
//move from 1 to 3 rows
|
||
wsView.activeMoveRange = getRange(0, 3, AscCommon.gc_nMaxCol, 3);
|
||
ws.selectionRange.ranges = [getRange(0, 1, AscCommon.gc_nMaxCol, 1)];
|
||
wsView.startCellMoveRange = getRange(0, 1, 0, 1);
|
||
wsView.startCellMoveRange.colRowMoveProps = {ctrlKey: false, shiftKey: false};
|
||
wsView.applyMoveRangeHandle();
|
||
|
||
rangeCompare = getRange(1, 0, 1, 8);
|
||
checkUndoRedo(function (desc) {
|
||
compareData(assert, rangeCompare, [["row1col2"], ["row2col2"], ["row3col2"], ["row4col2"], ["row5col2"], ["row6col2"], ["row7col2"], ["row8col2"], ["row9col2"]], desc);
|
||
}, function (desc){
|
||
compareData(assert, rangeCompare, [["row1col2"], [""], ["row3col2"], ["row2col2"], ["row5col2"], ["row6col2"], ["row7col2"], ["row8col2"], ["row9col2"]], desc);
|
||
}, " move_row_1 ");
|
||
|
||
//***move with ctrl***
|
||
//***move without shift***
|
||
//move from 1 to 3 rows
|
||
wsView.activeMoveRange = getRange(0, 3, AscCommon.gc_nMaxCol, 3);
|
||
ws.selectionRange.ranges = [getRange(0, 1, AscCommon.gc_nMaxCol, 1)];
|
||
wsView.startCellMoveRange = getRange(0, 1, 0, 1);
|
||
wsView.startCellMoveRange.colRowMoveProps = {ctrlKey: true, shiftKey: false};
|
||
wsView.applyMoveRangeHandle(true);
|
||
|
||
checkUndoRedo(function (desc) {
|
||
compareData(assert, rangeCompare, [["row1col2"], ["row2col2"], ["row3col2"], ["row4col2"], ["row5col2"], ["row6col2"], ["row7col2"], ["row8col2"], ["row9col2"]], desc);
|
||
}, function (desc){
|
||
compareData(assert, rangeCompare, [["row1col2"], ["row2col2"], ["row3col2"], ["row2col2"], ["row5col2"], ["row6col2"], ["row7col2"], ["row8col2"], ["row9col2"]], desc);
|
||
}, " move_row_2_ctrl ");
|
||
|
||
//***move without ctrl***
|
||
//***move with shift***
|
||
//move from 1 to 3 rows
|
||
wsView.activeMoveRange = getRange(0, 3, AscCommon.gc_nMaxCol, 3);
|
||
ws.selectionRange.ranges = [getRange(0, 1, AscCommon.gc_nMaxCol, 1)];
|
||
wsView.startCellMoveRange = getRange(0, 1, 0, 1);
|
||
wsView.startCellMoveRange.colRowMoveProps = {ctrlKey: false, shiftKey: true, rowByY: 3};
|
||
wsView.applyMoveRangeHandle();
|
||
|
||
rangeCompare = getRange(1, 0, 1, 8);
|
||
checkUndoRedo(function (desc) {
|
||
compareData(assert, rangeCompare, [["row1col2"], ["row2col2"], ["row3col2"], ["row4col2"], ["row5col2"], ["row6col2"], ["row7col2"], ["row8col2"], ["row9col2"]], desc);
|
||
}, function (desc){
|
||
compareData(assert, rangeCompare, [["row1col2"], ["row3col2"], ["row4col2"], ["row2col2"], ["row5col2"], ["row6col2"], ["row7col2"], ["row8col2"], ["row9col2"]], desc);
|
||
}, " move_row_3_shift ");
|
||
|
||
|
||
//***move with ctrl***
|
||
//***move with shift***
|
||
//move from 1 to 3 rows
|
||
wsView.activeMoveRange = getRange(0, 3, AscCommon.gc_nMaxCol, 3);
|
||
ws.selectionRange.ranges = [getRange(0, 1, AscCommon.gc_nMaxCol, 1)];
|
||
wsView.startCellMoveRange = getRange(0, 1, 0, 1);
|
||
wsView.startCellMoveRange.colRowMoveProps = {ctrlKey: true, shiftKey: true, rowByY: 3};
|
||
wsView.applyMoveRangeHandle(true);
|
||
|
||
rangeCompare = getRange(1, 0, 1, 8);
|
||
checkUndoRedo(function (desc) {
|
||
compareData(assert, rangeCompare, [["row1col2"], ["row2col2"], ["row3col2"], ["row4col2"], ["row5col2"], ["row6col2"], ["row7col2"], ["row8col2"], ["row9col2"]], desc);
|
||
}, function (desc){
|
||
compareData(assert, rangeCompare, [["row1col2"], ["row2col2"], ["row3col2"], ["row4col2"], ["row2col2"], ["row5col2"], ["row6col2"], ["row7col2"], ["row8col2"]], desc);
|
||
}, " move_row_4_shift_ctrl ");
|
||
|
||
clearData(0, 0, AscCommon.gc_nMaxCol, AscCommon.gc_nMaxRow);
|
||
});
|
||
|
||
QUnit.test("Test: \"Shift and insert cells/row\"", function (assert) {
|
||
ws.getRange2("A1:Z999").cleanAll();
|
||
|
||
ws.getRange2("A100").setValue("1");
|
||
ws.getRange2("A101").setValue("2");
|
||
ws.getRange2("A102").setValue("3");
|
||
ws.getRange2("A103").setValue("4");
|
||
ws.getRange2("A104").setValue("5");
|
||
|
||
let resCell = ws.getRange4(104, 0);
|
||
resCell.setValue("=SUM(A100:A104)");
|
||
|
||
let insertRange = ws.getRange3(99, 0, 99, 0);
|
||
let count = insertRange.bbox.r2 - insertRange.bbox.r1 + 1;
|
||
|
||
resCell = ws.getRange4(99, 0);
|
||
assert.strictEqual(resCell.getValueForEdit(), "1", "Value for edit in A100 before row shifted");
|
||
assert.strictEqual(resCell.getFormula(), "", "Formula in cell A100 before row shifted");
|
||
|
||
resCell = ws.getRange4(100, 0);
|
||
assert.strictEqual(resCell.getValueForEdit(), "2", "Value for edit in A101 before row shifted");
|
||
assert.strictEqual(resCell.getFormula(), "", "Formula in cell A101 before row shifted");
|
||
|
||
resCell = ws.getRange4(101, 0);
|
||
assert.strictEqual(resCell.getValueForEdit(), "3", "Value for edit in A102 before row shifted");
|
||
assert.strictEqual(resCell.getFormula(), "", "Formula in cell A102 before row shifted");
|
||
|
||
resCell = ws.getRange4(102, 0);
|
||
assert.strictEqual(resCell.getValueForEdit(), "4", "Value for edit in A103 before row shifted");
|
||
assert.strictEqual(resCell.getFormula(), "", "Formula in cell A103 before row shifted");
|
||
|
||
resCell = ws.getRange4(103, 0);
|
||
assert.strictEqual(resCell.getValueForEdit(), "5", "Value for edit in A104 before row shifted");
|
||
assert.strictEqual(resCell.getFormula(), "", "Formula in cell A104 before row shifted");
|
||
|
||
resCell = ws.getRange4(104, 0);
|
||
assert.strictEqual(resCell.getValueForEdit(), "=SUM(A100:A104)", "Value for edit in A105 before row shifted");
|
||
assert.strictEqual(resCell.getFormula(), "SUM(A100:A104)", "Formula in cell A105 before row shifted");
|
||
|
||
assert.ok(1, "Row shifted from A100 cell selection");
|
||
ws.insertRowsBefore(insertRange.bbox.r1, count);
|
||
|
||
resCell = ws.getRange4(99, 0);
|
||
assert.strictEqual(resCell.getValueForEdit(), "", "Value for edit in A100 after 1 row shifted");
|
||
assert.strictEqual(resCell.getFormula(), "", "Formula in cell A100 after 1 row shifted");
|
||
|
||
resCell = ws.getRange4(100, 0);
|
||
assert.strictEqual(resCell.getValueForEdit(), "1", "Value for edit in A101 after 1 row shifted");
|
||
assert.strictEqual(resCell.getFormula(), "", "Formula in cell A101 after 1 row shifted");
|
||
|
||
resCell = ws.getRange4(101, 0);
|
||
assert.strictEqual(resCell.getValueForEdit(), "2", "Value for edit in A102 after 1 row shifted");
|
||
assert.strictEqual(resCell.getFormula(), "", "Formula in cell A102 after 1 row shifted");
|
||
|
||
resCell = ws.getRange4(102, 0);
|
||
assert.strictEqual(resCell.getValueForEdit(), "3", "Value for edit in A103 after 1 row shifted");
|
||
assert.strictEqual(resCell.getFormula(), "", "Formula in cell A103 after 1 row shifted");
|
||
|
||
resCell = ws.getRange4(103, 0);
|
||
assert.strictEqual(resCell.getValueForEdit(), "4", "Value for edit in A104 after 1 row shifted");
|
||
assert.strictEqual(resCell.getFormula(), "", "Formula in cell A104 after 1 row shifted");
|
||
|
||
resCell = ws.getRange4(104, 0);
|
||
assert.strictEqual(resCell.getValueForEdit(), "5", "Value for edit in A105 after 1 row shifted");
|
||
assert.strictEqual(resCell.getFormula(), "", "Formula in cell A105 after 1 row shifted");
|
||
|
||
resCell = ws.getRange4(105, 0);
|
||
assert.strictEqual(resCell.getValueForEdit(), "=SUM(A101:A105)", "Value for edit in A105 after 1 row shifted");
|
||
assert.strictEqual(resCell.getFormula(), "SUM(A101:A105)", "Formula in cell A105 after 1 row shifted");
|
||
ws.getRange2("A99:B110").cleanAll();
|
||
|
||
|
||
ws.getRange2("A100").setValue("1");
|
||
ws.getRange2("A101").setValue("2");
|
||
ws.getRange2("A102").setValue("3");
|
||
ws.getRange2("A103").setValue("4");
|
||
ws.getRange2("A104").setValue("5");
|
||
|
||
resCell = ws.getRange4(104, 0);
|
||
resCell.setValue("=SUM(A100:A104)");
|
||
|
||
insertRange = ws.getRange3(101, 0, 101, 0);
|
||
count = insertRange.bbox.r2 - insertRange.bbox.r1 + 1;
|
||
|
||
resCell = ws.getRange4(99, 0);
|
||
assert.strictEqual(resCell.getValueForEdit(), "1", "Value for edit in A100 before row shifted");
|
||
assert.strictEqual(resCell.getFormula(), "", "Formula in cell A100 before row shifted");
|
||
|
||
resCell = ws.getRange4(100, 0);
|
||
assert.strictEqual(resCell.getValueForEdit(), "2", "Value for edit in A101 before row shifted");
|
||
assert.strictEqual(resCell.getFormula(), "", "Formula in cell A101 before row shifted");
|
||
|
||
resCell = ws.getRange4(101, 0);
|
||
assert.strictEqual(resCell.getValueForEdit(), "3", "Value for edit in A102 before row shifted");
|
||
assert.strictEqual(resCell.getFormula(), "", "Formula in cell A102 before row shifted");
|
||
|
||
resCell = ws.getRange4(102, 0);
|
||
assert.strictEqual(resCell.getValueForEdit(), "4", "Value for edit in A103 before row shifted");
|
||
assert.strictEqual(resCell.getFormula(), "", "Formula in cell A103 before row shifted");
|
||
|
||
resCell = ws.getRange4(103, 0);
|
||
assert.strictEqual(resCell.getValueForEdit(), "5", "Value for edit in A104 before row shifted");
|
||
assert.strictEqual(resCell.getFormula(), "", "Formula in cell A104 before row shifted");
|
||
|
||
resCell = ws.getRange4(104, 0);
|
||
assert.strictEqual(resCell.getValueForEdit(), "=SUM(A100:A104)", "Value for edit in A105 before row shifted");
|
||
assert.strictEqual(resCell.getFormula(), "SUM(A100:A104)", "Formula in cell A105 before row shifted");
|
||
|
||
assert.ok(1, "Row shifted from A102 cell selection");
|
||
ws.insertRowsBefore(insertRange.bbox.r1, count);
|
||
|
||
resCell = ws.getRange4(99, 0);
|
||
assert.strictEqual(resCell.getValueForEdit(), "1", "Value for edit in A100 after 1 row shifted");
|
||
assert.strictEqual(resCell.getFormula(), "", "Formula in cell A100 after 1 row shifted");
|
||
|
||
resCell = ws.getRange4(100, 0);
|
||
assert.strictEqual(resCell.getValueForEdit(), "2", "Value for edit in A101 after 1 row shifted");
|
||
assert.strictEqual(resCell.getFormula(), "", "Formula in cell A101 after 1 row shifted");
|
||
|
||
resCell = ws.getRange4(101, 0);
|
||
assert.strictEqual(resCell.getValueForEdit(), "", "Value for edit in A102 after 1 row shifted");
|
||
assert.strictEqual(resCell.getFormula(), "", "Formula in cell A102 after 1 row shifted");
|
||
|
||
resCell = ws.getRange4(102, 0);
|
||
assert.strictEqual(resCell.getValueForEdit(), "3", "Value for edit in A103 after 1 row shifted");
|
||
assert.strictEqual(resCell.getFormula(), "", "Formula in cell A103 after 1 row shifted");
|
||
|
||
resCell = ws.getRange4(103, 0);
|
||
assert.strictEqual(resCell.getValueForEdit(), "4", "Value for edit in A104 after 1 row shifted");
|
||
assert.strictEqual(resCell.getFormula(), "", "Formula in cell A104 after 1 row shifted");
|
||
|
||
resCell = ws.getRange4(104, 0);
|
||
assert.strictEqual(resCell.getValueForEdit(), "5", "Value for edit in A105 after 1 row shifted");
|
||
assert.strictEqual(resCell.getFormula(), "", "Formula in cell A105 after 1 row shifted");
|
||
|
||
resCell = ws.getRange4(105, 0);
|
||
assert.strictEqual(resCell.getValueForEdit(), "=SUM(A100:A105)", "Value for edit in A105 after 1 row shifted");
|
||
assert.strictEqual(resCell.getFormula(), "SUM(A100:A105)", "Formula in cell A105 after 1 row shifted");
|
||
ws.getRange2("A99:B110").cleanAll();
|
||
|
||
|
||
ws.getRange2("A100").setValue("1");
|
||
ws.getRange2("A101").setValue("2");
|
||
ws.getRange2("A102").setValue("3");
|
||
ws.getRange2("A103").setValue("4");
|
||
ws.getRange2("A104").setValue("5");
|
||
|
||
resCell = ws.getRange4(104, 0);
|
||
resCell.setValue("=SUM(A100:A104)");
|
||
|
||
insertRange = ws.getRange3(103, 0, 103, 0);
|
||
count = insertRange.bbox.r2 - insertRange.bbox.r1 + 1;
|
||
|
||
resCell = ws.getRange4(99, 0);
|
||
assert.strictEqual(resCell.getValueForEdit(), "1", "Value for edit in A100 before row shifted");
|
||
assert.strictEqual(resCell.getFormula(), "", "Formula in cell A100 before row shifted");
|
||
|
||
resCell = ws.getRange4(100, 0);
|
||
assert.strictEqual(resCell.getValueForEdit(), "2", "Value for edit in A101 before row shifted");
|
||
assert.strictEqual(resCell.getFormula(), "", "Formula in cell A101 before row shifted");
|
||
|
||
resCell = ws.getRange4(101, 0);
|
||
assert.strictEqual(resCell.getValueForEdit(), "3", "Value for edit in A102 before row shifted");
|
||
assert.strictEqual(resCell.getFormula(), "", "Formula in cell A102 before row shifted");
|
||
|
||
resCell = ws.getRange4(102, 0);
|
||
assert.strictEqual(resCell.getValueForEdit(), "4", "Value for edit in A103 before row shifted");
|
||
assert.strictEqual(resCell.getFormula(), "", "Formula in cell A103 before row shifted");
|
||
|
||
resCell = ws.getRange4(103, 0);
|
||
assert.strictEqual(resCell.getValueForEdit(), "5", "Value for edit in A104 before row shifted");
|
||
assert.strictEqual(resCell.getFormula(), "", "Formula in cell A104 before row shifted");
|
||
|
||
resCell = ws.getRange4(104, 0);
|
||
assert.strictEqual(resCell.getValueForEdit(), "=SUM(A100:A104)", "Value for edit in A105 before row shifted");
|
||
assert.strictEqual(resCell.getFormula(), "SUM(A100:A104)", "Formula in cell A105 before row shifted");
|
||
|
||
assert.ok(1, "Row shifted from A104 cell selection");
|
||
ws.insertRowsBefore(insertRange.bbox.r1, count);
|
||
|
||
resCell = ws.getRange4(99, 0);
|
||
assert.strictEqual(resCell.getValueForEdit(), "1", "Value for edit in A100 after" + count + " row shifted");
|
||
assert.strictEqual(resCell.getFormula(), "", "Formula in cell A100 after" + count + " row shifted");
|
||
|
||
resCell = ws.getRange4(100, 0);
|
||
assert.strictEqual(resCell.getValueForEdit(), "2", "Value for edit in A101 after" + count + " row shifted");
|
||
assert.strictEqual(resCell.getFormula(), "", "Formula in cell A101 after" + count + " row shifted");
|
||
|
||
resCell = ws.getRange4(101, 0);
|
||
assert.strictEqual(resCell.getValueForEdit(), "3", "Value for edit in A102 after" + count + " row shifted");
|
||
assert.strictEqual(resCell.getFormula(), "", "Formula in cell A102 after" + count + " row shifted");
|
||
|
||
resCell = ws.getRange4(102, 0);
|
||
assert.strictEqual(resCell.getValueForEdit(), "4", "Value for edit in A103 after" + count + " row shifted");
|
||
assert.strictEqual(resCell.getFormula(), "", "Formula in cell A103 after" + count + " row shifted");
|
||
|
||
resCell = ws.getRange4(103, 0);
|
||
assert.strictEqual(resCell.getValueForEdit(), "", "Value for edit in A104 after" + count + " row shifted");
|
||
assert.strictEqual(resCell.getFormula(), "", "Formula in cell A104 after" + count + " row shifted");
|
||
|
||
resCell = ws.getRange4(104, 0);
|
||
assert.strictEqual(resCell.getValueForEdit(), "5", "Value for edit in A105 after" + count + " row shifted");
|
||
assert.strictEqual(resCell.getFormula(), "", "Formula in cell A105 after" + count + " row shifted");
|
||
|
||
resCell = ws.getRange4(105, 0);
|
||
assert.strictEqual(resCell.getValueForEdit(), "=SUM(A100:A105)", "Value for edit in A105 after" + count + " row shifted");
|
||
assert.strictEqual(resCell.getFormula(), "SUM(A100:A105)", "Formula in cell A105 after" + count + " row shifted");
|
||
ws.getRange2("A99:B110").cleanAll();
|
||
|
||
|
||
ws.getRange2("A100").setValue("1");
|
||
ws.getRange2("A101").setValue("2");
|
||
ws.getRange2("A102").setValue("3");
|
||
ws.getRange2("A103").setValue("4");
|
||
ws.getRange2("A104").setValue("5");
|
||
|
||
resCell = ws.getRange4(104, 0);
|
||
resCell.setValue("=SUM(A100:A104)");
|
||
|
||
insertRange = ws.getRange3(104, 0, 104, 0);
|
||
count = insertRange.bbox.r2 - insertRange.bbox.r1 + 1;
|
||
|
||
resCell = ws.getRange4(99, 0);
|
||
assert.strictEqual(resCell.getValueForEdit(), "1", "Value for edit in A100 before row shifted");
|
||
assert.strictEqual(resCell.getFormula(), "", "Formula in cell A100 before row shifted");
|
||
|
||
resCell = ws.getRange4(100, 0);
|
||
assert.strictEqual(resCell.getValueForEdit(), "2", "Value for edit in A101 before row shifted");
|
||
assert.strictEqual(resCell.getFormula(), "", "Formula in cell A101 before row shifted");
|
||
|
||
resCell = ws.getRange4(101, 0);
|
||
assert.strictEqual(resCell.getValueForEdit(), "3", "Value for edit in A102 before row shifted");
|
||
assert.strictEqual(resCell.getFormula(), "", "Formula in cell A102 before row shifted");
|
||
|
||
resCell = ws.getRange4(102, 0);
|
||
assert.strictEqual(resCell.getValueForEdit(), "4", "Value for edit in A103 before row shifted");
|
||
assert.strictEqual(resCell.getFormula(), "", "Formula in cell A103 before row shifted");
|
||
|
||
resCell = ws.getRange4(103, 0);
|
||
assert.strictEqual(resCell.getValueForEdit(), "5", "Value for edit in A104 before row shifted");
|
||
assert.strictEqual(resCell.getFormula(), "", "Formula in cell A104 before row shifted");
|
||
|
||
resCell = ws.getRange4(104, 0);
|
||
assert.strictEqual(resCell.getValueForEdit(), "=SUM(A100:A104)", "Value for edit in A105 before row shifted");
|
||
assert.strictEqual(resCell.getFormula(), "SUM(A100:A104)", "Formula in cell A105 before row shifted");
|
||
|
||
assert.ok(1, "Row shifted from A105 cell selection");
|
||
ws.insertRowsBefore(insertRange.bbox.r1, count);
|
||
|
||
resCell = ws.getRange4(99, 0);
|
||
assert.strictEqual(resCell.getValueForEdit(), "1", "Value for edit in A100 after" + count + " row shifted");
|
||
assert.strictEqual(resCell.getFormula(), "", "Formula in cell A100 after" + count + " row shifted");
|
||
|
||
resCell = ws.getRange4(100, 0);
|
||
assert.strictEqual(resCell.getValueForEdit(), "2", "Value for edit in A101 after" + count + " row shifted");
|
||
assert.strictEqual(resCell.getFormula(), "", "Formula in cell A101 after" + count + " row shifted");
|
||
|
||
resCell = ws.getRange4(101, 0);
|
||
assert.strictEqual(resCell.getValueForEdit(), "3", "Value for edit in A102 after" + count + " row shifted");
|
||
assert.strictEqual(resCell.getFormula(), "", "Formula in cell A102 after" + count + " row shifted");
|
||
|
||
resCell = ws.getRange4(102, 0);
|
||
assert.strictEqual(resCell.getValueForEdit(), "4", "Value for edit in A103 after" + count + " row shifted");
|
||
assert.strictEqual(resCell.getFormula(), "", "Formula in cell A103 after" + count + " row shifted");
|
||
|
||
resCell = ws.getRange4(103, 0);
|
||
assert.strictEqual(resCell.getValueForEdit(), "5", "Value for edit in A104 after" + count + " row shifted");
|
||
assert.strictEqual(resCell.getFormula(), "", "Formula in cell A104 after" + count + " row shifted");
|
||
|
||
resCell = ws.getRange4(104, 0);
|
||
assert.strictEqual(resCell.getValueForEdit(), "", "Value for edit in A105 after" + count + " row shifted");
|
||
assert.strictEqual(resCell.getFormula(), "", "Formula in cell A105 after" + count + " row shifted");
|
||
|
||
resCell = ws.getRange4(105, 0);
|
||
assert.strictEqual(resCell.getValueForEdit(), "=SUM(A100:A104)", "Value for edit in A105 after" + count + " row shifted");
|
||
assert.strictEqual(resCell.getFormula(), "SUM(A100:A104)", "Formula in cell A105 after" + count + " row shifted");
|
||
ws.getRange2("A99:B110").cleanAll();
|
||
|
||
|
||
ws.getRange2("A100").setValue("1");
|
||
ws.getRange2("A101").setValue("2");
|
||
ws.getRange2("A102").setValue("3");
|
||
ws.getRange2("A103").setValue("4");
|
||
ws.getRange2("A104").setValue("5");
|
||
|
||
resCell = ws.getRange4(104, 0);
|
||
resCell.setValue("=SUM(A100:A104)");
|
||
|
||
insertRange = ws.getRange3(99, 0, 101, 0);
|
||
count = insertRange.bbox.r2 - insertRange.bbox.r1 + 1;
|
||
|
||
resCell = ws.getRange4(99, 0);
|
||
assert.strictEqual(resCell.getValueForEdit(), "1", "Value for edit in A100 before row shifted");
|
||
assert.strictEqual(resCell.getFormula(), "", "Formula in cell A100 before row shifted");
|
||
|
||
resCell = ws.getRange4(100, 0);
|
||
assert.strictEqual(resCell.getValueForEdit(), "2", "Value for edit in A101 before row shifted");
|
||
assert.strictEqual(resCell.getFormula(), "", "Formula in cell A101 before row shifted");
|
||
|
||
resCell = ws.getRange4(101, 0);
|
||
assert.strictEqual(resCell.getValueForEdit(), "3", "Value for edit in A102 before row shifted");
|
||
assert.strictEqual(resCell.getFormula(), "", "Formula in cell A102 before row shifted");
|
||
|
||
resCell = ws.getRange4(102, 0);
|
||
assert.strictEqual(resCell.getValueForEdit(), "4", "Value for edit in A103 before row shifted");
|
||
assert.strictEqual(resCell.getFormula(), "", "Formula in cell A103 before row shifted");
|
||
|
||
resCell = ws.getRange4(103, 0);
|
||
assert.strictEqual(resCell.getValueForEdit(), "5", "Value for edit in A104 before row shifted");
|
||
assert.strictEqual(resCell.getFormula(), "", "Formula in cell A104 before row shifted");
|
||
|
||
resCell = ws.getRange4(104, 0);
|
||
assert.strictEqual(resCell.getValueForEdit(), "=SUM(A100:A104)", "Value for edit in A105 before row shifted");
|
||
assert.strictEqual(resCell.getFormula(), "SUM(A100:A104)", "Formula in cell A105 before row shifted");
|
||
|
||
assert.ok(1, "Row shifted from A100:A102 cell selection");
|
||
ws.insertRowsBefore(insertRange.bbox.r1, count);
|
||
|
||
resCell = ws.getRange4(99, 0);
|
||
assert.strictEqual(resCell.getValueForEdit(), "", "Value for edit in A100 after" + count + " row shifted");
|
||
assert.strictEqual(resCell.getFormula(), "", "Formula in cell A100 after" + count + " row shifted");
|
||
|
||
resCell = ws.getRange4(100, 0);
|
||
assert.strictEqual(resCell.getValueForEdit(), "", "Value for edit in A101 after" + count + " row shifted");
|
||
assert.strictEqual(resCell.getFormula(), "", "Formula in cell A101 after" + count + " row shifted");
|
||
|
||
resCell = ws.getRange4(101, 0);
|
||
assert.strictEqual(resCell.getValueForEdit(), "", "Value for edit in A102 after" + count + " row shifted");
|
||
assert.strictEqual(resCell.getFormula(), "", "Formula in cell A102 after" + count + " row shifted");
|
||
|
||
resCell = ws.getRange4(102, 0);
|
||
assert.strictEqual(resCell.getValueForEdit(), "1", "Value for edit in A103 after" + count + " row shifted");
|
||
assert.strictEqual(resCell.getFormula(), "", "Formula in cell A103 after" + count + " row shifted");
|
||
|
||
resCell = ws.getRange4(103, 0);
|
||
assert.strictEqual(resCell.getValueForEdit(), "2", "Value for edit in A104 after" + count + " row shifted");
|
||
assert.strictEqual(resCell.getFormula(), "", "Formula in cell A104 after" + count + " row shifted");
|
||
|
||
resCell = ws.getRange4(104, 0);
|
||
assert.strictEqual(resCell.getValueForEdit(), "3", "Value for edit in A105 after" + count + " row shifted");
|
||
assert.strictEqual(resCell.getFormula(), "", "Formula in cell A105 after" + count + " row shifted");
|
||
|
||
resCell = ws.getRange4(105, 0);
|
||
assert.strictEqual(resCell.getValueForEdit(), "4", "Value for edit in A106 after" + count + " row shifted");
|
||
assert.strictEqual(resCell.getFormula(), "", "Formula in cell A106 after" + count + " row shifted");
|
||
|
||
resCell = ws.getRange4(106, 0);
|
||
assert.strictEqual(resCell.getValueForEdit(), "5", "Value for edit in A107 after" + count + " row shifted");
|
||
assert.strictEqual(resCell.getFormula(), "", "Formula in cell A107 after" + count + " row shifted");
|
||
|
||
resCell = ws.getRange4(107, 0);
|
||
assert.strictEqual(resCell.getValueForEdit(), "=SUM(A103:A107)", "Value for edit in A108 after" + count + " row shifted");
|
||
assert.strictEqual(resCell.getFormula(), "SUM(A103:A107)", "Formula in cell A108 after" + count + " row shifted");
|
||
ws.getRange2("A99:B110").cleanAll();
|
||
|
||
|
||
ws.getRange2("A100").setValue("1");
|
||
ws.getRange2("A101").setValue("2");
|
||
ws.getRange2("A102").setValue("3");
|
||
ws.getRange2("A103").setValue("4");
|
||
ws.getRange2("A104").setValue("5");
|
||
|
||
resCell = ws.getRange4(104, 0);
|
||
resCell.setValue("=SUM(A100:A104)");
|
||
|
||
insertRange = ws.getRange3(104, 0, 105, 0);
|
||
count = insertRange.bbox.r2 - insertRange.bbox.r1 + 1;
|
||
|
||
resCell = ws.getRange4(99, 0);
|
||
assert.strictEqual(resCell.getValueForEdit(), "1", "Value for edit in A100 before row shifted");
|
||
assert.strictEqual(resCell.getFormula(), "", "Formula in cell A100 before row shifted");
|
||
|
||
resCell = ws.getRange4(100, 0);
|
||
assert.strictEqual(resCell.getValueForEdit(), "2", "Value for edit in A101 before row shifted");
|
||
assert.strictEqual(resCell.getFormula(), "", "Formula in cell A101 before row shifted");
|
||
|
||
resCell = ws.getRange4(101, 0);
|
||
assert.strictEqual(resCell.getValueForEdit(), "3", "Value for edit in A102 before row shifted");
|
||
assert.strictEqual(resCell.getFormula(), "", "Formula in cell A102 before row shifted");
|
||
|
||
resCell = ws.getRange4(102, 0);
|
||
assert.strictEqual(resCell.getValueForEdit(), "4", "Value for edit in A103 before row shifted");
|
||
assert.strictEqual(resCell.getFormula(), "", "Formula in cell A103 before row shifted");
|
||
|
||
resCell = ws.getRange4(103, 0);
|
||
assert.strictEqual(resCell.getValueForEdit(), "5", "Value for edit in A104 before row shifted");
|
||
assert.strictEqual(resCell.getFormula(), "", "Formula in cell A104 before row shifted");
|
||
|
||
resCell = ws.getRange4(104, 0);
|
||
assert.strictEqual(resCell.getValueForEdit(), "=SUM(A100:A104)", "Value for edit in A105 before row shifted");
|
||
assert.strictEqual(resCell.getFormula(), "SUM(A100:A104)", "Formula in cell A105 before row shifted");
|
||
|
||
assert.ok(1, "Row shifted from A105:A106 cell selection");
|
||
ws.insertRowsBefore(insertRange.bbox.r1, count);
|
||
|
||
resCell = ws.getRange4(99, 0);
|
||
assert.strictEqual(resCell.getValueForEdit(), "1", "Value for edit in A100 after" + count + " row shifted");
|
||
assert.strictEqual(resCell.getFormula(), "", "Formula in cell A100 after" + count + " row shifted");
|
||
|
||
resCell = ws.getRange4(100, 0);
|
||
assert.strictEqual(resCell.getValueForEdit(), "2", "Value for edit in A101 after" + count + " row shifted");
|
||
assert.strictEqual(resCell.getFormula(), "", "Formula in cell A101 after" + count + " row shifted");
|
||
|
||
resCell = ws.getRange4(101, 0);
|
||
assert.strictEqual(resCell.getValueForEdit(), "3", "Value for edit in A102 after" + count + " row shifted");
|
||
assert.strictEqual(resCell.getFormula(), "", "Formula in cell A102 after" + count + " row shifted");
|
||
|
||
resCell = ws.getRange4(102, 0);
|
||
assert.strictEqual(resCell.getValueForEdit(), "4", "Value for edit in A103 after" + count + " row shifted");
|
||
assert.strictEqual(resCell.getFormula(), "", "Formula in cell A103 after" + count + " row shifted");
|
||
|
||
resCell = ws.getRange4(103, 0);
|
||
assert.strictEqual(resCell.getValueForEdit(), "5", "Value for edit in A104 after" + count + " row shifted");
|
||
assert.strictEqual(resCell.getFormula(), "", "Formula in cell A104 after" + count + " row shifted");
|
||
|
||
resCell = ws.getRange4(104, 0);
|
||
assert.strictEqual(resCell.getValueForEdit(), "", "Value for edit in A105 after" + count + " row shifted");
|
||
assert.strictEqual(resCell.getFormula(), "", "Formula in cell A105 after" + count + " row shifted");
|
||
|
||
resCell = ws.getRange4(105, 0);
|
||
assert.strictEqual(resCell.getValueForEdit(), "", "Value for edit in A106 after" + count + " row shifted");
|
||
assert.strictEqual(resCell.getFormula(), "", "Formula in cell A106 after" + count + " row shifted");
|
||
|
||
resCell = ws.getRange4(106, 0);
|
||
assert.strictEqual(resCell.getValueForEdit(), "=SUM(A100:A104)", "Value for edit in A107 after" + count + " row shifted");
|
||
assert.strictEqual(resCell.getFormula(), "SUM(A100:A104)", "Formula in cell A107 after" + count + " row shifted");
|
||
ws.getRange2("A99:B110").cleanAll();
|
||
|
||
ws.getRange2("A1:Z999").cleanAll();
|
||
});
|
||
|
||
QUnit.test("Test: \"Shift/move cells after create a table\"", function (assert) {
|
||
// let testData = [
|
||
// ["1", "row1col2", "row1col3", "row1col4", "row1col5", "row1col6"],
|
||
// ["2", "row2col2", "row2col3", "row2col4", "row2col5", "row2col6"],
|
||
// ["3", "row3col2", "row3col3", "row3col4", "row3col5", "row3col6"],
|
||
// ["4", "row4col2", "row4col3", "row4col4", "row4col5", "row4col6"],
|
||
// ["5", "row5col2", "row5col3", "row5col4", "row5col5", "row5col6"],
|
||
// ];
|
||
|
||
// for bug 39883
|
||
let array;
|
||
ws.getRange2("A100").setValue("1");
|
||
ws.getRange2("A101").setValue("2");
|
||
ws.getRange2("A102").setValue("3");
|
||
ws.getRange2("A103").setValue("4");
|
||
ws.getRange2("A104").setValue("5");
|
||
|
||
let resCell = ws.getRange4(104, 0);
|
||
resCell.setValue("=SUM(A100:A104)");
|
||
|
||
resCell = ws.getRange4(99, 0);
|
||
assert.strictEqual(resCell.getValueForEdit(), "1", "Value for edit in A100 before table is created");
|
||
assert.strictEqual(resCell.getFormula(), "", "Formula in cell A100 before table is created");
|
||
|
||
resCell = ws.getRange4(100, 0);
|
||
assert.strictEqual(resCell.getValueForEdit(), "2", "Value for edit in A101 before table is created");
|
||
assert.strictEqual(resCell.getFormula(), "", "Formula in cell A101 before table is created");
|
||
|
||
resCell = ws.getRange4(101, 0);
|
||
assert.strictEqual(resCell.getValueForEdit(), "3", "Value for edit in A102 before table is created");
|
||
assert.strictEqual(resCell.getFormula(), "", "Formula in cell A102 before table is created");
|
||
|
||
resCell = ws.getRange4(102, 0);
|
||
assert.strictEqual(resCell.getValueForEdit(), "4", "Value for edit in A103 before table is created");
|
||
assert.strictEqual(resCell.getFormula(), "", "Formula in cell A103 before table is created");
|
||
|
||
resCell = ws.getRange4(103, 0);
|
||
assert.strictEqual(resCell.getValueForEdit(), "5", "Value for edit in A104 before table is created");
|
||
assert.strictEqual(resCell.getFormula(), "", "Formula in cell A104 before table is created");
|
||
|
||
resCell = ws.getRange4(104, 0);
|
||
assert.strictEqual(resCell.getValueForEdit(), "=SUM(A100:A104)", "Value for edit in A105 before table is created");
|
||
assert.strictEqual(resCell.getFormula(), "SUM(A100:A104)", "Formula in cell A105 before table is created");
|
||
|
||
let cellWithFormula = new AscCommonExcel.CCellWithFormula(ws, 104, 0);
|
||
let oParser = new AscCommonExcel.parserFormula("SUM(A100:A104)", cellWithFormula, ws);
|
||
assert.ok(oParser.parse());
|
||
oParser.buildDependencies();
|
||
array = oParser.calculate();
|
||
|
||
let tableOptions = new AscCommonExcel.AddFormatTableOptions();
|
||
tableOptions.range = "A100:A104";
|
||
// create table in A100:A104 range
|
||
tableOptions.isTitle = false;
|
||
api.asc_addAutoFilter("TableStyleMedium2", tableOptions);
|
||
|
||
let tables = wsView.model.autoFilters.getTablesIntersectionRange(new Asc.Range(0, 100, 0, 100));
|
||
assert.strictEqual(tables.length, 1, "Table was created without selection of formula. Compare tables length");
|
||
|
||
let table = tables[0];
|
||
let tableName = table.DisplayName;
|
||
// wsView.af_changeFormatTableInfo(tableName, Asc.c_oAscChangeTableStyleInfo.rowTotal, true);
|
||
|
||
resCell = ws.getRange4(99, 0);
|
||
assert.strictEqual(resCell.getValueForEdit(), "Column1", "Value for edit in after table is created");
|
||
assert.strictEqual(resCell.getFormula(), "", "Formula in cell after table is created");
|
||
|
||
resCell = ws.getRange4(100, 0);
|
||
assert.strictEqual(resCell.getValueForEdit(), "1", "Value for edit in after table is created");
|
||
assert.strictEqual(resCell.getFormula(), "", "Formula in cell after table is created");
|
||
|
||
resCell = ws.getRange4(101, 0);
|
||
assert.strictEqual(resCell.getValueForEdit(), "2", "Value for edit in after table is created");
|
||
assert.strictEqual(resCell.getFormula(), "", "Formula in cell after table is created");
|
||
|
||
resCell = ws.getRange4(102, 0);
|
||
assert.strictEqual(resCell.getValueForEdit(), "3", "Value for edit in after table is created");
|
||
assert.strictEqual(resCell.getFormula(), "", "Formula in cell after table is created");
|
||
|
||
resCell = ws.getRange4(103, 0);
|
||
assert.strictEqual(resCell.getValueForEdit(), "4", "Value for edit in after table is created");
|
||
assert.strictEqual(resCell.getFormula(), "", "Formula in cell after table is created");
|
||
|
||
resCell = ws.getRange4(104, 0);
|
||
assert.strictEqual(resCell.getValueForEdit(), "5", "Value for edit in after table is created");
|
||
assert.strictEqual(resCell.getFormula(), "", "Formula in cell after table is created");
|
||
|
||
resCell = ws.getRange4(105, 0);
|
||
assert.strictEqual(resCell.getValueForEdit(), "=SUM(A101:A105)", "Value for edit in after table is created");
|
||
assert.strictEqual(resCell.getFormula(), "SUM(A101:A105)", "Formula in cell after table is created");
|
||
|
||
tables.length = 0;
|
||
clearData(0, 0, 200, 200);
|
||
|
||
|
||
/* create table with header/title and with the same data as the previous test*/
|
||
ws.getRange2("A100").setValue("1");
|
||
ws.getRange2("A101").setValue("2");
|
||
ws.getRange2("A102").setValue("3");
|
||
ws.getRange2("A103").setValue("4");
|
||
ws.getRange2("A104").setValue("5");
|
||
|
||
resCell = ws.getRange4(104, 0);
|
||
resCell.setValue("=SUM(A100:A104)");
|
||
|
||
resCell = ws.getRange4(99, 0);
|
||
assert.strictEqual(resCell.getValueForEdit(), "1", "Value for edit in before table is created");
|
||
assert.strictEqual(resCell.getFormula(), "", "Formula in cell before table is created");
|
||
|
||
resCell = ws.getRange4(104, 0);
|
||
assert.strictEqual(resCell.getValueForEdit(), "=SUM(A100:A104)", "Value for edit in before table is created");
|
||
assert.strictEqual(resCell.getFormula(), "SUM(A100:A104)", "Formula in cell before table is created");
|
||
|
||
cellWithFormula = new AscCommonExcel.CCellWithFormula(ws, 104, 0);
|
||
oParser = new AscCommonExcel.parserFormula("SUM(A100:A104)", cellWithFormula, ws);
|
||
assert.ok(oParser.parse());
|
||
oParser.buildDependencies();
|
||
array = oParser.calculate();
|
||
|
||
tableOptions = new AscCommonExcel.AddFormatTableOptions();
|
||
tableOptions.range = "A100:A104";
|
||
tableOptions.isTitle = true;
|
||
api.asc_addAutoFilter("TableStyleMedium2", tableOptions);
|
||
|
||
tables = wsView.model.autoFilters.getTablesIntersectionRange(new Asc.Range(0, 100, 0, 100));
|
||
assert.strictEqual(tables.length, 1, "Table was created without selection of formula.compare tables length");
|
||
|
||
table = tables[0];
|
||
tableName = table.DisplayName;
|
||
// wsView.af_changeFormatTableInfo(tableName, Asc.c_oAscChangeTableStyleInfo.rowTotal, true);
|
||
|
||
resCell = ws.getRange4(99, 0);
|
||
assert.strictEqual(resCell.getValueForEdit(), "1", "Value for edit in after table with title is created");
|
||
assert.strictEqual(resCell.getFormula(), "", "Formula in cell after table with title is created");
|
||
|
||
resCell = ws.getRange4(100, 0);
|
||
assert.strictEqual(resCell.getValueForEdit(), "2", "Value for edit in after table with title is created");
|
||
assert.strictEqual(resCell.getFormula(), "", "Formula in cell after table with title is created");
|
||
|
||
resCell = ws.getRange4(101, 0);
|
||
assert.strictEqual(resCell.getValueForEdit(), "3", "Value for edit in after table with title is created");
|
||
assert.strictEqual(resCell.getFormula(), "", "Formula in cell after table with title is created");
|
||
|
||
resCell = ws.getRange4(102, 0);
|
||
assert.strictEqual(resCell.getValueForEdit(), "4", "Value for edit in after table with title is created");
|
||
assert.strictEqual(resCell.getFormula(), "", "Formula in cell after table with title is created");
|
||
|
||
resCell = ws.getRange4(103, 0);
|
||
assert.strictEqual(resCell.getValueForEdit(), "5", "Value for edit in after table with title is created");
|
||
assert.strictEqual(resCell.getFormula(), "", "Formula in cell after table with title is created");
|
||
|
||
resCell = ws.getRange4(104, 0);
|
||
assert.strictEqual(resCell.getValueForEdit(), "=SUM(A100:A104)", "Value for edit in after table with title is created");
|
||
assert.strictEqual(resCell.getFormula(), "SUM(A100:A104)", "Formula in cell after table with title is created");
|
||
|
||
resCell = ws.getRange4(105, 0);
|
||
assert.strictEqual(resCell.getValueForEdit(), "", "Value for edit in after table is created");
|
||
assert.strictEqual(resCell.getFormula(), "", "Formula in cell after table with title is created");
|
||
|
||
tables.length = 0;
|
||
clearData(0, 0, 200, 200);
|
||
|
||
|
||
ws.getRange2("A100").setValue("1");
|
||
ws.getRange2("A101").setValue("2");
|
||
ws.getRange2("A102").setValue("3");
|
||
ws.getRange2("A103").setValue("4");
|
||
ws.getRange2("A104").setValue("5");
|
||
|
||
resCell = ws.getRange4(104, 0);
|
||
resCell.setValue("=SUM(A100:A104)");
|
||
|
||
resCell = ws.getRange4(99, 0);
|
||
assert.strictEqual(resCell.getValueForEdit(), "1", "Value for edit in before table is created");
|
||
assert.strictEqual(resCell.getFormula(), "", "Formula in cell before table is created");
|
||
|
||
resCell = ws.getRange4(104, 0);
|
||
assert.strictEqual(resCell.getValueForEdit(), "=SUM(A100:A104)", "Value for edit in before table is created");
|
||
assert.strictEqual(resCell.getFormula(), "SUM(A100:A104)", "Formula in cell before table is created");
|
||
|
||
cellWithFormula = new AscCommonExcel.CCellWithFormula(ws, 104, 0);
|
||
oParser = new AscCommonExcel.parserFormula("SUM(A100:A104)", cellWithFormula, ws);
|
||
assert.ok(oParser.parse());
|
||
oParser.buildDependencies();
|
||
array = oParser.calculate();
|
||
|
||
tableOptions = new AscCommonExcel.AddFormatTableOptions();
|
||
tableOptions.range = "A100:A105";
|
||
tableOptions.isTitle = false;
|
||
api.asc_addAutoFilter("TableStyleMedium2", tableOptions);
|
||
|
||
tables = wsView.model.autoFilters.getTablesIntersectionRange(new Asc.Range(0, 100, 0, 100));
|
||
assert.strictEqual(tables.length, 1, "Table was created with selection of formula. Compare tables length");
|
||
|
||
table = tables[0];
|
||
tableName = table.DisplayName;
|
||
|
||
resCell = ws.getRange4(99, 0);
|
||
assert.strictEqual(resCell.getValueForEdit(), "Column1", "Value for edit in after table is created");
|
||
assert.strictEqual(resCell.getFormula(), "", "Formula in cell after table is created");
|
||
|
||
resCell = ws.getRange4(100, 0);
|
||
assert.strictEqual(resCell.getValueForEdit(), "1", "Value for edit in after table is created");
|
||
assert.strictEqual(resCell.getFormula(), "", "Formula in cell after table is created");
|
||
|
||
resCell = ws.getRange4(101, 0);
|
||
assert.strictEqual(resCell.getValueForEdit(), "2", "Value for edit in after table is created");
|
||
assert.strictEqual(resCell.getFormula(), "", "Formula in cell after table is created");
|
||
|
||
resCell = ws.getRange4(102, 0);
|
||
assert.strictEqual(resCell.getValueForEdit(), "3", "Value for edit in after table is created");
|
||
assert.strictEqual(resCell.getFormula(), "", "Formula in cell after table is created");
|
||
|
||
resCell = ws.getRange4(103, 0);
|
||
assert.strictEqual(resCell.getValueForEdit(), "4", "Value for edit in after table is created");
|
||
assert.strictEqual(resCell.getFormula(), "", "Formula in cell after table is created");
|
||
|
||
resCell = ws.getRange4(104, 0);
|
||
assert.strictEqual(resCell.getValueForEdit(), "5", "Value for edit in after table is created");
|
||
assert.strictEqual(resCell.getFormula(), "", "Formula in cell after table is created");
|
||
|
||
resCell = ws.getRange4(105, 0);
|
||
assert.strictEqual(resCell.getValueForEdit(), "=SUM(A101:A105)", "Value for edit in after table is created");
|
||
assert.strictEqual(resCell.getFormula(), "SUM(A101:A105)", "Formula in cell after table is created");
|
||
|
||
tables.length = 0;
|
||
clearData(0, 0, 200, 200);
|
||
|
||
|
||
ws.getRange2("A100").setValue("1");
|
||
ws.getRange2("A101").setValue("2");
|
||
ws.getRange2("A102").setValue("3");
|
||
ws.getRange2("A103").setValue("4");
|
||
ws.getRange2("A104").setValue("5");
|
||
|
||
resCell = ws.getRange4(104, 0);
|
||
resCell.setValue("=SUM(A100:A104)");
|
||
|
||
resCell = ws.getRange4(99, 0);
|
||
assert.strictEqual(resCell.getValueForEdit(), "1", "Value for edit in before table is created");
|
||
assert.strictEqual(resCell.getFormula(), "", "Formula in cell before table is created");
|
||
|
||
resCell = ws.getRange4(104, 0);
|
||
assert.strictEqual(resCell.getValueForEdit(), "=SUM(A100:A104)", "Value for edit in before table is created");
|
||
assert.strictEqual(resCell.getFormula(), "SUM(A100:A104)", "Formula in cell before table is created");
|
||
|
||
cellWithFormula = new AscCommonExcel.CCellWithFormula(ws, 104, 0);
|
||
oParser = new AscCommonExcel.parserFormula("SUM(A100:A104)", cellWithFormula, ws);
|
||
assert.ok(oParser.parse());
|
||
oParser.buildDependencies();
|
||
array = oParser.calculate();
|
||
|
||
tableOptions = new AscCommonExcel.AddFormatTableOptions();
|
||
tableOptions.range = "A100:A103";
|
||
tableOptions.isTitle = false;
|
||
api.asc_addAutoFilter("TableStyleMedium2", tableOptions);
|
||
|
||
tables = wsView.model.autoFilters.getTablesIntersectionRange(new Asc.Range(0, 100, 0, 100));
|
||
assert.strictEqual(tables.length, 1, "Table was created without selection of formula. Compare tables length");
|
||
|
||
table = tables[0];
|
||
tableName = table.DisplayName;
|
||
|
||
resCell = ws.getRange4(99, 0);
|
||
assert.strictEqual(resCell.getValueForEdit(), "Column1", "Value for edit in after table is created");
|
||
assert.strictEqual(resCell.getFormula(), "", "Formula in cell after table is created");
|
||
|
||
resCell = ws.getRange4(100, 0);
|
||
assert.strictEqual(resCell.getValueForEdit(), "1", "Value for edit in after table is created");
|
||
assert.strictEqual(resCell.getFormula(), "", "Formula in cell after table is created");
|
||
|
||
resCell = ws.getRange4(101, 0);
|
||
assert.strictEqual(resCell.getValueForEdit(), "2", "Value for edit in after table is created");
|
||
assert.strictEqual(resCell.getFormula(), "", "Formula in cell after table is created");
|
||
|
||
resCell = ws.getRange4(102, 0);
|
||
assert.strictEqual(resCell.getValueForEdit(), "3", "Value for edit in after table is created");
|
||
assert.strictEqual(resCell.getFormula(), "", "Formula in cell after table is created");
|
||
|
||
resCell = ws.getRange4(103, 0);
|
||
assert.strictEqual(resCell.getValueForEdit(), "4", "Value for edit in after table is created");
|
||
assert.strictEqual(resCell.getFormula(), "", "Formula in cell after table is created");
|
||
|
||
resCell = ws.getRange4(104, 0);
|
||
assert.strictEqual(resCell.getValueForEdit(), "5", "Value for edit in after table is created");
|
||
assert.strictEqual(resCell.getFormula(), "", "Formula in cell after table is created");
|
||
|
||
resCell = ws.getRange4(105, 0);
|
||
assert.strictEqual(resCell.getValueForEdit(), "=SUM(A101:A105)", "Value for edit in after table is created");
|
||
assert.strictEqual(resCell.getFormula(), "SUM(A101:A105)", "Formula in cell after table is created");
|
||
|
||
tables.length = 0;
|
||
clearData(0, 0, 200, 200);
|
||
|
||
|
||
ws.getRange2("A100").setValue("1");
|
||
ws.getRange2("A101").setValue("2");
|
||
ws.getRange2("A102").setValue("3");
|
||
ws.getRange2("A103").setValue("4");
|
||
ws.getRange2("A104").setValue("5");
|
||
|
||
resCell = ws.getRange4(104, 0);
|
||
resCell.setValue("=SUM(A100:A104)");
|
||
|
||
resCell = ws.getRange4(99, 0);
|
||
assert.strictEqual(resCell.getValueForEdit(), "1", "Value for edit in before table is created");
|
||
assert.strictEqual(resCell.getFormula(), "", "Formula in cell before table is created");
|
||
|
||
resCell = ws.getRange4(104, 0);
|
||
assert.strictEqual(resCell.getValueForEdit(), "=SUM(A100:A104)", "Value for edit in before table is created");
|
||
assert.strictEqual(resCell.getFormula(), "SUM(A100:A104)", "Formula in cell before table is created");
|
||
|
||
cellWithFormula = new AscCommonExcel.CCellWithFormula(ws, 104, 0);
|
||
oParser = new AscCommonExcel.parserFormula("SUM(A100:A104)", cellWithFormula, ws);
|
||
assert.ok(oParser.parse());
|
||
oParser.buildDependencies();
|
||
array = oParser.calculate();
|
||
|
||
tableOptions = new AscCommonExcel.AddFormatTableOptions();
|
||
tableOptions.range = "A102:A105";
|
||
tableOptions.isTitle = false;
|
||
api.asc_addAutoFilter("TableStyleMedium2", tableOptions);
|
||
|
||
tables = wsView.model.autoFilters.getTablesIntersectionRange(new Asc.Range(0, 103, 0, 103));
|
||
assert.strictEqual(tables.length, 1, "Table was created with selection of formula. Compare tables length");
|
||
|
||
table = tables[0];
|
||
tableName = table.DisplayName;
|
||
|
||
resCell = ws.getRange4(99, 0);
|
||
assert.strictEqual(resCell.getValueForEdit(), "1", "Value for edit in after table is created");
|
||
assert.strictEqual(resCell.getFormula(), "", "Formula in cell after table is created");
|
||
|
||
resCell = ws.getRange4(100, 0);
|
||
assert.strictEqual(resCell.getValueForEdit(), "2", "Value for edit in after table is created");
|
||
assert.strictEqual(resCell.getFormula(), "", "Formula in cell after table is created");
|
||
|
||
resCell = ws.getRange4(101, 0);
|
||
assert.strictEqual(resCell.getValueForEdit(), "Column1", "Value for edit in after table is created");
|
||
assert.strictEqual(resCell.getFormula(), "", "Formula in cell after table is created");
|
||
|
||
resCell = ws.getRange4(102, 0);
|
||
assert.strictEqual(resCell.getValueForEdit(), "3", "Value for edit in after table is created");
|
||
assert.strictEqual(resCell.getFormula(), "", "Formula in cell after table is created");
|
||
|
||
resCell = ws.getRange4(103, 0);
|
||
assert.strictEqual(resCell.getValueForEdit(), "4", "Value for edit in after table is created");
|
||
assert.strictEqual(resCell.getFormula(), "", "Formula in cell after table is created");
|
||
|
||
resCell = ws.getRange4(104, 0);
|
||
assert.strictEqual(resCell.getValueForEdit(), "5", "Value for edit in after table is created");
|
||
assert.strictEqual(resCell.getFormula(), "", "Formula in cell after table is created");
|
||
|
||
resCell = ws.getRange4(105, 0);
|
||
assert.strictEqual(resCell.getValueForEdit(), "=SUM(A100:A105)", "Value for edit in after table is created");
|
||
assert.strictEqual(resCell.getFormula(), "SUM(A100:A105)", "Formula in cell after table is created");
|
||
|
||
tables.length = 0;
|
||
clearData(0, 0, 200, 200);
|
||
ws.getRange2("A99:B110").cleanAll();
|
||
|
||
|
||
ws.getRange2("A100").setValue("1");
|
||
ws.getRange2("A101").setValue("2");
|
||
ws.getRange2("A102").setValue("3");
|
||
ws.getRange2("A103").setValue("4");
|
||
ws.getRange2("A104").setValue("5");
|
||
|
||
resCell = ws.getRange4(104, 0);
|
||
resCell.setValue("=SUM(A100:A104)");
|
||
|
||
resCell = ws.getRange4(99, 0);
|
||
assert.strictEqual(resCell.getValueForEdit(), "1", "Value for edit in before table is created");
|
||
assert.strictEqual(resCell.getFormula(), "", "Formula in cell before table is created");
|
||
|
||
resCell = ws.getRange4(104, 0);
|
||
assert.strictEqual(resCell.getValueForEdit(), "=SUM(A100:A104)", "Value for edit in before table is created");
|
||
assert.strictEqual(resCell.getFormula(), "SUM(A100:A104)", "Formula in cell before table is created");
|
||
|
||
cellWithFormula = new AscCommonExcel.CCellWithFormula(ws, 104, 0);
|
||
oParser = new AscCommonExcel.parserFormula("SUM(A100:A104)", cellWithFormula, ws);
|
||
assert.ok(oParser.parse());
|
||
oParser.buildDependencies();
|
||
array = oParser.calculate();
|
||
|
||
tableOptions = new AscCommonExcel.AddFormatTableOptions();
|
||
tableOptions.range = "A102:A103";
|
||
tableOptions.isTitle = false;
|
||
api.asc_addAutoFilter("TableStyleMedium2", tableOptions);
|
||
|
||
tables = wsView.model.autoFilters.getTablesIntersectionRange(new Asc.Range(0, 102, 0, 102));
|
||
assert.strictEqual(tables.length, 1, "Table was created with selection of formula. Compare tables length");
|
||
|
||
table = tables[0];
|
||
tableName = table.DisplayName;
|
||
|
||
resCell = ws.getRange4(99, 0);
|
||
assert.strictEqual(resCell.getValueForEdit(), "1", "Value for edit in after table is created");
|
||
assert.strictEqual(resCell.getFormula(), "", "Formula in cell after table is created");
|
||
|
||
resCell = ws.getRange4(100, 0);
|
||
assert.strictEqual(resCell.getValueForEdit(), "2", "Value for edit in after table is created");
|
||
assert.strictEqual(resCell.getFormula(), "", "Formula in cell after table is created");
|
||
|
||
resCell = ws.getRange4(101, 0);
|
||
assert.strictEqual(resCell.getValueForEdit(), "Column1", "Value for edit in after table is created");
|
||
assert.strictEqual(resCell.getFormula(), "", "Formula in cell after table is created");
|
||
|
||
resCell = ws.getRange4(102, 0);
|
||
assert.strictEqual(resCell.getValueForEdit(), "3", "Value for edit in after table is created");
|
||
assert.strictEqual(resCell.getFormula(), "", "Formula in cell after table is created");
|
||
|
||
resCell = ws.getRange4(103, 0);
|
||
assert.strictEqual(resCell.getValueForEdit(), "4", "Value for edit in after table is created");
|
||
assert.strictEqual(resCell.getFormula(), "", "Formula in cell after table is created");
|
||
|
||
resCell = ws.getRange4(104, 0);
|
||
assert.strictEqual(resCell.getValueForEdit(), "5", "Value for edit in after table is created");
|
||
assert.strictEqual(resCell.getFormula(), "", "Formula in cell after table is created");
|
||
|
||
resCell = ws.getRange4(105, 0);
|
||
assert.strictEqual(resCell.getValueForEdit(), "=SUM(A100:A105)", "Value for edit in after table is created");
|
||
assert.strictEqual(resCell.getFormula(), "SUM(A100:A105)", "Formula in cell after table is created");
|
||
|
||
tables.length = 0;
|
||
clearData(0, 0, 200, 200);
|
||
ws.getRange2("A99:B110").cleanAll();
|
||
|
||
});
|
||
|
||
QUnit.test('Autofill - Asc horizontal sequence: Days of the weeks', function (assert) {
|
||
let testData = [
|
||
['Sunday'],
|
||
['SUNDAY'],
|
||
['sunday'],
|
||
['SuNdAy'],
|
||
['SUnDaY'],
|
||
['sUnDaY'],
|
||
['suNDay'],
|
||
['Sun'],
|
||
['SUN'],
|
||
['sun'],
|
||
['SuN'],
|
||
['SUn'],
|
||
['suN'],
|
||
['sUn']
|
||
];
|
||
// Add expected Data after Autofill
|
||
let expectedDataCapitalized = ['Monday', 'Tuesday', 'Wednesday'];
|
||
let expectedDataUpper = updateDataToUpCase(expectedDataCapitalized);
|
||
let expectedDataLower = updateDataToLowCase(expectedDataCapitalized);
|
||
let expectedDataShortCapitalized = ['Mon', 'Tue', 'Wed'];
|
||
let expectedDataShortUpper = updateDataToUpCase(expectedDataShortCapitalized);
|
||
let expectedDataShortLower = updateDataToLowCase(expectedDataShortCapitalized);
|
||
|
||
let range = ws.getRange4(0,0);
|
||
range.fillData(testData);
|
||
// nFillHandleArea: 1 - Reverse, 3 - asc sequence, 2 - Reverse 1 elem.
|
||
getHorizontalAutofillCases(0, 0, 0, 3, assert, [expectedDataCapitalized, expectedDataUpper,
|
||
expectedDataLower, expectedDataShortCapitalized, expectedDataShortUpper, expectedDataShortLower], 3);
|
||
|
||
clearData(0, 0, 3, 13);
|
||
});
|
||
QUnit.test('Autofill - Reverse horizontal sequence: Days of the weeks', function (assert) {
|
||
let testData = [
|
||
['Sunday'],
|
||
['SUNDAY'],
|
||
['sunday'],
|
||
['SuNdAy'],
|
||
['SUnDaY'],
|
||
['sUnDaY'],
|
||
['suNDay'],
|
||
['Sun'],
|
||
['SUN'],
|
||
['sun'],
|
||
['SuN'],
|
||
['SUn'],
|
||
['suN'],
|
||
['sUn']
|
||
];
|
||
// Add expected Data after Autofill
|
||
let expectedDataCapitalized = ['Saturday', 'Friday', 'Thursday'];
|
||
let expectedDataUpper = updateDataToUpCase(expectedDataCapitalized);
|
||
let expectedDataLower = updateDataToLowCase(expectedDataCapitalized);
|
||
let expectedDataShortCapitalized = ['Sat', 'Fri', 'Thu'];
|
||
let expectedDataShortUpper = updateDataToUpCase(expectedDataShortCapitalized);
|
||
let expectedDataShortLower = updateDataToLowCase(expectedDataShortCapitalized);
|
||
|
||
let range = ws.getRange4(0,3);
|
||
range.fillData(testData);
|
||
// nFillHandleArea: 1 - Reverse, 3 - asc sequence, 2 - Reverse 1 elem.
|
||
getHorizontalAutofillCases(3, 3, 3, 0, assert, [expectedDataCapitalized, expectedDataUpper,
|
||
expectedDataLower, expectedDataShortCapitalized, expectedDataShortUpper, expectedDataShortLower], 1);
|
||
|
||
clearData(0, 0, 3, 13);
|
||
});
|
||
QUnit.test('Autofill - Asc horizontal even sequence: Days of the weeks', function (assert) {
|
||
let testData = [
|
||
['Sunday', 'Tuesday'],
|
||
['SUNDAY', 'TUESDAY'],
|
||
['sunday', 'tuesday'],
|
||
['SuNdAy', 'TuEsDaY'],
|
||
['SUnDaY', 'TUeSdAy'],
|
||
['sUnDaY', 'tUeSdAy'],
|
||
['suNDay', 'tuESdaY'],
|
||
['Sun', 'Tue'],
|
||
['SUN', 'TUE'],
|
||
['sun', 'tue'],
|
||
['SuN', 'TuE'],
|
||
['SUn', 'TUe'],
|
||
['suN', 'tuE'],
|
||
['sUn', 'tUe']
|
||
];
|
||
// Add expected Data after Autofill
|
||
let expectedDataCapitalized = ['Thursday', 'Saturday', 'Monday'];
|
||
let expectedDataUpper = updateDataToUpCase(expectedDataCapitalized);
|
||
let expectedDataLower = updateDataToLowCase(expectedDataCapitalized);
|
||
let expectedDataShortCapitalized = ['Thu', 'Sat', 'Mon'];
|
||
let expectedDataShortUpper = updateDataToUpCase(expectedDataShortCapitalized);
|
||
let expectedDataShortLower = updateDataToLowCase(expectedDataShortCapitalized);
|
||
|
||
let range = ws.getRange4(0,0);
|
||
range.fillData(testData);
|
||
// nFillHandleArea: 1 - Reverse, 3 - asc sequence, 2 - Reverse 1 elem.
|
||
getHorizontalAutofillCases(0, 1, 0, 4, assert, [expectedDataCapitalized, expectedDataUpper,
|
||
expectedDataLower, expectedDataShortCapitalized, expectedDataShortUpper, expectedDataShortLower], 3);
|
||
|
||
clearData(0, 0, 4, 13);
|
||
});
|
||
QUnit.test('Autofill - Asc horizontal odd sequence: Days of the weeks', function (assert) {
|
||
let testData = [
|
||
['Monday', 'Wednesday'],
|
||
['MONDAY', 'WEDNESDAY'],
|
||
['monday', 'wednesday'],
|
||
['MoNdAy', 'WeDnEsDaY'],
|
||
['MOnDAy', 'WEdNEsDAy'],
|
||
['mOnDaY', 'wEdNeSdAy'],
|
||
['moNDay', 'weDNesDAy'],
|
||
['Mon', 'Wed'],
|
||
['MON', 'WED'],
|
||
['mon', 'wed'],
|
||
['MoN', 'WeD'],
|
||
['MOn', 'WEd'],
|
||
['moN', 'weD'],
|
||
['mOn', 'wEd']
|
||
];
|
||
// Add expected Data after Autofill
|
||
let expectedDataCapitalized = ['Friday', 'Sunday', 'Tuesday'];
|
||
let expectedDataUpper = updateDataToUpCase(expectedDataCapitalized);
|
||
let expectedDataLower = updateDataToLowCase(expectedDataCapitalized);
|
||
let expectedDataShortCapitalized = ['Fri', 'Sun', 'Tue'];
|
||
let expectedDataShortUpper = updateDataToUpCase(expectedDataShortCapitalized);
|
||
let expectedDataShortLower = updateDataToLowCase(expectedDataShortCapitalized);
|
||
|
||
let range = ws.getRange4(0,0);
|
||
range.fillData(testData);
|
||
// nFillHandleArea: 1 - Reverse, 3 - asc sequence, 2 - Reverse 1 elem.
|
||
getHorizontalAutofillCases(0, 1, 0, 4, assert, [expectedDataCapitalized, expectedDataUpper,
|
||
expectedDataLower, expectedDataShortCapitalized, expectedDataShortUpper, expectedDataShortLower], 3);
|
||
|
||
clearData(0, 0, 4, 13);
|
||
});
|
||
QUnit.test('Autofill - Reverse horizontal even sequence: Days of the weeks', function (assert) {
|
||
let testData = [
|
||
['Friday', 'Sunday'],
|
||
['FRIDAY', 'SUNDAY'],
|
||
['friday', 'sunday'],
|
||
['FrIdAy', 'SuNdAy'],
|
||
['FRiDaY', 'SUnDaY'],
|
||
['fRiDaY', 'sUnDaY'],
|
||
['frIDay', 'suNDay'],
|
||
['Fri', 'Sun'],
|
||
['FRI', 'SUN'],
|
||
['fri', 'sun'],
|
||
['FrI', 'SuN'],
|
||
['FRi', 'SUn'],
|
||
['frI', 'suN'],
|
||
['fRi', 'sUn']
|
||
];
|
||
// Add expected Data after Autofill
|
||
let expectedDataCapitalized = ['Wednesday', 'Monday', 'Saturday'];
|
||
let expectedDataUpper = updateDataToUpCase(expectedDataCapitalized);
|
||
let expectedDataLower = updateDataToLowCase(expectedDataCapitalized);
|
||
let expectedDataShortCapitalized = ['Wed', 'Mon', 'Sat'];
|
||
let expectedDataShortUpper = updateDataToUpCase(expectedDataShortCapitalized);
|
||
let expectedDataShortLower = updateDataToLowCase(expectedDataShortCapitalized);
|
||
|
||
let range = ws.getRange4(0,3);
|
||
range.fillData(testData);
|
||
// nFillHandleArea: 1 - Reverse, 3 - asc sequence, 2 - Reverse 1 elem.
|
||
getHorizontalAutofillCases(3, 4, 4, 0, assert, [expectedDataCapitalized, expectedDataUpper,
|
||
expectedDataLower, expectedDataShortCapitalized, expectedDataShortUpper, expectedDataShortLower], 1);
|
||
|
||
clearData(0, 0, 4, 13);
|
||
});
|
||
QUnit.test('Autofill - Reverse horizontal odd sequence: Days of the weeks', function (assert) {
|
||
let testData = [
|
||
['Thursday', 'Saturday'],
|
||
['THURSDAY', 'SATURDAY'],
|
||
['thursday', 'saturday'],
|
||
['ThUrSdAy', 'SaTuRdAy'],
|
||
['THurSDay', 'SAtuRDay'],
|
||
['tHuRsDaY', 'sAtUrDaY'],
|
||
['thURsdAY', 'saTUrdAY'],
|
||
['Thu', 'Sat'],
|
||
['THU', 'SAT'],
|
||
['thu', 'sat'],
|
||
['ThU', 'SaT'],
|
||
['THu', 'SAt'],
|
||
['thU', 'saT'],
|
||
['tHu', 'sAt']
|
||
];
|
||
// Add expected Data after Autofill
|
||
let expectedDataCapitalized = ['Tuesday', 'Sunday', 'Friday'];
|
||
let expectedDataUpper = updateDataToUpCase(expectedDataCapitalized);
|
||
let expectedDataLower = updateDataToLowCase(expectedDataCapitalized);
|
||
let expectedDataShortCapitalized = ['Tue', 'Sun', 'Fri'];
|
||
let expectedDataShortUpper = updateDataToUpCase(expectedDataShortCapitalized);
|
||
let expectedDataShortLower = updateDataToLowCase(expectedDataShortCapitalized);
|
||
|
||
let range = ws.getRange4(0,3);
|
||
range.fillData(testData);
|
||
// nFillHandleArea: 1 - Reverse, 3 - asc sequence, 2 - Reverse 1 elem.
|
||
getHorizontalAutofillCases(3, 4, 4, 0, assert, [expectedDataCapitalized, expectedDataUpper,
|
||
expectedDataLower, expectedDataShortCapitalized, expectedDataShortUpper, expectedDataShortLower], 1);
|
||
|
||
clearData(0, 0, 4, 13);
|
||
});
|
||
QUnit.test('Autofill - Asc horizontal sequence of full and short names: Days of the weeks', function (assert) {
|
||
let testData = [
|
||
['Sunday', 'Sun'],
|
||
['SUNDAY', 'SUN'],
|
||
['sunday', 'sun'],
|
||
['SuNdAy', 'SuN'],
|
||
['SUnDaY', 'SUn'],
|
||
['sUnDaY', 'sUn'],
|
||
['suNDay', 'suN'],
|
||
['Sun', 'Sunday'],
|
||
['SUN', 'SUNDAY'],
|
||
['sun', 'sunday'],
|
||
['SuN', 'SuNdAy'],
|
||
['SUn', 'SUnDaY'],
|
||
['suN', 'suNDay'],
|
||
['sUn', 'sUnDaY']
|
||
];
|
||
// Add expected Data after Autofill
|
||
let expectedDataCapitalized = ['Monday', 'Mon', 'Tuesday'];
|
||
let expectedDataUpper = updateDataToUpCase(expectedDataCapitalized);
|
||
let expectedDataLower = updateDataToLowCase(expectedDataCapitalized);
|
||
let expectedDataShortCapitalized = ['Mon', 'Monday', 'Tue'];
|
||
let expectedDataShortUpper = updateDataToUpCase(expectedDataShortCapitalized);
|
||
let expectedDataShortLower = updateDataToLowCase(expectedDataShortCapitalized);
|
||
|
||
let range = ws.getRange4(0,0);
|
||
range.fillData(testData);
|
||
// nFillHandleArea: 1 - Reverse, 3 - asc sequence, 2 - Reverse 1 elem.
|
||
getHorizontalAutofillCases(0, 1, 0, 4, assert, [expectedDataCapitalized, expectedDataUpper,
|
||
expectedDataLower, expectedDataShortCapitalized, expectedDataShortUpper, expectedDataShortLower], 3);
|
||
|
||
clearData(0, 0, 4, 13);
|
||
});
|
||
QUnit.test('Autofill - Reverse horizontal sequence of full and short names: Days of the weeks', function (assert) {
|
||
let testData = [
|
||
['Sunday', 'Sun'],
|
||
['SUNDAY', 'SUN'],
|
||
['sunday', 'sun'],
|
||
['SuNdAy', 'SuN'],
|
||
['SUnDaY', 'SUn'],
|
||
['sUnDaY', 'sUn'],
|
||
['suNDay', 'suN'],
|
||
['Sun', 'Sunday'],
|
||
['SUN', 'SUNDAY'],
|
||
['sun', 'sunday'],
|
||
['SuN', 'SuNdAy'],
|
||
['SUn', 'SUnDaY'],
|
||
['suN', 'suNDay'],
|
||
['sUn', 'sUnDaY']
|
||
];
|
||
// Add expected Data after Autofill
|
||
let expectedDataCapitalized = ['Sat', 'Saturday', 'Fri'];
|
||
let expectedDataUpper = updateDataToUpCase(expectedDataCapitalized);
|
||
let expectedDataLower = updateDataToLowCase(expectedDataCapitalized);
|
||
let expectedDataShortCapitalized = ['Saturday', 'Sat', 'Friday'];
|
||
let expectedDataShortUpper = updateDataToUpCase(expectedDataShortCapitalized);
|
||
let expectedDataShortLower = updateDataToLowCase(expectedDataShortCapitalized);
|
||
|
||
let range = ws.getRange4(0,3);
|
||
range.fillData(testData);
|
||
// nFillHandleArea: 1 - Reverse, 3 - asc sequence, 2 - Reverse 1 elem.
|
||
getHorizontalAutofillCases(3, 4, 4, 0, assert, [expectedDataCapitalized, expectedDataUpper,
|
||
expectedDataLower, expectedDataShortCapitalized, expectedDataShortUpper, expectedDataShortLower], 1);
|
||
|
||
clearData(0, 0, 4, 13);
|
||
});
|
||
QUnit.test('Autofill - Asc vertical sequence: Days of the weeks', function (assert) {
|
||
let testData = [
|
||
['Sunday', 'SUNDAY', 'sunday', 'SuNdAy', 'SUnDaY','sUnDaY', 'suNDay', 'Sun', 'SUN', 'sun', 'SuN', 'SUn', 'suN', 'sUn']
|
||
];
|
||
// Add expected Data after Autofill
|
||
let expectedDataCapitalized = [['Monday'], ['Tuesday'], ['Wednesday']];
|
||
let expectedDataShortCapitalized = [['Mon'], ['Tue'], ['Wed']];
|
||
let expectedDataUpper = updateDataToUpCase(expectedDataCapitalized);
|
||
let expectedDataLower = updateDataToLowCase(expectedDataCapitalized);
|
||
let expectedDataShortUpper = updateDataToUpCase(expectedDataShortCapitalized);
|
||
let expectedDataShortLower = updateDataToLowCase(expectedDataShortCapitalized);
|
||
|
||
let range = ws.getRange4(0,0);
|
||
range.fillData(testData);
|
||
//nFillHandleArea: 1 - Reverse, 3 - asc sequence, 2 - Reverse 1 elem.
|
||
getVerticalAutofillCases(0, 0, 0, 3, assert, [expectedDataCapitalized,
|
||
expectedDataUpper, expectedDataLower, expectedDataShortCapitalized, expectedDataShortUpper, expectedDataShortLower], 3);
|
||
|
||
clearData(0, 0, 13, 3);
|
||
});
|
||
QUnit.test('Autofill - Reverse vertical sequence: Days of the weeks', function (assert) {
|
||
let testData = [
|
||
['Sunday', 'SUNDAY', 'sunday', 'SuNdAy', 'SUnDaY','sUnDaY', 'suNDay', 'Sun', 'SUN', 'sun', 'SuN', 'SUn', 'suN', 'sUn']
|
||
];
|
||
// Add expected Data after Autofill
|
||
let expectedDataCapitalized = [['Saturday'], ['Friday'], ['Thursday']];
|
||
let expectedDataShortCapitalized = [['Sat'], ['Fri'], ['Thu']];
|
||
let expectedDataUpper = updateDataToUpCase(expectedDataCapitalized);
|
||
let expectedDataLower = updateDataToLowCase(expectedDataCapitalized);
|
||
let expectedDataShortUpper = updateDataToUpCase(expectedDataShortCapitalized);
|
||
let expectedDataShortLower = updateDataToLowCase(expectedDataShortCapitalized);
|
||
|
||
let range = ws.getRange4(3,0);
|
||
range.fillData(testData);
|
||
//nFillHandleArea: 1 - Reverse, 3 - asc sequence, 2 - Reverse 1 elem.
|
||
getVerticalAutofillCases(3, 3, 3, 0, assert, [expectedDataCapitalized,
|
||
expectedDataUpper, expectedDataLower, expectedDataShortCapitalized, expectedDataShortUpper, expectedDataShortLower], 1);
|
||
|
||
clearData(0, 0, 13, 3);
|
||
});
|
||
QUnit.test('Autofill - Asc vertical even sequence: Days of the weeks', function (assert) {
|
||
let testData = [
|
||
['Sunday', 'SUNDAY', 'sunday', 'SuNdAy', 'SUnDaY','sUnDaY', 'suNDay', 'Sun', 'SUN', 'sun', 'SuN', 'SUn', 'suN', 'sUn'],
|
||
['Tuesday', 'TUESDAY', 'tuesday', 'TuEsDaY', 'TUesDAy','tUeSdAy', 'tuESdaY', 'Tue', 'TUE', 'tue', 'TuE', 'TUe', 'tuE', 'tUe'],
|
||
];
|
||
// Add expected Data after Autofill
|
||
let expectedDataCapitalized = [['Thursday'], ['Saturday'], ['Monday']];
|
||
let expectedDataShortCapitalized = [['Thu'], ['Sat'], ['Mon']];
|
||
let expectedDataUpper = updateDataToUpCase(expectedDataCapitalized);
|
||
let expectedDataLower = updateDataToLowCase(expectedDataCapitalized);
|
||
let expectedDataShortUpper = updateDataToUpCase(expectedDataShortCapitalized);
|
||
let expectedDataShortLower = updateDataToLowCase(expectedDataShortCapitalized);
|
||
|
||
let range = ws.getRange4(0,0);
|
||
range.fillData(testData);
|
||
|
||
//nFillHandleArea: 1 - Reverse, 3 - asc sequence, 2 - Reverse 1 elem.
|
||
getVerticalAutofillCases(0, 1, 0, 4, assert, [expectedDataCapitalized,
|
||
expectedDataUpper, expectedDataLower, expectedDataShortCapitalized, expectedDataShortUpper, expectedDataShortLower], 3);
|
||
|
||
clearData(0, 0, 13, 4);
|
||
});
|
||
QUnit.test('Autofill - Asc vertical odd sequence: Days of the weeks', function (assert) {
|
||
let testData = [
|
||
['Monday', 'MONDAY', 'monday', 'MoNdaY', 'MOnDaY','mOnDaY', 'moNDay', 'Mon', 'MON', 'mon', 'MoN', 'MOn', 'moN', 'mOn'],
|
||
['Wednesday', 'WEDNESDAY', 'wednesday', 'WeDnEsDaY', 'WEdNEsDAy','wEdNeSdAy', 'weDNesDAy', 'Wed', 'WED', 'wed', 'WeD', 'WEd', 'weD', 'wEd'],
|
||
];
|
||
// Add expected Data after Autofill
|
||
let expectedDataCapitalized = [['Friday'], ['Sunday'], ['Tuesday']];
|
||
let expectedDataShortCapitalized = [['Fri'], ['Sun'], ['Tue']];
|
||
let expectedDataUpper = updateDataToUpCase(expectedDataCapitalized);
|
||
let expectedDataLower = updateDataToLowCase(expectedDataCapitalized);
|
||
let expectedDataShortUpper = updateDataToUpCase(expectedDataShortCapitalized);
|
||
let expectedDataShortLower = updateDataToLowCase(expectedDataShortCapitalized);
|
||
|
||
let range = ws.getRange4(0,0);
|
||
range.fillData(testData);
|
||
//nFillHandleArea: 1 - Reverse, 3 - asc sequence, 2 - Reverse 1 elem.
|
||
getVerticalAutofillCases(0, 1, 0, 4, assert, [expectedDataCapitalized,
|
||
expectedDataUpper, expectedDataLower, expectedDataShortCapitalized, expectedDataShortUpper, expectedDataShortLower], 3);
|
||
|
||
clearData(0, 0, 13, 4);
|
||
});
|
||
QUnit.test('Autofill - Asc vertical sequence of full and short names: Days of the weeks', function (assert) {
|
||
let testData = [
|
||
['Sunday', 'SUNDAY', 'sunday', 'SuNdAy', 'SUnDaY','sUnDaY', 'suNDay', 'Sun', 'SUN', 'sun', 'SuN', 'SUn', 'suN', 'sUn'],
|
||
['Sun', 'SUN', 'sun', 'SuN', 'SUn', 'suN', 'sUn', 'Sunday', 'SUNDAY', 'sunday', 'SuNdAy', 'SUnDaY','sUnDaY', 'suNDay']
|
||
];
|
||
// Add expected Data after Autofill
|
||
let expectedDataCapitalized = [['Monday'], ['Mon'], ['Tuesday']];
|
||
let expectedDataShortCapitalized = [['Mon'], ['Monday'], ['Tue']];
|
||
let expectedDataUpper = updateDataToUpCase(expectedDataCapitalized);
|
||
let expectedDataLower = updateDataToLowCase(expectedDataCapitalized);
|
||
let expectedDataShortUpper = updateDataToUpCase(expectedDataShortCapitalized);
|
||
let expectedDataShortLower = updateDataToLowCase(expectedDataShortCapitalized);
|
||
|
||
let range = ws.getRange4(0,0);
|
||
range.fillData(testData);
|
||
//nFillHandleArea: 1 - Reverse, 3 - asc sequence, 2 - Reverse 1 elem.
|
||
getVerticalAutofillCases(0, 1, 0, 4, assert, [expectedDataCapitalized,
|
||
expectedDataUpper, expectedDataLower, expectedDataShortCapitalized, expectedDataShortUpper, expectedDataShortLower], 3);
|
||
|
||
clearData(0, 0, 13, 4);
|
||
});
|
||
QUnit.test('Autofill - Reverse vertical sequence of full and short names: Days of the weeks', function (assert) {
|
||
let testData = [
|
||
['Sun', 'SUN', 'sun', 'SuN', 'SUn', 'suN', 'sUn', 'Sunday', 'SUNDAY', 'sunday', 'SuNdAy', 'SUnDaY','sUnDaY', 'suNDay'],
|
||
['Sunday', 'SUNDAY', 'sunday', 'SuNdAy', 'SUnDaY','sUnDaY', 'suNDay', 'Sun', 'SUN', 'sun', 'SuN', 'SUn', 'suN', 'sUn']
|
||
];
|
||
// Add expected Data after Autofill
|
||
let expectedDataCapitalized = [['Saturday'], ['Sat'], ['Friday']];
|
||
let expectedDataShortCapitalized = [['Sat'], ['Saturday'], ['Fri']];
|
||
let expectedDataUpper = updateDataToUpCase(expectedDataCapitalized);
|
||
let expectedDataLower = updateDataToLowCase(expectedDataCapitalized);
|
||
let expectedDataShortUpper = updateDataToUpCase(expectedDataShortCapitalized);
|
||
let expectedDataShortLower = updateDataToLowCase(expectedDataShortCapitalized);
|
||
|
||
let range = ws.getRange4(3,0);
|
||
range.fillData(testData);
|
||
//nFillHandleArea: 1 - Reverse, 3 - asc sequence, 2 - Reverse 1 elem.
|
||
getVerticalAutofillCases(3, 4, 4, 0, assert, [expectedDataCapitalized,
|
||
expectedDataUpper, expectedDataLower, expectedDataShortCapitalized, expectedDataShortUpper, expectedDataShortLower], 1);
|
||
|
||
clearData(0, 0, 13, 4);
|
||
});
|
||
QUnit.test('Autofill - Reverse vertical even sequence: Days of the weeks', function (assert) {
|
||
let testData = [
|
||
['Friday', 'FRIDAY', 'friday', 'FrIdAy', 'FRIdAy', 'fRIdAy', 'frIDaY', 'Fri', 'FRI', 'fri', 'FrI', 'FRi', 'frI', 'fRi'],
|
||
['Sunday', 'SUNDAY', 'sunday', 'SuNdAy', 'SUnDaY','sUnDaY', 'suNDay', 'Sun', 'SUN', 'sun', 'SuN', 'SUn', 'suN', 'sUn']
|
||
];
|
||
// Add expected Data after Autofill
|
||
let expectedDataCapitalized = [['Wednesday'], ['Monday'], ['Saturday']];
|
||
let expectedDataShortCapitalized = [['Wed'], ['Mon'], ['Sat']];
|
||
let expectedDataUpper = updateDataToUpCase(expectedDataCapitalized);
|
||
let expectedDataLower = updateDataToLowCase(expectedDataCapitalized);
|
||
let expectedDataShortUpper = updateDataToUpCase(expectedDataShortCapitalized);
|
||
let expectedDataShortLower = updateDataToLowCase(expectedDataShortCapitalized);
|
||
|
||
let range = ws.getRange4(3,0);
|
||
range.fillData(testData);
|
||
//nFillHandleArea: 1 - Reverse, 3 - asc sequence, 2 - Reverse 1 elem.
|
||
getVerticalAutofillCases(3, 4, 4, 0, assert, [expectedDataCapitalized,
|
||
expectedDataUpper, expectedDataLower, expectedDataShortCapitalized, expectedDataShortUpper, expectedDataShortLower], 1);
|
||
|
||
clearData(0, 0, 13, 4);
|
||
});
|
||
QUnit.test('Autofill - Reverse vertical odd sequence: Days of the weeks', function (assert) {
|
||
let testData = [
|
||
['Thursday', 'THURSDAY', 'thursday', 'ThUrSdAy', 'THUrSdAy', 'tHUrSdAy', 'thURsdAy', 'Thu', 'THU', 'thu', 'ThU', 'THu', 'thU', 'tHu'],
|
||
['Saturday', 'SATURDAY', 'saturday', 'SaTuRdAy', 'SAtUrDaY', 'sAtUrDaY', 'saTUrdAy', 'Sat', 'SAT', 'sat', 'SaT', 'SAt', 'saT', 'sAt']
|
||
];
|
||
// Add expected Data after Autofill
|
||
let expectedDataCapitalized = [['Tuesday'], ['Sunday'], ['Friday']];
|
||
let expectedDataShortCapitalized = [['Tue'], ['Sun'], ['Fri']];
|
||
let expectedDataUpper = updateDataToUpCase(expectedDataCapitalized);
|
||
let expectedDataLower = updateDataToLowCase(expectedDataCapitalized);
|
||
let expectedDataShortUpper = updateDataToUpCase(expectedDataShortCapitalized);
|
||
let expectedDataShortLower = updateDataToLowCase(expectedDataShortCapitalized);
|
||
|
||
let range = ws.getRange4(3,0);
|
||
range.fillData(testData);
|
||
//nFillHandleArea: 1 - Reverse, 3 - asc sequence, 2 - Reverse 1 elem.
|
||
getVerticalAutofillCases(3, 4, 4, 0, assert, [expectedDataCapitalized,
|
||
expectedDataUpper, expectedDataLower, expectedDataShortCapitalized, expectedDataShortUpper, expectedDataShortLower], 1);
|
||
|
||
clearData(0, 0, 13, 4);
|
||
});
|
||
QUnit.test('Autofill - Horizontal sequence. Range 9 cells : Days of the weeks', function (assert) {
|
||
let testData = [
|
||
['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday', 'Monday'],
|
||
['SUNDAY', 'MONDAY', 'TUESDAY', 'WEDNESDAY', 'THURSDAY', 'FRIDAY', 'SATURDAY', 'SUNDAY', 'MONDAY'],
|
||
['sunday', 'monday', 'tuesday', 'wednesday', 'thursday', 'friday', 'saturday', 'sunday', 'monday'],
|
||
['SuNdaY', 'MoNdaY', 'TuEsdaY', 'WeDnEsDaY', 'ThUrSdAy', 'FrIdAy', 'SaTuRdAy', 'SuNdaY', 'MoNdaY'],
|
||
['SUnDAy', 'MOnDAy', 'TUEsDAy', 'WEDnEsDAy', 'THUrsDAy', 'FRIday', 'SATurday', 'SUnDAy', 'MOnDAy'],
|
||
['sUnDaY', 'mOnDaY', 'tUeSdAy', 'wEdNeSdAy', 'tHuRsDaY', 'fRiDaY', 'sAtUrDaY', 'sUnDaY', 'mOnDaY'],
|
||
['suNDay', 'moNDay', 'tuESday', 'weDNesday', 'thURsday', 'frIDay', 'saTUrday', 'suNDay', 'moNDay'],
|
||
['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun', 'Mon'],
|
||
['SUN', 'MON', 'TUE', 'WED', 'THU', 'FRI', 'SAT', 'SUN', 'MON'],
|
||
['sun', 'mon', 'tue', 'wed', 'thu', 'fri', 'sat', 'sun', 'mon'],
|
||
['SuN', 'MoN', 'TuE', 'WeD', 'ThU', 'FrI', 'SaT', 'SuN', 'MoN'],
|
||
['SUn', 'MOn', 'TUe', 'WEd', 'THu', 'FRi', 'SAt', 'SUn', 'MOn'],
|
||
['sUn', 'mOn', 'tUe', 'wEd', 'tHu', 'fRi', 'sAt', 'sUn', 'mOn'],
|
||
['suN', 'moN', 'tuE', 'weD', 'thU', 'frI', 'saT', 'suN', 'moN']
|
||
];
|
||
|
||
//Asc sequence case
|
||
// Add expected Data after Autofill
|
||
let expectedDataCapitalized = ['Tuesday', 'Wednesday', 'Thursday'];
|
||
let expectedDataUpper = updateDataToUpCase(expectedDataCapitalized);
|
||
let expectedDataLower = updateDataToLowCase(expectedDataCapitalized);
|
||
let expectedDataShortCapitalized = ['Tue', 'Wed', 'Thu'];
|
||
let expectedDataShortUpper = updateDataToUpCase(expectedDataShortCapitalized);
|
||
let expectedDataShortLower = updateDataToLowCase(expectedDataShortCapitalized);
|
||
|
||
let range = ws.getRange4(0,0);
|
||
range.fillData(testData);
|
||
// nFillHandleArea: 1 - Reverse, 3 - asc sequence, 2 - Reverse 1 elem.
|
||
getHorizontalAutofillCases(0, 8, 8, 11, assert, [expectedDataCapitalized, expectedDataUpper,
|
||
expectedDataLower, expectedDataShortCapitalized, expectedDataShortUpper, expectedDataShortLower], 3);
|
||
|
||
clearData(0, 0, 11, 13);
|
||
|
||
// Reverse case
|
||
expectedDataCapitalized = ['Saturday', 'Friday', 'Thursday'];
|
||
expectedDataUpper = updateDataToUpCase(expectedDataCapitalized);
|
||
expectedDataLower = updateDataToLowCase(expectedDataCapitalized);
|
||
expectedDataShortCapitalized = ['Sat', 'Fri', 'Thu'];
|
||
expectedDataShortUpper = updateDataToUpCase(expectedDataShortCapitalized);
|
||
expectedDataShortLower = updateDataToLowCase(expectedDataShortCapitalized);
|
||
|
||
range = ws.getRange4(0,3);
|
||
range.fillData(testData);
|
||
// nFillHandleArea: 1 - Reverse, 3 - asc sequence, 2 - Reverse 1 elem.
|
||
getHorizontalAutofillCases(3, 11, 11, 0, assert, [expectedDataCapitalized, expectedDataUpper,
|
||
expectedDataLower, expectedDataShortCapitalized, expectedDataShortUpper, expectedDataShortLower], 1);
|
||
|
||
clearData(0, 0, 11, 13);
|
||
});
|
||
QUnit.test('Autofill - Horizontal Even sequence. Range 9 cells : Days of the weeks', function (assert) {
|
||
let testData = [
|
||
['Sunday', 'Tuesday', 'Thursday', 'Saturday', 'Monday', 'Wednesday', 'Friday', 'Sunday', 'Tuesday'],
|
||
['SUNDAY', 'TUESDAY', 'THURSDAY', 'SATURDAY', 'MONDAY', 'WEDNESDAY', 'FRIDAY', 'SUNDAY', 'TUESDAY'],
|
||
['sunday', 'tuesday', 'thursday', 'saturday', 'monday', 'wednesday', 'friday', 'sunday', 'tuesday'],
|
||
['SuNdaY', 'TuEsdaY', 'ThUrSdAy', 'SaTuRdAy', 'MoNdaY', 'WeDnEsDaY', 'FrIdAy', 'SuNdaY', 'TuEsdaY'],
|
||
['SUnDAy', 'TUEsDAy', 'THUrsDAy', 'SATurday', 'MOnDAy', 'WEDnEsDAy', 'FRiDAy', 'SUnDAy', 'TUEsDAy'],
|
||
['sUnDaY', 'tUeSdAy', 'tHuRsDaY', 'sAtUrDaY', 'mOnDaY', 'wEdnEsDaY', 'fRiDaY', 'sUnDaY', 'tUeSdAy'],
|
||
['suNDay', 'tuESday', 'thURsday', 'saTUrday', 'moNDay', 'weDNesday', 'frIDay', 'suNDay', 'tuESday'],
|
||
['Sun', 'Tue', 'Thu', 'Sat', 'Mon', 'Wed', 'Fri', 'Sun', 'Tue'],
|
||
['SUN', 'TUE', 'THU', 'SAT', 'MON', 'WED', 'FRI', 'SUN', 'TUE'],
|
||
['sun', 'tue', 'thu', 'sat', 'mon', 'wed', 'fri', 'sun', 'tue'],
|
||
['SuN', 'TuE', 'ThU', 'SaT', 'MoN', 'WeD', 'FrI', 'SuN', 'TuE'],
|
||
['SUn', 'TUe', 'THu', 'SAt', 'MOn', 'WEd', 'FRi', 'SUn', 'TUe'],
|
||
['sUn', 'tUe', 'tHu', 'sAt', 'mOn', 'wEd', 'fRi', 'sUn', 'tUe'],
|
||
['suN', 'tuE', 'thU', 'saT', 'moN', 'weD', 'frI', 'suN', 'tuE']
|
||
];
|
||
|
||
//Asc sequence case
|
||
// Add expected Data after Autofill
|
||
let expectedDataCapitalized = ['Thursday', 'Saturday', 'Monday'];
|
||
let expectedDataUpper = updateDataToUpCase(expectedDataCapitalized);
|
||
let expectedDataLower = updateDataToLowCase(expectedDataCapitalized);
|
||
let expectedDataShortCapitalized = ['Thu', 'Sat', 'Mon'];
|
||
let expectedDataShortUpper = updateDataToUpCase(expectedDataShortCapitalized);
|
||
let expectedDataShortLower = updateDataToLowCase(expectedDataShortCapitalized);
|
||
|
||
let range = ws.getRange4(0,0);
|
||
range.fillData(testData);
|
||
// nFillHandleArea: 1 - Reverse, 3 - asc sequence, 2 - Reverse 1 elem.
|
||
getHorizontalAutofillCases(0, 8, 0, 11, assert, [expectedDataCapitalized, expectedDataUpper,
|
||
expectedDataLower, expectedDataShortCapitalized, expectedDataShortUpper, expectedDataShortLower], 3);
|
||
|
||
clearData(0, 0, 11, 13);
|
||
|
||
// Reverse case
|
||
expectedDataCapitalized = ['Friday', 'Wednesday', 'Monday'];
|
||
expectedDataUpper = updateDataToUpCase(expectedDataCapitalized);
|
||
expectedDataLower = updateDataToLowCase(expectedDataCapitalized);
|
||
expectedDataShortCapitalized = ['Fri', 'Wed', 'Mon'];
|
||
expectedDataShortUpper = updateDataToUpCase(expectedDataShortCapitalized);
|
||
expectedDataShortLower = updateDataToLowCase(expectedDataShortCapitalized);
|
||
|
||
range = ws.getRange4(0,3);
|
||
range.fillData(testData);
|
||
// nFillHandleArea: 1 - Reverse, 3 - asc sequence, 2 - Reverse 1 elem.
|
||
getHorizontalAutofillCases(3, 11, 11, 0, assert, [expectedDataCapitalized, expectedDataUpper,
|
||
expectedDataLower, expectedDataShortCapitalized, expectedDataShortUpper, expectedDataShortLower], 1);
|
||
|
||
clearData(0, 0, 11, 13);
|
||
});
|
||
QUnit.test('Autofill - Horizontal Odd sequence. Range 9 cells : Days of the weeks', function (assert) {
|
||
let testData = [
|
||
['Monday', 'Wednesday', 'Friday', 'Sunday', 'Tuesday', 'Thursday', 'Saturday', 'Monday', 'Wednesday'],
|
||
['MONDAY', 'WEDNESDAY', 'FRIDAY', 'SUNDAY', 'TUESDAY', 'THURSDAY', 'SATURDAY', 'MONDAY', 'WEDNESDAY'],
|
||
['monday', 'wednesday', 'friday', 'sunday', 'tuesday', 'thursday', 'saturday', 'monday', 'wednesday'],
|
||
['MoNdAy', 'WeDnEsDaY', 'FrIdAy', 'SuNdAy', 'TuEsDaY', 'ThUrSdAy', 'SaTuRdAy', 'MoNdAy', 'WeDnEsDaY'],
|
||
['MOnDAy', 'WEDnEsDAy', 'FRIday', 'SUnDAy', 'TUEsDAy', 'THUrsDAy', 'SATurday', 'MOnDAy', 'WEDnEsDAy'],
|
||
['mOnDaY', 'wEdNeSdAy', 'fRiDaY', 'sUnDaY', 'tUeSdAy', 'tHuRsDaY', 'sAtUrDaY', 'mOnDaY', 'wEdNeSdAy'],
|
||
['moNDay', 'weDNesday', 'frIDay', 'suNDay', 'tuESday','thURsday','saTUrday','moNDay','weDNesday'],
|
||
['Mon', 'Wed', 'Fri', 'Sun', 'Tue', 'Thu', 'Sat', 'Mon', 'Wed'],
|
||
['MON', 'WED', 'FRI', 'SUN', 'TUE', 'THU', 'SAT', 'MON', 'WED'],
|
||
['mon', 'wed', 'fri', 'sun', 'tue', 'thu', 'sat', 'mon', 'wed'],
|
||
['MoN', 'WeD', 'FrI', 'SuN', 'TuE', 'ThU', 'SaT', 'MoN', 'WeD'],
|
||
['MOn', 'WEd','FRi','SUn','TUe','THu','SAt','MOn','WEd'],
|
||
['mOn','wEd','fRi','sUn','tUe','tHu','sAt','mOn','wEd'],
|
||
['moN','weD','frI','suN','tuE','thU','saT','moN','weD']
|
||
];
|
||
|
||
//Asc sequence case
|
||
// Add expected Data after Autofill
|
||
let expectedDataCapitalized = ['Friday', 'Sunday', 'Tuesday'];
|
||
let expectedDataUpper = updateDataToUpCase(expectedDataCapitalized);
|
||
let expectedDataLower = updateDataToLowCase(expectedDataCapitalized);
|
||
let expectedDataShortCapitalized = ['Fri', 'Sun', 'Tue'];
|
||
let expectedDataShortUpper = updateDataToUpCase(expectedDataShortCapitalized);
|
||
let expectedDataShortLower = updateDataToLowCase(expectedDataShortCapitalized);
|
||
|
||
let range = ws.getRange4(0,0);
|
||
range.fillData(testData);
|
||
// nFillHandleArea: 1 - Reverse, 3 - asc sequence, 2 - Reverse 1 elem.
|
||
getHorizontalAutofillCases(0, 8, 0, 11, assert, [expectedDataCapitalized, expectedDataUpper,
|
||
expectedDataLower, expectedDataShortCapitalized, expectedDataShortUpper, expectedDataShortLower], 3);
|
||
|
||
|
||
clearData(0, 0, 11, 13);
|
||
|
||
// Reverse case
|
||
expectedDataCapitalized = ['Saturday', 'Thursday', 'Tuesday'];
|
||
expectedDataUpper = updateDataToUpCase(expectedDataCapitalized);
|
||
expectedDataLower = updateDataToLowCase(expectedDataCapitalized);
|
||
expectedDataShortCapitalized = ['Sat', 'Thu', 'Tue'];
|
||
expectedDataShortUpper = updateDataToUpCase(expectedDataShortCapitalized);
|
||
expectedDataShortLower = updateDataToLowCase(expectedDataShortCapitalized);
|
||
|
||
range = ws.getRange4(0,3);
|
||
range.fillData(testData);
|
||
// nFillHandleArea: 1 - Reverse, 3 - asc sequence, 2 - Reverse 1 elem.
|
||
getHorizontalAutofillCases(3, 11, 11, 0, assert, [expectedDataCapitalized, expectedDataUpper,
|
||
expectedDataLower, expectedDataShortCapitalized, expectedDataShortUpper, expectedDataShortLower], 1);
|
||
|
||
clearData(0, 0, 11, 13);
|
||
});
|
||
QUnit.test('Autofill - Vertical sequence. Range 9 cells: Days of the weeks', function (assert) {
|
||
let testData = [
|
||
['Sunday', 'SUNDAY', 'sunday', 'SuNdAy', 'SUnDaY','sUnDaY', 'suNDay', 'Sun', 'SUN', 'sun', 'SuN', 'SUn', 'suN', 'sUn'],
|
||
['Monday', 'MONDAY', 'monday', 'MoNdAy', 'MOnDaY','mOnDaY', 'moNDay', 'Mon', 'MON', 'mon', 'MoN', 'MOn', 'moN', 'mOn'],
|
||
['Tuesday', 'TUESDAY', 'tuesday', 'TuEsDaY', 'TUesDAy','tUeSdAy', 'tuESdaY', 'Tue', 'TUE', 'tue', 'TuE', 'TUe', 'tuE', 'tUe'],
|
||
['Wednesday', 'WEDNESDAY', 'wednesday', 'WeDnesdAy', 'WEdnesDaY','wEdnesDaY', 'weDneSdAy', 'Wed', 'WED', 'wed', 'WeD', 'WEd', 'weD', 'wEd'],
|
||
['Thursday', 'THURSDAY', 'thursday', 'ThUrsDaY', 'THursDaY','tHuRsDaY', 'thUrsDaY', 'Thu', 'THU', 'thu', 'ThU', 'THu', 'thU', 'tHu'],
|
||
['Friday', 'FRIDAY', 'friday', 'FrIdAy', 'FRidAy','fRIdAy', 'frIdAy', 'Fri', 'FRI', 'fri', 'FrI', 'FRi', 'frI', 'fRI'],
|
||
['Saturday', 'SATURDAY', 'saturday', 'SaTurDaY', 'SAturDaY','sAturDaY', 'saTurDaY', 'Sat', 'SAT', 'sat', 'SaT', 'SAt', 'saT', 'sAt'],
|
||
['Sunday', 'SUNDAY', 'sunday', 'SuNdAy', 'SUnDaY','sUnDaY', 'suNDay', 'Sun', 'SUN', 'sun', 'SuN', 'SUn', 'suN', 'sUn'],
|
||
['Monday', 'MONDAY', 'monday', 'MoNdAy', 'MOnDaY','mOnDaY', 'moNDay', 'Mon', 'MON', 'mon', 'MoN', 'MOn', 'moN', 'mOn']
|
||
];
|
||
|
||
//Asc case
|
||
// Add expected Data after Autofill
|
||
let expectedDataCapitalized = [['Tuesday'], ['Wednesday'], ['Thursday']];
|
||
let expectedDataShortCapitalized = [['Tue'], ['Wed'], ['Thu']];
|
||
let expectedDataUpper = updateDataToUpCase(expectedDataCapitalized);
|
||
let expectedDataLower = updateDataToLowCase(expectedDataCapitalized);
|
||
let expectedDataShortUpper = updateDataToUpCase(expectedDataShortCapitalized);
|
||
let expectedDataShortLower = updateDataToLowCase(expectedDataShortCapitalized);
|
||
|
||
let range = ws.getRange4(0,0);
|
||
range.fillData(testData);
|
||
//nFillHandleArea: 1 - Reverse, 3 - asc sequence, 2 - Reverse 1 elem.
|
||
getVerticalAutofillCases(0, 8, 0, 11, assert, [expectedDataCapitalized,
|
||
expectedDataUpper, expectedDataLower, expectedDataShortCapitalized, expectedDataShortUpper, expectedDataShortLower], 3);
|
||
|
||
clearData(0, 0, 13, 11);
|
||
|
||
//Reverse case
|
||
expectedDataCapitalized = [['Saturday'], ['Friday'], ['Thursday']];
|
||
expectedDataShortCapitalized = [['Sat'], ['Fri'], ['Thu']];
|
||
expectedDataUpper = updateDataToUpCase(expectedDataCapitalized);
|
||
expectedDataLower = updateDataToLowCase(expectedDataCapitalized);
|
||
expectedDataShortUpper = updateDataToUpCase(expectedDataShortCapitalized);
|
||
expectedDataShortLower = updateDataToLowCase(expectedDataShortCapitalized);
|
||
|
||
range = ws.getRange4(3,0);
|
||
range.fillData(testData);
|
||
//nFillHandleArea: 1 - Reverse, 3 - asc sequence, 2 - Reverse 1 elem.
|
||
getVerticalAutofillCases(3, 11, 11, 0, assert, [expectedDataCapitalized,
|
||
expectedDataUpper, expectedDataLower, expectedDataShortCapitalized, expectedDataShortUpper, expectedDataShortLower], 1);
|
||
|
||
clearData(0, 0, 13, 11);
|
||
});
|
||
QUnit.test('Autofill - Vertical even sequence. Range 9 cell: Days of the weeks', function (assert) {
|
||
let testData = [
|
||
['Sunday', 'SUNDAY', 'sunday', 'SuNdAy', 'SUnDaY','sUnDaY', 'suNDay', 'Sun', 'SUN', 'sun', 'SuN', 'SUn', 'suN', 'sUn'],
|
||
['Tuesday', 'TUESDAY', 'tuesday', 'TuEsDaY', 'TUesDAy','tUeSdAy', 'tuESdaY', 'Tue', 'TUE', 'tue', 'TuE', 'TUe', 'tuE', 'tUe'],
|
||
['Thursday', 'THURSDAY', 'thursday', 'ThUrSdAy', 'THuRsDaY','tHuRsDaY','thURsday','Thu','THU','thu','ThU','THu','thU','tHu',],
|
||
['Saturday','SATURDAY','saturday','SaTuRdAy','SAtUrDaY','sAtUrDaY','saTUrday','Sat','SAT','sat','SaT','SAt','saT','sAt'],
|
||
['Monday', 'MONDAY', 'monday', 'MoNdAy', 'MOnDaY', 'mOnDaY', 'moNDay', 'Mon', 'MON', 'mon', 'MoN', 'MOn', 'moN', 'mOn'],
|
||
['Wednesday', 'WEDNESDAY', 'wednesday', 'WeDnEsDaY', 'WEdNeSDaY','wEdNeSdAy', 'weDNesday', 'Wed', 'WED', 'wed', 'WeD', 'WEd', 'weD', 'wEd'],
|
||
['Friday', 'FRIDAY', 'friday', 'FrIdAy', 'FRiDaY', 'fRIdaY', 'frIdAY', 'Fri', 'FRI', 'fri', 'FrI', 'FRi', 'fRI', 'frI'],
|
||
['Sunday','SUNDAY','sunday','SuNdAy','SUnDaY','sUnDaY','suNDay','Sun','SUN','sun','SuN','SUn','suN','sUn'],
|
||
['Tuesday', 'TUESDAY', 'tuesday', 'TuEsDaY', 'TUesDAy','tUeSdAy', 'tuESdaY', 'Tue', 'TUE', 'tue', 'TuE', 'TUe', 'tuE', 'tUe']
|
||
];
|
||
|
||
// Asc case
|
||
// Add expected Data after Autofill
|
||
let expectedDataCapitalized = [['Thursday'], ['Saturday'], ['Monday']];
|
||
let expectedDataShortCapitalized = [['Thu'], ['Sat'], ['Mon']];
|
||
let expectedDataUpper = updateDataToUpCase(expectedDataCapitalized);
|
||
let expectedDataLower = updateDataToLowCase(expectedDataCapitalized);
|
||
let expectedDataShortUpper = updateDataToUpCase(expectedDataShortCapitalized);
|
||
let expectedDataShortLower = updateDataToLowCase(expectedDataShortCapitalized);
|
||
|
||
let range = ws.getRange4(0,0);
|
||
range.fillData(testData);
|
||
//nFillHandleArea: 1 - Reverse, 3 - asc sequence, 2 - Reverse 1 elem.
|
||
getVerticalAutofillCases(0, 8, 0, 11, assert, [expectedDataCapitalized,
|
||
expectedDataUpper, expectedDataLower, expectedDataShortCapitalized, expectedDataShortUpper, expectedDataShortLower], 3);
|
||
|
||
clearData(0, 0, 13, 11);
|
||
|
||
//Reverse case
|
||
expectedDataCapitalized = [['Friday'], ['Wednesday'], ['Monday']];
|
||
expectedDataShortCapitalized = [['Fri'], ['Wed'], ['Mon']];
|
||
expectedDataUpper = updateDataToUpCase(expectedDataCapitalized);
|
||
expectedDataLower = updateDataToLowCase(expectedDataCapitalized);
|
||
expectedDataShortUpper = updateDataToUpCase(expectedDataShortCapitalized);
|
||
expectedDataShortLower = updateDataToLowCase(expectedDataShortCapitalized);
|
||
|
||
range = ws.getRange4(3,0);
|
||
range.fillData(testData);
|
||
//nFillHandleArea: 1 - Reverse, 3 - asc sequence, 2 - Reverse 1 elem.
|
||
getVerticalAutofillCases(3, 11, 11, 0, assert, [expectedDataCapitalized,
|
||
expectedDataUpper, expectedDataLower, expectedDataShortCapitalized, expectedDataShortUpper, expectedDataShortLower], 1);
|
||
|
||
clearData(0, 0, 13, 11);
|
||
});
|
||
QUnit.test('Autofill - Vertical odd sequence. Range 9 cells: Days of the weeks', function (assert) {
|
||
let testData = [
|
||
['Monday', 'MONDAY', 'monday', 'MoNdaY', 'MOnDaY','mOnDaY', 'moNDay', 'Mon', 'MON', 'mon', 'MoN', 'MOn', 'moN', 'mOn'],
|
||
['Wednesday', 'WEDNESDAY', 'wednesday', 'WeDnEsDaY', 'WEdNEsDAy','wEdNeSdAy', 'weDNesDAy', 'Wed', 'WED', 'wed', 'WeD', 'WEd', 'weD', 'wEd'],
|
||
['Friday','FRIDAY','friday','FrIdAy','FRiDaY','fRiDaY','frIDay','Fri','FRI','fri','FrI','FRi','frI','fRi'],
|
||
['Sunday','SUNDAY','sunday','SuNdAy','SUnDaY','sUnDaY','suNDay','Sun','SUN','sun','SuN','SUn','suN','sUn'],
|
||
['Tuesday', 'TUESDAY', 'tuesday', 'TuEsDaY', 'TUesDAy','tUeSdAy', 'tuESdaY', 'Tue', 'TUE', 'tue', 'TuE', 'TUe', 'tuE', 'tUe'],
|
||
['Thursday', 'THURSDAY', 'thursday', 'ThUrSdAy', 'THuRsDaY','tHuRsDaY','thURsday','Thu','THU','thu','ThU','THu','thU','tHu'],
|
||
['Saturday','SATURDAY','saturday','SaTuRdAy','SAtUrDaY','sAtUrDaY','saTUrday','Sat','SAT','sat','SaT','SAt','saT','sAt'],
|
||
['Monday', 'MONDAY', 'monday', 'MoNdaY', 'MOnDaY','mOnDaY', 'moNDay', 'Mon', 'MON', 'mon', 'MoN', 'MOn', 'moN', 'mOn'],
|
||
['Wednesday', 'WEDNESDAY', 'wednesday', 'WeDnEsDaY', 'WEdNEsDAy','wEdNeSdAy', 'weDNesDAy', 'Wed', 'WED', 'wed', 'WeD', 'WEd', 'weD', 'wEd']
|
||
];
|
||
|
||
// Asc case
|
||
// Add expected Data after Autofill
|
||
let expectedDataCapitalized = [['Friday'], ['Sunday'], ['Tuesday']];
|
||
let expectedDataShortCapitalized = [['Fri'], ['Sun'], ['Tue']];
|
||
let expectedDataUpper = updateDataToUpCase(expectedDataCapitalized);
|
||
let expectedDataLower = updateDataToLowCase(expectedDataCapitalized);
|
||
let expectedDataShortUpper = updateDataToUpCase(expectedDataShortCapitalized);
|
||
let expectedDataShortLower = updateDataToLowCase(expectedDataShortCapitalized);
|
||
|
||
let range = ws.getRange4(0,0);
|
||
range.fillData(testData);
|
||
//nFillHandleArea: 1 - Reverse, 3 - asc sequence, 2 - Reverse 1 elem.
|
||
getVerticalAutofillCases(0, 8, 0, 11, assert, [expectedDataCapitalized,
|
||
expectedDataUpper, expectedDataLower, expectedDataShortCapitalized, expectedDataShortUpper, expectedDataShortLower], 3);
|
||
|
||
clearData(0, 0, 13, 11);
|
||
|
||
//Reverse case
|
||
expectedDataCapitalized = [['Saturday'], ['Thursday'], ['Tuesday']];
|
||
expectedDataShortCapitalized = [['Sat'], ['Thu'], ['Tue']];
|
||
expectedDataUpper = updateDataToUpCase(expectedDataCapitalized);
|
||
expectedDataLower = updateDataToLowCase(expectedDataCapitalized);
|
||
expectedDataShortUpper = updateDataToUpCase(expectedDataShortCapitalized);
|
||
expectedDataShortLower = updateDataToLowCase(expectedDataShortCapitalized);
|
||
|
||
range = ws.getRange4(3,0);
|
||
range.fillData(testData);
|
||
getVerticalAutofillCases(3, 11, 11, 0, assert, [expectedDataCapitalized,
|
||
expectedDataUpper, expectedDataLower, expectedDataShortCapitalized, expectedDataShortUpper, expectedDataShortLower], 1);
|
||
|
||
clearData(0, 0, 13, 11);
|
||
});
|
||
QUnit.test('Autofill - Horizontal sequence. Months', function (assert) {
|
||
let testData = [
|
||
['January'],
|
||
['JANUARY'],
|
||
['january'],
|
||
['JaNuArY'],
|
||
['JAnuARy'],
|
||
['jAnUaRy'],
|
||
['jaNUarY'],
|
||
['Jan'],
|
||
['JAN'],
|
||
['jan'],
|
||
['JaN'],
|
||
['JAn'],
|
||
['jaN'],
|
||
['jAn']
|
||
];
|
||
|
||
// Asc case
|
||
// Add expected Data after Autofill
|
||
let expectedDataCapitalized = ['February', 'March', 'April'];
|
||
let expectedDataUpper = updateDataToUpCase(expectedDataCapitalized);
|
||
let expectedDataLower = updateDataToLowCase(expectedDataCapitalized);
|
||
let expectedDataShortCapitalized = ['Feb', 'Mar', 'Apr'];
|
||
let expectedDataShortUpper = updateDataToUpCase(expectedDataShortCapitalized);
|
||
let expectedDataShortLower = updateDataToLowCase(expectedDataShortCapitalized);
|
||
|
||
let range = ws.getRange4(0, 0);
|
||
range.fillData(testData);
|
||
//nFillHandleArea: 1 - Reverse, 3 - asc sequence, 2 - Reverse 1 elem.
|
||
getHorizontalAutofillCases(0, 0, 0, 3,assert, [expectedDataCapitalized,
|
||
expectedDataUpper, expectedDataLower, expectedDataShortCapitalized, expectedDataShortUpper, expectedDataShortLower], 3);
|
||
clearData(0, 0, 3, 0);
|
||
|
||
// Reverse case
|
||
expectedDataCapitalized = ['December', 'November', 'October'];
|
||
expectedDataUpper = updateDataToUpCase(expectedDataCapitalized);
|
||
expectedDataLower = updateDataToLowCase(expectedDataCapitalized);
|
||
expectedDataShortCapitalized = ['Dec', 'Nov', 'Oct'];
|
||
expectedDataShortUpper = updateDataToUpCase(expectedDataShortCapitalized);
|
||
expectedDataShortLower = updateDataToLowCase(expectedDataShortCapitalized);
|
||
|
||
range = ws.getRange4(0, 3);
|
||
range.fillData(testData);
|
||
getHorizontalAutofillCases(3, 3, 3, 0, assert, [expectedDataCapitalized, expectedDataUpper,
|
||
expectedDataLower, expectedDataShortCapitalized, expectedDataShortUpper, expectedDataShortLower], 1);
|
||
clearData(0, 0, 3, 0);
|
||
});
|
||
QUnit.test('Autofill - Vertical sequence. Months', function (assert) {
|
||
let testData = [
|
||
['January', 'JANUARY', 'january', 'JaNuArY', 'JAnuARy', 'jAnUaRy', 'jaNUarY', 'Jan', 'JAN', 'jan', 'JaN', 'JAn', 'jaN', 'jAn'],
|
||
];
|
||
|
||
// Asc case
|
||
// Add expected Data after Autofill
|
||
let expectedDataCapitalized = [['February'], ['March'], ['April']];
|
||
let expectedDataUpper = updateDataToUpCase(expectedDataCapitalized);
|
||
let expectedDataLower = updateDataToLowCase(expectedDataCapitalized);
|
||
let expectedDataShortCapitalized = [['Feb'], ['Mar'], ['Apr']];
|
||
let expectedDataShortUpper = updateDataToUpCase(expectedDataShortCapitalized);
|
||
let expectedDataShortLower = updateDataToLowCase(expectedDataShortCapitalized);
|
||
|
||
let range = ws.getRange4(0, 0);
|
||
range.fillData(testData);
|
||
//nFillHandleArea: 1 - Reverse, 3 - asc sequence, 2 - Reverse 1 elem.
|
||
getVerticalAutofillCases(0, 0, 0, 3,assert, [expectedDataCapitalized,
|
||
expectedDataUpper, expectedDataLower, expectedDataShortCapitalized, expectedDataShortUpper, expectedDataShortLower], 3);
|
||
clearData(0, 0, 0, 3);
|
||
|
||
// Reverse case
|
||
expectedDataCapitalized = [['December'], ['November'], ['October']];
|
||
expectedDataUpper = updateDataToUpCase(expectedDataCapitalized);
|
||
expectedDataLower = updateDataToLowCase(expectedDataCapitalized);
|
||
expectedDataShortCapitalized = [['Dec'], ['Nov'], ['Oct']];
|
||
expectedDataShortUpper = updateDataToUpCase(expectedDataShortCapitalized);
|
||
expectedDataShortLower = updateDataToLowCase(expectedDataShortCapitalized);
|
||
|
||
range = ws.getRange4(3, 0);
|
||
range.fillData(testData);
|
||
getVerticalAutofillCases(3, 3, 3, 0, assert, [expectedDataCapitalized, expectedDataUpper,
|
||
expectedDataLower, expectedDataShortCapitalized, expectedDataShortUpper, expectedDataShortLower], 1);
|
||
clearData(0, 0, 0, 3);
|
||
});
|
||
QUnit.test('Autofill - Horizontal even sequence. Months', function (assert) {
|
||
let testData = [
|
||
['December', 'February'],
|
||
['DECEMBER', 'FEBRUARY'],
|
||
['december', 'february'],
|
||
['DeCeMbEr', 'FeBrUaRy'],
|
||
['DEcEMBeR', 'FEbRUaRY'],
|
||
['dEcEMbEr', 'fEbRuArY'],
|
||
['deCEmbER', 'feBRuaRY'],
|
||
['Dec', 'Feb'],
|
||
['DEC', 'FEB'],
|
||
['dec', 'feb'],
|
||
['DeC', 'FeB'],
|
||
['DEc', 'FEb'],
|
||
['deC', 'feB'],
|
||
['dEc', 'fEb']
|
||
];
|
||
|
||
// Asc case
|
||
// Add expected Data after Autofill
|
||
let expectedDataCapitalized = ['April', 'June', 'August'];
|
||
let expectedDataUpper = updateDataToUpCase(expectedDataCapitalized);
|
||
let expectedDataLower = updateDataToLowCase(expectedDataCapitalized);
|
||
let expectedDataShortCapitalized = ['Apr', 'Jun', 'Aug'];
|
||
let expectedDataShortUpper = updateDataToUpCase(expectedDataShortCapitalized);
|
||
let expectedDataShortLower = updateDataToLowCase(expectedDataShortCapitalized);
|
||
|
||
let range = ws.getRange4(0, 0);
|
||
range.fillData(testData);
|
||
//nFillHandleArea: 1 - Reverse, 3 - asc sequence, 2 - Reverse 1 elem.
|
||
getHorizontalAutofillCases(0, 1, 0, 4,assert, [expectedDataCapitalized,
|
||
expectedDataUpper, expectedDataLower, expectedDataShortCapitalized, expectedDataShortUpper, expectedDataShortLower], 3);
|
||
clearData(0, 0, 4, 0);
|
||
|
||
// Reverse case
|
||
expectedDataCapitalized = ['October', 'August', 'June'];
|
||
expectedDataUpper = updateDataToUpCase(expectedDataCapitalized);
|
||
expectedDataLower = updateDataToLowCase(expectedDataCapitalized);
|
||
expectedDataShortCapitalized = ['Oct', 'Aug', 'Jun'];
|
||
expectedDataShortUpper = updateDataToUpCase(expectedDataShortCapitalized);
|
||
expectedDataShortLower = updateDataToLowCase(expectedDataShortCapitalized);
|
||
|
||
range = ws.getRange4(0, 3);
|
||
range.fillData(testData);
|
||
getHorizontalAutofillCases(3, 4, 4, 0, assert, [expectedDataCapitalized, expectedDataUpper,
|
||
expectedDataLower, expectedDataShortCapitalized, expectedDataShortUpper, expectedDataShortLower], 1);
|
||
clearData(0, 0, 4, 0);
|
||
});
|
||
QUnit.test('Autofill - Vertical even sequence. Months', function (assert) {
|
||
let testData = [
|
||
['December', 'DECEMBER', 'december', 'DeCeMbEr', 'DEcEMBeR', 'dEcEMbEr', 'deCEmbER', 'Dec', 'DEC', 'dec', 'DeC', 'DEc', 'deC', 'dEc'],
|
||
['February', 'FEBRUARY', 'february', 'FeBrUaRy', 'FEbRUARy', 'fEbRUaRy', 'feBRuaRY', 'Feb', 'FEB', 'feb', 'FeB', 'FEb', 'feB', 'fEb']
|
||
];
|
||
|
||
// Asc case
|
||
// Add expected Data after Autofill
|
||
let expectedDataCapitalized = [['April'], ['June'], ['August']];
|
||
let expectedDataUpper = updateDataToUpCase(expectedDataCapitalized);
|
||
let expectedDataLower = updateDataToLowCase(expectedDataCapitalized);
|
||
let expectedDataShortCapitalized = [['Apr'], ['Jun'], ['Aug']];
|
||
let expectedDataShortUpper = updateDataToUpCase(expectedDataShortCapitalized);
|
||
let expectedDataShortLower = updateDataToLowCase(expectedDataShortCapitalized);
|
||
|
||
let range = ws.getRange4(0, 0);
|
||
range.fillData(testData);
|
||
//nFillHandleArea: 1 - Reverse, 3 - asc sequence, 2 - Reverse 1 elem.
|
||
getVerticalAutofillCases(0, 1, 0, 4,assert, [expectedDataCapitalized,
|
||
expectedDataUpper, expectedDataLower, expectedDataShortCapitalized, expectedDataShortUpper, expectedDataShortLower], 3);
|
||
clearData(0, 0, 0, 4);
|
||
|
||
// Reverse case
|
||
expectedDataCapitalized = [['October'], ['August'], ['June']];
|
||
expectedDataUpper = updateDataToUpCase(expectedDataCapitalized);
|
||
expectedDataLower = updateDataToLowCase(expectedDataCapitalized);
|
||
expectedDataShortCapitalized = [['Oct'], ['Aug'], ['Jun']];
|
||
expectedDataShortUpper = updateDataToUpCase(expectedDataShortCapitalized);
|
||
expectedDataShortLower = updateDataToLowCase(expectedDataShortCapitalized);
|
||
|
||
range = ws.getRange4(3, 0);
|
||
range.fillData(testData);
|
||
getVerticalAutofillCases(3, 4, 4, 0, assert, [expectedDataCapitalized, expectedDataUpper,
|
||
expectedDataLower, expectedDataShortCapitalized, expectedDataShortUpper, expectedDataShortLower], 1);
|
||
clearData(0, 0, 0, 4);
|
||
});
|
||
QUnit.test('Autofill - Horizontal odd sequence. Months', function (assert) {
|
||
let testData = [
|
||
['January', 'March'],
|
||
['JANUARY', 'MARCH'],
|
||
['january', 'march'],
|
||
['JaNuArY', 'MaRCH'],
|
||
['JAnuARy', 'MArCH'],
|
||
['jAnUaRy', 'mArcH'],
|
||
['jaNUarY', 'maRCh'],
|
||
['Jan', 'Mar'],
|
||
['JAN', 'MAR'],
|
||
['jan', 'mar'],
|
||
['JaN', 'MaR'],
|
||
['JAn', 'MAr'],
|
||
['jaN', 'maR'],
|
||
['jAn', 'mAr']
|
||
];
|
||
|
||
// Asc case
|
||
// Add expected Data after Autofill
|
||
let expectedDataCapitalized = ['May', 'July', 'September'];
|
||
let expectedDataUpper = updateDataToUpCase(expectedDataCapitalized);
|
||
let expectedDataLower = updateDataToLowCase(expectedDataCapitalized);
|
||
let expectedDataShortCapitalized = ['May', 'Jul', 'Sep'];
|
||
let expectedDataShortUpper = updateDataToUpCase(expectedDataShortCapitalized);
|
||
let expectedDataShortLower = updateDataToLowCase(expectedDataShortCapitalized);
|
||
|
||
let range = ws.getRange4(0, 0);
|
||
range.fillData(testData);
|
||
//nFillHandleArea: 1 - Reverse, 3 - asc sequence, 2 - Reverse 1 elem.
|
||
getHorizontalAutofillCases(0, 1, 0, 4,assert, [expectedDataCapitalized,
|
||
expectedDataUpper, expectedDataLower, expectedDataShortCapitalized, expectedDataShortUpper, expectedDataShortLower], 3);
|
||
clearData(0, 0, 4, 0);
|
||
|
||
// Reverse case
|
||
expectedDataCapitalized = ['November', 'September', 'July'];
|
||
expectedDataUpper = updateDataToUpCase(expectedDataCapitalized);
|
||
expectedDataLower = updateDataToLowCase(expectedDataCapitalized);
|
||
expectedDataShortCapitalized = ['Nov', 'Sep', 'Jul'];
|
||
expectedDataShortUpper = updateDataToUpCase(expectedDataShortCapitalized);
|
||
expectedDataShortLower = updateDataToLowCase(expectedDataShortCapitalized);
|
||
|
||
range = ws.getRange4(0, 3);
|
||
range.fillData(testData);
|
||
getHorizontalAutofillCases(3, 4, 4, 0, assert, [expectedDataCapitalized, expectedDataUpper,
|
||
expectedDataLower, expectedDataShortCapitalized, expectedDataShortUpper, expectedDataShortLower], 1);
|
||
clearData(0, 0, 4, 0);
|
||
});
|
||
QUnit.test('Autofill - Vertical odd sequence. Months', function (assert) {
|
||
let testData = [
|
||
['January', 'JANUARY', 'january', 'JaNuArY', 'JAnuARy', 'jAnUaRy', 'jaNUarY', 'Jan', 'JAN', 'jan', 'JaN', 'JAn', 'jaN', 'jAn'],
|
||
['March', 'MARCH', 'march', 'MaRcH', 'MArCH', 'mArCh', 'maRcH', 'Mar', 'MAR', 'mar', 'MaR', 'MAr', 'maR', 'mAr']
|
||
];
|
||
|
||
// Asc case
|
||
// Add expected Data after Autofill
|
||
let expectedDataCapitalized = [['May'], ['July'], ['September']];
|
||
let expectedDataUpper = updateDataToUpCase(expectedDataCapitalized);
|
||
let expectedDataLower = updateDataToLowCase(expectedDataCapitalized);
|
||
let expectedDataShortCapitalized = [['May'], ['Jul'], ['Sep']];
|
||
let expectedDataShortUpper = updateDataToUpCase(expectedDataShortCapitalized);
|
||
let expectedDataShortLower = updateDataToLowCase(expectedDataShortCapitalized);
|
||
|
||
let range = ws.getRange4(0, 0);
|
||
range.fillData(testData);
|
||
//nFillHandleArea: 1 - Reverse, 3 - asc sequence, 2 - Reverse 1 elem.
|
||
getVerticalAutofillCases(0, 1, 0, 4,assert, [expectedDataCapitalized,
|
||
expectedDataUpper, expectedDataLower, expectedDataShortCapitalized, expectedDataShortUpper, expectedDataShortLower], 3);
|
||
clearData(0, 0, 0, 4);
|
||
|
||
// Reverse case
|
||
expectedDataCapitalized = [['November'], ['September'], ['July']];
|
||
expectedDataUpper = updateDataToUpCase(expectedDataCapitalized);
|
||
expectedDataLower = updateDataToLowCase(expectedDataCapitalized);
|
||
expectedDataShortCapitalized = [['Nov'], ['Sep'], ['Jul']];
|
||
expectedDataShortUpper = updateDataToUpCase(expectedDataShortCapitalized);
|
||
expectedDataShortLower = updateDataToLowCase(expectedDataShortCapitalized);
|
||
|
||
range = ws.getRange4(3, 0);
|
||
range.fillData(testData);
|
||
getVerticalAutofillCases(3, 4, 4, 0, assert, [expectedDataCapitalized, expectedDataUpper,
|
||
expectedDataLower, expectedDataShortCapitalized, expectedDataShortUpper, expectedDataShortLower], 1);
|
||
clearData(0, 0, 0, 4);
|
||
});
|
||
QUnit.test('Autofill - Horizontal sequence of full and short names. Months', function (assert) {
|
||
let testData = [
|
||
['January', 'Jan'],
|
||
['JANUARY', 'JAN'],
|
||
['january', 'jan'],
|
||
['JaNuArY', 'JaN'],
|
||
['JAnuARy', 'JAn'],
|
||
['jAnUaRy', 'jAn'],
|
||
['jaNUarY', 'jaN'],
|
||
['Jan', 'January'],
|
||
['JAN', 'JANUARY'],
|
||
['jan', 'january'],
|
||
['JaN', 'JaNuArY'],
|
||
['JAn', 'JAnUaRy'],
|
||
['jaN', 'jaNUarY'],
|
||
['jAn', 'jAnUaRy']
|
||
];
|
||
|
||
// Asc case
|
||
// Add expected Data after Autofill
|
||
let expectedDataCapitalized = ['February', 'Feb', 'March'];
|
||
let expectedDataUpper = updateDataToUpCase(expectedDataCapitalized);
|
||
let expectedDataLower = updateDataToLowCase(expectedDataCapitalized);
|
||
let expectedDataShortCapitalized = ['Feb', 'February', 'Mar'];
|
||
let expectedDataShortUpper = updateDataToUpCase(expectedDataShortCapitalized);
|
||
let expectedDataShortLower = updateDataToLowCase(expectedDataShortCapitalized);
|
||
|
||
let range = ws.getRange4(0, 0);
|
||
range.fillData(testData);
|
||
//nFillHandleArea: 1 - Reverse, 3 - asc sequence, 2 - Reverse 1 elem.
|
||
getHorizontalAutofillCases(0, 1, 0, 4,assert, [expectedDataCapitalized,
|
||
expectedDataUpper, expectedDataLower, expectedDataShortCapitalized, expectedDataShortUpper, expectedDataShortLower], 3);
|
||
clearData(0, 0, 4, 0);
|
||
|
||
// Reverse case
|
||
expectedDataCapitalized = ['Dec', 'December', 'Nov'];
|
||
expectedDataUpper = updateDataToUpCase(expectedDataCapitalized);
|
||
expectedDataLower = updateDataToLowCase(expectedDataCapitalized);
|
||
expectedDataShortCapitalized = ['December', 'Dec', 'November'];
|
||
expectedDataShortUpper = updateDataToUpCase(expectedDataShortCapitalized);
|
||
expectedDataShortLower = updateDataToLowCase(expectedDataShortCapitalized);
|
||
|
||
range = ws.getRange4(0, 3);
|
||
range.fillData(testData);
|
||
getHorizontalAutofillCases(3, 4, 4, 0, assert, [expectedDataCapitalized, expectedDataUpper,
|
||
expectedDataLower, expectedDataShortCapitalized, expectedDataShortUpper, expectedDataShortLower], 1);
|
||
clearData(0, 0, 4, 0);
|
||
});
|
||
QUnit.test('Autofill - Vertical sequence of full and short names. Months', function (assert) {
|
||
let testData = [
|
||
['January', 'JANUARY', 'january', 'JaNuArY', 'JAnuARy', 'jAnUaRy', 'jaNUarY', 'Jan', 'JAN', 'jan', 'JaN', 'JAn', 'jaN', 'jAn'],
|
||
['Jan', 'JAN', 'jan', 'JaN', 'JAn', 'jAn', 'jaN', 'January', 'JANUARY', 'january', 'JaNuArY', 'JAnuARy', 'jaNUarY', 'jAnUaRy']
|
||
];
|
||
|
||
// Asc case
|
||
// Add expected Data after Autofill
|
||
let expectedDataCapitalized = [['February'], ['Feb'], ['March']];
|
||
let expectedDataUpper = updateDataToUpCase(expectedDataCapitalized);
|
||
let expectedDataLower = updateDataToLowCase(expectedDataCapitalized);
|
||
let expectedDataShortCapitalized = [['Feb'], ['February'], ['Mar']];
|
||
let expectedDataShortUpper = updateDataToUpCase(expectedDataShortCapitalized);
|
||
let expectedDataShortLower = updateDataToLowCase(expectedDataShortCapitalized);
|
||
|
||
let range = ws.getRange4(0, 0);
|
||
range.fillData(testData);
|
||
//nFillHandleArea: 1 - Reverse, 3 - asc sequence, 2 - Reverse 1 elem.
|
||
getVerticalAutofillCases(0, 1, 0, 4,assert, [expectedDataCapitalized,
|
||
expectedDataUpper, expectedDataLower, expectedDataShortCapitalized, expectedDataShortUpper, expectedDataShortLower], 3);
|
||
clearData(0, 0, 0, 4);
|
||
|
||
// Reverse case
|
||
expectedDataCapitalized = [['Dec'], ['December'], ['Nov']];
|
||
expectedDataUpper = updateDataToUpCase(expectedDataCapitalized);
|
||
expectedDataLower = updateDataToLowCase(expectedDataCapitalized);
|
||
expectedDataShortCapitalized = [['December'], ['Dec'], ['November']];
|
||
expectedDataShortUpper = updateDataToUpCase(expectedDataShortCapitalized);
|
||
expectedDataShortLower = updateDataToLowCase(expectedDataShortCapitalized);
|
||
|
||
range = ws.getRange4(3, 0);
|
||
range.fillData(testData);
|
||
getVerticalAutofillCases(3, 4, 4, 0, assert, [expectedDataCapitalized, expectedDataUpper,
|
||
expectedDataLower, expectedDataShortCapitalized, expectedDataShortUpper, expectedDataShortLower], 1);
|
||
clearData(0, 0, 0, 4);
|
||
});
|
||
|
||
QUnit.test('Autofill - Horizontal sequence: Range 14 cells. Months', function (assert) {
|
||
let testData = [
|
||
['December', 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December', 'January'],
|
||
['DECEMBER', 'JANUARY', 'FEBRUARY', 'MARCH', 'APRIL', 'MAY', 'JUNE', 'JULY', 'AUGUST', 'SEPTEMBER', 'OCTOBER', 'NOVEMBER', 'DECEMBER', 'JANUARY'],
|
||
['december', 'january', 'february', 'march', 'april', 'may', 'june', 'july', 'august', 'september', 'october', 'november', 'december', 'january'],
|
||
['DeCeMbEr', 'JaNuArY', 'FeBrUaRy', 'MaRcH', 'ApRiL', 'MaY', 'JuNe', 'JuLy', 'AuGuSt', 'SePtEmBeR', 'OcToBeR', 'NoVemBeR', 'DeCeMbEr', 'JaNuArY'],
|
||
['DEcEMBeR', 'JAnuARy', 'FEbrUAry', 'MArCH', 'APriL', 'MAy', 'JUne', 'JUly', 'AUguST', 'SEptEMbeR', 'OCtoBEr', 'NOveMBer', 'DEcEMBeR', 'JAnuARy'],
|
||
['dEcEMbEr', 'jAnUaRy', 'fEbRuArY', 'mArCh', 'aPrIl', 'mAy', 'jUnE', 'jUlY', 'aUgUsT', 'sEpTeMbEr', 'oCtObEr', 'nOveMbEr', 'dEcEMbEr', 'jAnUaRy'],
|
||
['deCEmbER', 'jaNUarY', 'feBRuaRY', 'maRCh', 'apRIl', 'maY', 'juNE', 'juLY', 'auGUst', 'sePTemBEr', 'ocTObeR', 'noVEmbER', 'deCEmbER', 'jaNUarY'],
|
||
['Dec', 'Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec', 'Jan'],
|
||
['DEC', 'JAN', 'FEB', 'MAR', 'APR', 'MAY', 'JUN', 'JUL', 'AUG', 'SEP', 'OCT', 'NOV', 'DEC', 'JAN'],
|
||
['dec', 'jan', 'feb', 'mar', 'apr', 'may', 'jun', 'jul', 'aug', 'sep', 'oct', 'nov', 'dec', 'jan'],
|
||
['DeC', 'JaN', 'FeB', 'MaR', 'ApR', 'MaY', 'JuN', 'JuL', 'AuG', 'SeP', 'OcT', 'NoV', 'DeC', 'JaN'],
|
||
['DEc', 'JAn', 'FEb', 'MAr', 'APr', 'MAy', 'JUn', 'JUl', 'AUg', 'SEp', 'OCt', 'NOv', 'DEc', 'JAn'],
|
||
['deC', 'jaN', 'feB', 'maR', 'apR', 'maY', 'juN', 'juL', 'auG', 'seP', 'ocT', 'noV', 'deC', 'jaN'],
|
||
['dEc', 'jAn', 'fEb', 'mAr', 'aPr', 'mAy', 'jUn', 'jUl', 'aUg', 'sEp', 'oCt', 'nOv', 'dEc', 'jAn']
|
||
];
|
||
|
||
// Asc case
|
||
// Add expected Data after Autofill
|
||
let expectedDataCapitalized = ['February', 'March', 'April'];
|
||
let expectedDataUpper = updateDataToUpCase(expectedDataCapitalized);
|
||
let expectedDataLower = updateDataToLowCase(expectedDataCapitalized);
|
||
let expectedDataShortCapitalized = ['Feb', 'Mar', 'Apr'];
|
||
let expectedDataShortUpper = updateDataToUpCase(expectedDataShortCapitalized);
|
||
let expectedDataShortLower = updateDataToLowCase(expectedDataShortCapitalized);
|
||
|
||
let range = ws.getRange4(0, 0);
|
||
range.fillData(testData);
|
||
//nFillHandleArea: 1 - Reverse, 3 - asc sequence, 2 - Reverse 1 elem.
|
||
getHorizontalAutofillCases(0, 13, 0, 16,assert, [expectedDataCapitalized,
|
||
expectedDataUpper, expectedDataLower, expectedDataShortCapitalized, expectedDataShortUpper, expectedDataShortLower], 3);
|
||
clearData(0, 0, 16, 0);
|
||
|
||
// Reverse case
|
||
expectedDataCapitalized = ['November', 'October', 'September'];
|
||
expectedDataUpper = updateDataToUpCase(expectedDataCapitalized);
|
||
expectedDataLower = updateDataToLowCase(expectedDataCapitalized);
|
||
expectedDataShortCapitalized = ['Nov', 'Oct', 'Sep'];
|
||
expectedDataShortUpper = updateDataToUpCase(expectedDataShortCapitalized);
|
||
expectedDataShortLower = updateDataToLowCase(expectedDataShortCapitalized);
|
||
|
||
range = ws.getRange4(0, 3);
|
||
range.fillData(testData);
|
||
getHorizontalAutofillCases(3, 16, 16, 0, assert, [expectedDataCapitalized, expectedDataUpper,
|
||
expectedDataLower, expectedDataShortCapitalized, expectedDataShortUpper, expectedDataShortLower], 1);
|
||
clearData(0, 0, 16, 0);
|
||
});
|
||
QUnit.test('Autofill - Vertical sequence: Range 14 cells. Months', function (assert) {
|
||
let testData = [
|
||
['December', 'DECEMBER', 'december', 'DeCeMbEr', 'DEcEMBeR', 'dEcEMbEr', 'deCEmbER', 'Dec', 'DEC', 'dec', 'DeC', 'DEc', 'deC', 'dEc'],
|
||
['January', 'JANUARY', 'january', 'JaNuArY', 'JAnuARy', 'jAnUaRy', 'jaNUarY', 'Jan', 'JAN', 'jan', 'JaN', 'JAn', 'jaN', 'jAn'],
|
||
['February', 'FEBRUARY', 'february', 'FeBrUaRy', 'FEbRUARy', 'fEbRUaRy', 'feBRuaRY', 'Feb', 'FEB', 'feb', 'FeB', 'FEb', 'feB', 'fEb'],
|
||
['March', 'MARCH', 'march', 'MaRcH', 'MArCH', 'mArCh', 'maRcH', 'Mar', 'MAR', 'mar', 'MaR', 'MAr', 'maR', 'mAr'],
|
||
['April', 'APRIL', 'april', 'ApRiL', 'APriL', 'aPrIL', 'apRIl', 'Apr', 'APR', 'apr', 'ApR', 'APr', 'apR', 'aPr'],
|
||
['May', 'MAY', 'may', 'MaY', 'MAy', 'mAY', 'maY', 'May', 'MAY', 'may', 'MaY', 'MAy', 'mAY', 'maY'],
|
||
['June', 'JUNE', 'june', 'JuNe', 'JUnE', 'jUnE', 'juNE', 'Jun', 'JUN', 'jun', 'JuN', 'JUn', 'juN', 'jUn'],
|
||
['July', 'JULY', 'july', 'JuLy', 'JUly', 'jULY', 'juLY', 'Jul', 'JUL', 'jul', 'JuL', 'JUl', 'juL', 'jUl'],
|
||
['August', 'AUGUST', 'august', 'AuGuSt', 'AUguST', 'aUGUSt', 'auGUST', 'Aug', 'AUG', 'aug', 'AuG', 'AUg', 'auG', 'aUg'],
|
||
['September', 'SEPTEMBER', 'september', 'SePtEmBeR', 'SEptEMbeR', 'sEPTEMBer', 'sePTEMber', 'Sep', 'SEP', 'sep', 'SeP', 'SEp', 'seP', 'sEp'],
|
||
['October', 'OCTOBER', 'october', 'OcToBeR', 'OCtoBEr', 'oCTOBEr', 'ocTOber', 'Oct', 'OCT', 'oct', 'OcT', 'OCt', 'ocT', 'oCt'],
|
||
['November', 'NOVEMBER', 'november', 'NoVEmBeR', 'NOvEMbeR', 'nOvEMBeR', 'noVEMber', 'Nov', 'NOV', 'nov', 'NoV', 'NOv', 'noV', 'nOv'],
|
||
['December', 'DECEMBER', 'december', 'DeCeMbEr', 'DEcEMBeR', 'dEcEMbEr', 'deCEmbER', 'Dec', 'DEC', 'dec', 'DeC', 'DEc', 'deC', 'dEc'],
|
||
['January', 'JANUARY', 'january', 'JaNuArY', 'JAnuARy', 'jAnUaRy', 'jaNUarY', 'Jan', 'JAN', 'jan', 'JaN', 'JAn', 'jaN', 'jAn']
|
||
];
|
||
|
||
// Asc case
|
||
// Add expected Data after Autofill
|
||
let expectedDataCapitalized = [['February'], ['March'], ['April']];
|
||
let expectedDataUpper = updateDataToUpCase(expectedDataCapitalized);
|
||
let expectedDataLower = updateDataToLowCase(expectedDataCapitalized);
|
||
let expectedDataShortCapitalized = [['Feb'], ['Mar'], ['Apr']];
|
||
let expectedDataShortUpper = updateDataToUpCase(expectedDataShortCapitalized);
|
||
let expectedDataShortLower = updateDataToLowCase(expectedDataShortCapitalized);
|
||
|
||
let range = ws.getRange4(0, 0);
|
||
range.fillData(testData);
|
||
//nFillHandleArea: 1 - Reverse, 3 - asc sequence, 2 - Reverse 1 elem.
|
||
getVerticalAutofillCases(0, 13, 0, 16, assert, [expectedDataCapitalized,
|
||
expectedDataUpper, expectedDataLower, expectedDataShortCapitalized, expectedDataShortUpper, expectedDataShortLower], 3);
|
||
clearData(0, 0, 0, 16);
|
||
|
||
// Reverse case
|
||
expectedDataCapitalized = [['November'], ['October'], ['September']];
|
||
expectedDataUpper = updateDataToUpCase(expectedDataCapitalized);
|
||
expectedDataLower = updateDataToLowCase(expectedDataCapitalized);
|
||
expectedDataShortCapitalized = [['Nov'], ['Oct'], ['Sep']];
|
||
expectedDataShortUpper = updateDataToUpCase(expectedDataShortCapitalized);
|
||
expectedDataShortLower = updateDataToLowCase(expectedDataShortCapitalized);
|
||
|
||
range = ws.getRange4(3, 0);
|
||
range.fillData(testData);
|
||
getVerticalAutofillCases(3, 16, 16, 0, assert, [expectedDataCapitalized, expectedDataUpper,
|
||
expectedDataLower, expectedDataShortCapitalized, expectedDataShortUpper, expectedDataShortLower], 1);
|
||
clearData(0, 0, 0, 16);
|
||
});
|
||
QUnit.test('Autofill - Horizontal even sequence: Range 10 cells. Months', function (assert) {
|
||
let testData = [
|
||
['December', 'February', 'April', 'June', 'August', 'October', 'December', 'February', 'April', 'June'],
|
||
['DECEMBER', 'FEBRUARY', 'APRIL', 'JUNE', 'AUGUST', 'OCTOBER', 'DECEMBER', 'FEBRUARY', 'APRIL', 'JUNE'],
|
||
['december', 'february', 'april', 'june', 'august', 'october', 'december', 'february', 'april', 'june'],
|
||
['DeCeMbEr', 'FeBrUaRy', 'ApRiL', 'JuNe', 'AuGuSt', 'OcToBeR', 'DeCeMbEr', 'FeBrUaRy', 'ApRiL', 'JuNe'],
|
||
['DEcEMBeR', 'FEbrUAry', 'APriL', 'JUne', 'AUguST', 'OCtoBEr', 'DEcEMBeR', 'FEbrUAry', 'APriL', 'JUne'],
|
||
['dEcEMbEr', 'fEbRuArY', 'aPrIl', 'jUnE', 'aUgUsT', 'oCtObEr', 'dEcEMbEr', 'fEbRuArY', 'aPrIl', 'jUnE'],
|
||
['deCEmbER', 'feBRuaRY', 'apRIl', 'juNE', 'auGUst', 'ocTObeR', 'deCEmbER', 'feBRuaRY', 'apRIl', 'juNE'],
|
||
['Dec', 'Feb', 'Apr', 'Jun', 'Aug', 'Oct', 'Dec', 'Feb', 'Apr', 'Jun'],
|
||
['DEC', 'FEB', 'APR', 'JUN', 'AUG', 'OCT','DEC', 'FEB', 'APR', 'JUN'],
|
||
['dec','feb','apr','jun','aug','oct','dec', 'feb','apr','jun'],
|
||
['DeC','FeB','ApR','JuN','AuG','OcT','DeC', 'FeB','ApR','JuN'],
|
||
['DEc','FEb','APr','JUn','AUg','OCt','DEc', 'FEb','APr','JUn'],
|
||
['deC','feB','apR','juN','auG','ocT','deC', 'feB','apR','juN'],
|
||
['dEc','fEb','aPr','jUn','aUg','oCt','dEc', 'fEb','aPr','jUn']
|
||
];
|
||
|
||
|
||
// Asc case
|
||
// Add expected Data after Autofill
|
||
let expectedDataCapitalized = ['August', 'October', 'December'];
|
||
let expectedDataUpper = updateDataToUpCase(expectedDataCapitalized);
|
||
let expectedDataLower = updateDataToLowCase(expectedDataCapitalized);
|
||
let expectedDataShortCapitalized = ['Aug', 'Oct', 'Dec'];
|
||
let expectedDataShortUpper = updateDataToUpCase(expectedDataShortCapitalized);
|
||
let expectedDataShortLower = updateDataToLowCase(expectedDataShortCapitalized);
|
||
|
||
let range = ws.getRange4(0, 0);
|
||
range.fillData(testData);
|
||
//nFillHandleArea: 1 - Reverse, 3 - asc sequence, 2 - Reverse 1 elem.
|
||
getHorizontalAutofillCases(0, 9, 0, 12, assert, [expectedDataCapitalized,
|
||
expectedDataUpper, expectedDataLower, expectedDataShortCapitalized, expectedDataShortUpper, expectedDataShortLower], 3);
|
||
clearData(0, 0, 12, 0);
|
||
|
||
// Reverse case
|
||
expectedDataCapitalized = ['October', 'August', 'June'];
|
||
expectedDataUpper = updateDataToUpCase(expectedDataCapitalized);
|
||
expectedDataLower = updateDataToLowCase(expectedDataCapitalized);
|
||
expectedDataShortCapitalized = ['Oct', 'Aug', 'Jun'];
|
||
expectedDataShortUpper = updateDataToUpCase(expectedDataShortCapitalized);
|
||
expectedDataShortLower = updateDataToLowCase(expectedDataShortCapitalized);
|
||
|
||
range = ws.getRange4(0, 3);
|
||
range.fillData(testData);
|
||
getHorizontalAutofillCases(3, 12, 12, 0, assert, [expectedDataCapitalized, expectedDataUpper,
|
||
expectedDataLower, expectedDataShortCapitalized, expectedDataShortUpper, expectedDataShortLower], 1);
|
||
clearData(0, 0, 12, 0);
|
||
});
|
||
QUnit.test('Autofill - Vertical even sequence: Range 10 cells. Months', function (assert) {
|
||
let testData = [
|
||
['December', 'DECEMBER', 'december', 'DeCeMbEr', 'DEcEMBeR', 'dEcEMbEr', 'deCEmbER', 'Dec', 'DEC', 'dec', 'DeC', 'DEc', 'deC', 'dEc'],
|
||
['February', 'FEBRUARY', 'february', 'FeBrUaRy', 'FEbRUARy', 'fEbRUaRy', 'feBRuaRY', 'Feb', 'FEB', 'feb', 'FeB', 'FEb', 'feB', 'fEb'],
|
||
['April', 'APRIL', 'april', 'ApRiL', 'APriL', 'aPrIL', 'apRIl', 'Apr', 'APR', 'apr', 'ApR', 'APr', 'apR', 'aPr'],
|
||
['June', 'JUNE', 'june', 'JuNe', 'JUnE', 'jUnE', 'juNE', 'Jun', 'JUN', 'jun', 'JuN', 'JUn', 'juN', 'jUn'],
|
||
['August', 'AUGUST', 'august', 'AuGuSt', 'AUguST', 'aUGUSt', 'auGUST', 'Aug', 'AUG', 'aug', 'AuG', 'AUg', 'auG', 'aUg'],
|
||
['October', 'OCTOBER', 'october', 'OcToBeR', 'OCtoBEr', 'oCTOBEr', 'ocTOber', 'Oct', 'OCT', 'oct', 'OcT', 'OCt', 'ocT', 'oCt'],
|
||
['December', 'DECEMBER', 'december', 'DeCeMbEr', 'DEcEMBeR', 'dEcEMbEr', 'deCEmbER', 'Dec', 'DEC', 'dec', 'DeC', 'DEc', 'deC', 'dEc'],
|
||
['February', 'FEBRUARY', 'february', 'FeBrUaRy', 'FEbRUARy', 'fEbRUaRy', 'feBRuaRY', 'Feb', 'FEB', 'feb', 'FeB', 'FEb', 'feB', 'fEb'],
|
||
['April', 'APRIL', 'april', 'ApRiL', 'APriL', 'aPrIL', 'apRIl', 'Apr', 'APR', 'apr', 'ApR', 'APr', 'apR', 'aPr'],
|
||
['June', 'JUNE', 'june', 'JuNe', 'JUnE', 'jUnE', 'juNE', 'Jun', 'JUN', 'jun', 'JuN', 'JUn', 'juN', 'jUn']
|
||
];
|
||
|
||
// Asc case
|
||
// Add expected Data after Autofill
|
||
let expectedDataCapitalized = [['August'], ['October'], ['December']];
|
||
let expectedDataUpper = updateDataToUpCase(expectedDataCapitalized);
|
||
let expectedDataLower = updateDataToLowCase(expectedDataCapitalized);
|
||
let expectedDataShortCapitalized = [['Aug'], ['Oct'], ['Dec']];
|
||
let expectedDataShortUpper = updateDataToUpCase(expectedDataShortCapitalized);
|
||
let expectedDataShortLower = updateDataToLowCase(expectedDataShortCapitalized);
|
||
|
||
let range = ws.getRange4(0, 0);
|
||
range.fillData(testData);
|
||
//nFillHandleArea: 1 - Reverse, 3 - asc sequence, 2 - Reverse 1 elem.
|
||
getVerticalAutofillCases(0, 9, 0, 12, assert, [expectedDataCapitalized,
|
||
expectedDataUpper, expectedDataLower, expectedDataShortCapitalized, expectedDataShortUpper, expectedDataShortLower], 3);
|
||
clearData(0, 0, 0, 12);
|
||
|
||
// Reverse case
|
||
expectedDataCapitalized = [['October'], ['August'], ['June']];
|
||
expectedDataUpper = updateDataToUpCase(expectedDataCapitalized);
|
||
expectedDataLower = updateDataToLowCase(expectedDataCapitalized);
|
||
expectedDataShortCapitalized = [['Oct'], ['Aug'], ['Jun']];
|
||
expectedDataShortUpper = updateDataToUpCase(expectedDataShortCapitalized);
|
||
expectedDataShortLower = updateDataToLowCase(expectedDataShortCapitalized);
|
||
|
||
range = ws.getRange4(3, 0);
|
||
range.fillData(testData);
|
||
getVerticalAutofillCases(3, 12, 12, 0, assert, [expectedDataCapitalized, expectedDataUpper,
|
||
expectedDataLower, expectedDataShortCapitalized, expectedDataShortUpper, expectedDataShortLower], 1);
|
||
clearData(0, 0, 0, 12);
|
||
});
|
||
QUnit.test('Autofill - Horizontal odd sequence: Range 10 cells. Months', function (assert) {
|
||
let testData = [
|
||
['January', 'March', 'May', 'July', 'September', 'November', 'January', 'March', 'May', 'July'],
|
||
['JANUARY', 'MARCH', 'MAY', 'JULY', 'SEPTEMBER', 'NOVEMBER', 'JANUARY', 'MARCH', 'MAY', 'JULY'],
|
||
['january', 'march', 'may', 'july', 'september', 'november', 'january', 'march', 'may', 'july'],
|
||
['JaNuArY', 'MaRcH', 'MaY', 'JuLy', 'SePtEmBeR', 'NoVemBeR', 'JaNuArY', 'MaRcH', 'MaY', 'JuLy'],
|
||
['JAnuARy', 'MArCH', 'MAy', 'JUly', 'SEptEMbeR', 'NOveMBer', 'JAnuARy', 'MArCH', 'MAy', 'JUly'],
|
||
['jAnUaRy', 'mArCh', 'mAy', 'jUlY', 'sEpTeMbEr', 'nOveMbEr', 'jAnUaRy', 'mArCh', 'mAy', 'jUlY'],
|
||
['jaNUarY', 'maRCh', 'maY', 'juLY', 'sePTemBEr', 'noVEmbER', 'jaNUarY', 'maRCh', 'maY', 'juLY'],
|
||
['Jan', 'Mar', 'May', 'Jul', 'Sep', 'Nov', 'Jan', 'Mar', 'May', 'Jul'],
|
||
['JAN', 'MAR', 'MAY', 'JUL', 'SEP', 'NOV', 'JAN', 'MAR', 'MAY', 'JUL'],
|
||
['jan', 'mar', 'may', 'jul', 'sep', 'nov', 'jan', 'mar', 'may', 'jul'],
|
||
['JaN', 'MaR', 'MaY', 'JuL', 'SeP', 'NoV', 'JaN', 'MaR', 'MaY', 'JuL'],
|
||
['JAn', 'MAr', 'MAy', 'JUl', 'SEp', 'NOv', 'JAn', 'MAr', 'MAy', 'JUl'],
|
||
['jAn', 'mAr', 'mAy', 'jUl', 'sEp', 'nOv', 'jAn', 'mAr', 'mAy', 'jUl'],
|
||
['jaN', 'maR', 'maY', 'juL', 'seP', 'noV', 'jaN', 'maR', 'maY', 'juL']
|
||
|
||
];
|
||
|
||
// Asc case
|
||
// Add expected Data after Autofill
|
||
let expectedDataCapitalized = ['September', 'November', 'January'];
|
||
let expectedDataUpper = updateDataToUpCase(expectedDataCapitalized);
|
||
let expectedDataLower = updateDataToLowCase(expectedDataCapitalized);
|
||
let expectedDataShortCapitalized = ['Sep', 'Nov', 'Jan'];
|
||
let expectedDataShortUpper = updateDataToUpCase(expectedDataShortCapitalized);
|
||
let expectedDataShortLower = updateDataToLowCase(expectedDataShortCapitalized);
|
||
|
||
let range = ws.getRange4(0, 0);
|
||
range.fillData(testData);
|
||
//nFillHandleArea: 1 - Reverse, 3 - asc sequence, 2 - Reverse 1 elem.
|
||
getHorizontalAutofillCases(0, 9, 0, 12,assert, [expectedDataCapitalized,
|
||
expectedDataUpper, expectedDataLower, expectedDataShortCapitalized, expectedDataShortUpper, expectedDataShortLower], 3);
|
||
clearData(0, 0, 12, 0);
|
||
|
||
// Reverse case
|
||
expectedDataCapitalized = ['November', 'September', 'July'];
|
||
expectedDataUpper = updateDataToUpCase(expectedDataCapitalized);
|
||
expectedDataLower = updateDataToLowCase(expectedDataCapitalized);
|
||
expectedDataShortCapitalized = ['Nov', 'Sep', 'Jul'];
|
||
expectedDataShortUpper = updateDataToUpCase(expectedDataShortCapitalized);
|
||
expectedDataShortLower = updateDataToLowCase(expectedDataShortCapitalized);
|
||
|
||
range = ws.getRange4(0, 3);
|
||
range.fillData(testData);
|
||
getHorizontalAutofillCases(3, 12, 12, 0, assert, [expectedDataCapitalized, expectedDataUpper,
|
||
expectedDataLower, expectedDataShortCapitalized, expectedDataShortUpper, expectedDataShortLower], 1);
|
||
clearData(0, 0, 12, 0);
|
||
});
|
||
QUnit.test('Autofill - Vertical odd sequence: Range 10 cells. Months', function (assert) {
|
||
let testData = [
|
||
['January', 'JANUARY', 'january', 'JaNuArY', 'JAnuARy', 'jAnUaRy', 'jaNUarY', 'Jan', 'JAN', 'jan', 'JaN', 'JAn', 'jaN', 'jAn'],
|
||
['March', 'MARCH', 'march', 'MaRcH', 'MArCH', 'mArCh', 'maRcH', 'Mar', 'MAR', 'mar', 'MaR', 'MAr', 'maR', 'mAr'],
|
||
['May', 'MAY', 'may', 'MaY', 'MAy', 'mAY', 'maY', 'May', 'MAY', 'may', 'MaY', 'MAy', 'mAY', 'maY'],
|
||
['July', 'JULY', 'july', 'JuLy', 'JUly', 'jULY', 'juLY', 'Jul', 'JUL', 'jul', 'JuL', 'JUl', 'juL', 'jUl'],
|
||
['September', 'SEPTEMBER', 'september', 'SePtEmBeR', 'SEptEMbeR', 'sEPTEMBer', 'sePTEMber', 'Sep', 'SEP', 'sep', 'SeP', 'SEp', 'seP', 'sEp'],
|
||
['November', 'NOVEMBER', 'november', 'NoVEmBeR', 'NOvEMbeR', 'nOvEMBeR', 'noVEMber', 'Nov', 'NOV', 'nov', 'NoV', 'NOv', 'noV', 'nOv'],
|
||
['January', 'JANUARY', 'january', 'JaNuArY', 'JAnuARy', 'jAnUaRy', 'jaNUarY', 'Jan', 'JAN', 'jan', 'JaN', 'JAn', 'jaN', 'jAn'],
|
||
['March', 'MARCH', 'march', 'MaRcH', 'MArCH', 'mArCh', 'maRcH', 'Mar', 'MAR', 'mar', 'MaR', 'MAr', 'maR', 'mAr'],
|
||
['May', 'MAY', 'may', 'MaY', 'MAy', 'mAY', 'maY', 'May', 'MAY', 'may', 'MaY', 'MAy', 'mAY', 'maY'],
|
||
['July', 'JULY', 'july', 'JuLy', 'JUly', 'jULY', 'juLY', 'Jul', 'JUL', 'jul', 'JuL', 'JUl', 'juL', 'jUl'],
|
||
];
|
||
|
||
// Asc case
|
||
// Add expected Data after Autofill
|
||
let expectedDataCapitalized = [['September'], ['November'], ['January']];
|
||
let expectedDataUpper = updateDataToUpCase(expectedDataCapitalized);
|
||
let expectedDataLower = updateDataToLowCase(expectedDataCapitalized);
|
||
let expectedDataShortCapitalized = [['Sep'], ['Nov'], ['Jan']];
|
||
let expectedDataShortUpper = updateDataToUpCase(expectedDataShortCapitalized);
|
||
let expectedDataShortLower = updateDataToLowCase(expectedDataShortCapitalized);
|
||
|
||
let range = ws.getRange4(0, 0);
|
||
range.fillData(testData);
|
||
//nFillHandleArea: 1 - Reverse, 3 - asc sequence, 2 - Reverse 1 elem.
|
||
getVerticalAutofillCases(0, 9, 0, 12, assert, [expectedDataCapitalized,
|
||
expectedDataUpper, expectedDataLower, expectedDataShortCapitalized, expectedDataShortUpper, expectedDataShortLower], 3);
|
||
clearData(0, 0, 0, 12);
|
||
|
||
// Reverse case
|
||
expectedDataCapitalized = [['November'], ['September'], ['July']];
|
||
expectedDataUpper = updateDataToUpCase(expectedDataCapitalized);
|
||
expectedDataLower = updateDataToLowCase(expectedDataCapitalized);
|
||
expectedDataShortCapitalized = [['Nov'], ['Sep'], ['Jul']];
|
||
expectedDataShortUpper = updateDataToUpCase(expectedDataShortCapitalized);
|
||
expectedDataShortLower = updateDataToLowCase(expectedDataShortCapitalized);
|
||
|
||
range = ws.getRange4(3, 0);
|
||
range.fillData(testData);
|
||
getVerticalAutofillCases(3, 12, 12, 0, assert, [expectedDataCapitalized, expectedDataUpper,
|
||
expectedDataLower, expectedDataShortCapitalized, expectedDataShortUpper, expectedDataShortLower], 1);
|
||
clearData(0, 0, 0, 12);
|
||
});
|
||
QUnit.test('Autofill - Horizontal sequence: May check previous cell in range. Months', function (assert) {
|
||
let testData = [
|
||
['March', 'May'],
|
||
['MARCH', 'MAY'],
|
||
['march', 'may'],
|
||
['MaRcH', 'MaY'],
|
||
['MArCH', 'MAy'],
|
||
['mArCh', 'mAy'],
|
||
['maRCh', 'maY'],
|
||
['Mar', 'May'],
|
||
['MAR', 'MAY'],
|
||
['mar', 'may'],
|
||
['MaR', 'MaY'],
|
||
['MAr', 'MAy'],
|
||
['mAr', 'mAy'],
|
||
['maR', 'maY']
|
||
];
|
||
|
||
// Asc case
|
||
// Add expected Data after Autofill
|
||
let expectedDataCapitalized = ['July', 'September', 'November'];
|
||
let expectedDataUpper = updateDataToUpCase(expectedDataCapitalized);
|
||
let expectedDataLower = updateDataToLowCase(expectedDataCapitalized);
|
||
let expectedDataShortCapitalized = ['Jul', 'Sep', 'Nov'];
|
||
let expectedDataShortUpper = updateDataToUpCase(expectedDataShortCapitalized);
|
||
let expectedDataShortLower = updateDataToLowCase(expectedDataShortCapitalized);
|
||
|
||
let range = ws.getRange4(0, 0);
|
||
range.fillData(testData);
|
||
//nFillHandleArea: 1 - Reverse, 3 - asc sequence, 2 - Reverse 1 elem.
|
||
getHorizontalAutofillCases(0, 1, 0, 4,assert, [expectedDataCapitalized,
|
||
expectedDataUpper, expectedDataLower, expectedDataShortCapitalized, expectedDataShortUpper, expectedDataShortLower], 3);
|
||
clearData(0, 0, 4, 0);
|
||
|
||
// Reverse case
|
||
expectedDataCapitalized = ['January', 'November', 'September'];
|
||
expectedDataUpper = updateDataToUpCase(expectedDataCapitalized);
|
||
expectedDataLower = updateDataToLowCase(expectedDataCapitalized);
|
||
expectedDataShortCapitalized = ['Jan', 'Nov', 'Sep'];
|
||
expectedDataShortUpper = updateDataToUpCase(expectedDataShortCapitalized);
|
||
expectedDataShortLower = updateDataToLowCase(expectedDataShortCapitalized);
|
||
|
||
range = ws.getRange4(0, 3);
|
||
range.fillData(testData);
|
||
getHorizontalAutofillCases(3, 4, 4, 0, assert, [expectedDataCapitalized, expectedDataUpper,
|
||
expectedDataLower, expectedDataShortCapitalized, expectedDataShortUpper, expectedDataShortLower], 1);
|
||
clearData(0, 0, 4, 0);
|
||
});
|
||
QUnit.test('Autofill - Vertical sequence: May check previous cell in range. Months', function (assert) {
|
||
let testData = [
|
||
['March', 'MARCH', 'march', 'MaRcH', 'MArCH', 'mArCh', 'maRcH', 'Mar', 'MAR', 'mar', 'MaR', 'MAr', 'maR', 'mAr'],
|
||
['May', 'MAY', 'may', 'MaY', 'MAy', 'mAY', 'maY', 'May', 'MAY', 'may', 'MaY', 'MAy', 'mAY', 'maY']
|
||
];
|
||
|
||
// Asc case
|
||
// Add expected Data after Autofill
|
||
let expectedDataCapitalized = [['July'], ['September'], ['November']];
|
||
let expectedDataUpper = updateDataToUpCase(expectedDataCapitalized);
|
||
let expectedDataLower = updateDataToLowCase(expectedDataCapitalized);
|
||
let expectedDataShortCapitalized = [['Jul'], ['Sep'], ['Nov']];
|
||
let expectedDataShortUpper = updateDataToUpCase(expectedDataShortCapitalized);
|
||
let expectedDataShortLower = updateDataToLowCase(expectedDataShortCapitalized);
|
||
|
||
let range = ws.getRange4(0, 0);
|
||
range.fillData(testData);
|
||
//nFillHandleArea: 1 - Reverse, 3 - asc sequence, 2 - Reverse 1 elem.
|
||
getVerticalAutofillCases(0, 1, 0, 4, assert, [expectedDataCapitalized,
|
||
expectedDataUpper, expectedDataLower, expectedDataShortCapitalized, expectedDataShortUpper, expectedDataShortLower], 3);
|
||
clearData(0, 0, 0, 4);
|
||
|
||
// Reverse case
|
||
expectedDataCapitalized = [['January'], ['November'], ['September']];
|
||
expectedDataUpper = updateDataToUpCase(expectedDataCapitalized);
|
||
expectedDataLower = updateDataToLowCase(expectedDataCapitalized);
|
||
expectedDataShortCapitalized = [['Jan'], ['Nov'], ['Sep']];
|
||
expectedDataShortUpper = updateDataToUpCase(expectedDataShortCapitalized);
|
||
expectedDataShortLower = updateDataToLowCase(expectedDataShortCapitalized);
|
||
|
||
range = ws.getRange4(3, 0);
|
||
range.fillData(testData);
|
||
getVerticalAutofillCases(3, 4, 4, 0, assert, [expectedDataCapitalized, expectedDataUpper,
|
||
expectedDataLower, expectedDataShortCapitalized, expectedDataShortUpper, expectedDataShortLower], 1);
|
||
clearData(0, 0, 0, 4);
|
||
});
|
||
QUnit.test('Autofill - Horizontal sequence: May check next cell in range. Months', function (assert) {
|
||
let testData = [
|
||
['May', 'June'],
|
||
['MAY', 'JUNE'],
|
||
['may', 'june'],
|
||
['MaY', 'JuNe'],
|
||
['MAy', 'JUne'],
|
||
['mAy', 'jUnE'],
|
||
['maY', 'juNE'],
|
||
['May', 'Jun'],
|
||
['MAY', 'JUN'],
|
||
['may', 'jun'],
|
||
['MaY', 'JuN'],
|
||
['MAy', 'JUn'],
|
||
['maY', 'juN'],
|
||
['mAy', 'jUn']
|
||
];
|
||
|
||
// Asc case
|
||
// Add expected Data after Autofill
|
||
let expectedDataCapitalized = ['July', 'August', 'September'];
|
||
let expectedDataUpper = updateDataToUpCase(expectedDataCapitalized);
|
||
let expectedDataLower = updateDataToLowCase(expectedDataCapitalized);
|
||
let expectedDataShortCapitalized = ['Jul', 'Aug', 'Sep'];
|
||
let expectedDataShortUpper = updateDataToUpCase(expectedDataShortCapitalized);
|
||
let expectedDataShortLower = updateDataToLowCase(expectedDataShortCapitalized);
|
||
|
||
let range = ws.getRange4(0, 0);
|
||
range.fillData(testData);
|
||
//nFillHandleArea: 1 - Reverse, 3 - asc sequence, 2 - Reverse 1 elem.
|
||
getHorizontalAutofillCases(0, 1, 0, 4,assert, [expectedDataCapitalized,
|
||
expectedDataUpper, expectedDataLower, expectedDataShortCapitalized, expectedDataShortUpper, expectedDataShortLower], 3);
|
||
clearData(0, 0, 4, 0);
|
||
|
||
// Reverse case
|
||
expectedDataCapitalized = ['April', 'March', 'February'];
|
||
expectedDataUpper = updateDataToUpCase(expectedDataCapitalized);
|
||
expectedDataLower = updateDataToLowCase(expectedDataCapitalized);
|
||
expectedDataShortCapitalized = ['Apr', 'Mar', 'Feb'];
|
||
expectedDataShortUpper = updateDataToUpCase(expectedDataShortCapitalized);
|
||
expectedDataShortLower = updateDataToLowCase(expectedDataShortCapitalized);
|
||
|
||
range = ws.getRange4(0, 3);
|
||
range.fillData(testData);
|
||
getHorizontalAutofillCases(3, 4, 4, 0, assert, [expectedDataCapitalized, expectedDataUpper,
|
||
expectedDataLower, expectedDataShortCapitalized, expectedDataShortUpper, expectedDataShortLower], 1);
|
||
clearData(0, 0, 4, 0);
|
||
});
|
||
QUnit.test('Autofill - Vertical sequence: May check next cell in range. Months', function (assert) {
|
||
let testData = [
|
||
['May', 'MAY', 'may', 'MaY', 'MAy', 'mAY', 'maY', 'May', 'MAY', 'may', 'MaY', 'MAy', 'mAY', 'maY'],
|
||
['June', 'JUNE', 'june', 'JuNe', 'JUnE', 'jUnE', 'juNE', 'Jun', 'JUN', 'jun', 'JuN', 'JUn', 'juN', 'jUn']
|
||
|
||
];
|
||
|
||
// Asc case
|
||
// Add expected Data after Autofill
|
||
let expectedDataCapitalized = [['July'], ['August'], ['September']];
|
||
let expectedDataUpper = updateDataToUpCase(expectedDataCapitalized);
|
||
let expectedDataLower = updateDataToLowCase(expectedDataCapitalized);
|
||
let expectedDataShortCapitalized = [['Jul'], ['Aug'], ['Sep']];
|
||
let expectedDataShortUpper = updateDataToUpCase(expectedDataShortCapitalized);
|
||
let expectedDataShortLower = updateDataToLowCase(expectedDataShortCapitalized);
|
||
|
||
let range = ws.getRange4(0, 0);
|
||
range.fillData(testData);
|
||
//nFillHandleArea: 1 - Reverse, 3 - asc sequence, 2 - Reverse 1 elem.
|
||
getVerticalAutofillCases(0, 1, 0, 4, assert, [expectedDataCapitalized,
|
||
expectedDataUpper, expectedDataLower, expectedDataShortCapitalized, expectedDataShortUpper, expectedDataShortLower], 3);
|
||
clearData(0, 0, 0, 4);
|
||
|
||
// Reverse case
|
||
expectedDataCapitalized = [['April'], ['March'], ['February']];
|
||
expectedDataUpper = updateDataToUpCase(expectedDataCapitalized);
|
||
expectedDataLower = updateDataToLowCase(expectedDataCapitalized);
|
||
expectedDataShortCapitalized = [['Apr'], ['Mar'], ['Feb']];
|
||
expectedDataShortUpper = updateDataToUpCase(expectedDataShortCapitalized);
|
||
expectedDataShortLower = updateDataToLowCase(expectedDataShortCapitalized);
|
||
|
||
range = ws.getRange4(3, 0);
|
||
range.fillData(testData);
|
||
getVerticalAutofillCases(3, 4, 4, 0, assert, [expectedDataCapitalized, expectedDataUpper,
|
||
expectedDataLower, expectedDataShortCapitalized, expectedDataShortUpper, expectedDataShortLower], 1);
|
||
clearData(0, 0, 0, 4);
|
||
});
|
||
/* TODO
|
||
* Not correct behavior for autofill Date for month and years compared to ms excel
|
||
* Context: If we try to fill 2 cells data e.g. 01.01.2000 and 01.02.2000 and try use autofill for this data.
|
||
* We'll get difference data compared to ms excel.
|
||
*
|
||
* Repro for month:
|
||
* 1. Fill data 01.01.2000 and 01.02.2000
|
||
* 2. Select range for filled data
|
||
* 3. Try to use autofill for 2 cells (asc sequence)
|
||
* Expected result:
|
||
*After used autofill we'll get 01.03.2000, 01.04.2000
|
||
* Actual result:
|
||
* After used autofill we'll get 03.03.2020, 03.04.2020
|
||
*
|
||
* Repro for year
|
||
* 1. Fill data 01.01.2000 and 01.01.2001
|
||
* 2. Select range for filled data
|
||
* 3. Try to use autofill for 2 cells (asc sequence)
|
||
* Expected result:
|
||
* After used autofill we'll get 01.01.2002, 01.01.2003
|
||
* Actual result:
|
||
* After used autofill we'll get 03.01.2003, 04.01.2004
|
||
*/
|
||
QUnit.test('Autofill - Horizontal sequence.', function (assert) {
|
||
function getAutofillCase(aFrom, aTo, nFillHandleArea, sDescription, expectedData) {
|
||
const [c1From, c2From, rFrom] = aFrom;
|
||
const [c1To, c2To, rTo] = aTo;
|
||
const nHandleDirection = 0; // 0 - Horizontal, 1 - Vertical
|
||
const autofillC1 = nFillHandleArea === 3 ? c2From + 1 : c1From - 1;
|
||
const autoFillAssert = nFillHandleArea === 3 ? autofillData : reverseAutofillData;
|
||
|
||
ws.selectionRange.ranges = [getRange(c1From, rFrom, c2From, rFrom)];
|
||
wsView = getAutoFillRange(wsView, c1To, rTo, c2To, rTo, nHandleDirection, nFillHandleArea);
|
||
let autoFillRange = getRange(autofillC1, rTo, c2To, rTo);
|
||
autoFillAssert(assert, autoFillRange, [expectedData], sDescription);
|
||
}
|
||
const testData = [
|
||
['-1'],
|
||
['-1', '0'],
|
||
['1', '3'],
|
||
['2', '4'],
|
||
['Test'],
|
||
['Test01'],
|
||
['Test1'],
|
||
['Test1', 'Test3'],
|
||
['Test2', 'Test4'],
|
||
['Test1', 'T1'],
|
||
['01/01/2000'],
|
||
['01/01/2000', '01/02/2000'],
|
||
['01/02/2000', '01/04/2000'],
|
||
['01/01/2000', '01/03/2000']
|
||
];
|
||
|
||
// Asc cases
|
||
let range = ws.getRange4(0, 0);
|
||
range.fillData(testData);
|
||
// nFillHandleArea: 1 - Reverse, 3 - asc sequence, 2 - Reverse 1 elem.
|
||
getAutofillCase([0, 0, 0], [0, 1, 0], 3, 'Number. Asc sequence. Range 1 cell', ['-1']);
|
||
getAutofillCase([0, 1, 1], [0, 4, 1], 3, 'Number. Asc sequence. Range 2 cell', ['1', '2', '3']);
|
||
getAutofillCase([0, 1, 2], [0, 4, 2], 3, 'Number. Asc odd sequence. Range 2 cell', ['5', '7', '9']);
|
||
getAutofillCase([0, 1, 3], [0, 4, 3], 3, 'Number. Asc even sequence. Range 2 cell', ['6', '8', '10']);
|
||
getAutofillCase([0, 0, 4], [0, 1, 4], 3, 'Text. Asc sequence. Range 1 cell', ['Test']);
|
||
getAutofillCase([0, 0, 5], [0, 3, 5], 3, 'Text with postfix 01. Asc sequence. Range 1 cell', ['Test02', 'Test03', 'Test04']);
|
||
getAutofillCase([0, 0, 6], [0, 3, 6], 3, 'Text with postfix 1. Asc sequence. Range 1 cell', ['Test2', 'Test3', 'Test4']);
|
||
getAutofillCase([0, 1, 7], [0, 4, 7], 3, 'Text with postfix. Asc odd sequence. Range 2 cell', ['Test5', 'Test7', 'Test9']);
|
||
getAutofillCase([0, 1, 8], [0, 4, 8], 3, 'Text with postfix. Asc even sequence. Range 2 cell', ['Test6', 'Test8', 'Test10']);
|
||
getAutofillCase([0, 1, 9], [0, 5, 9], 3, 'Text with postfix. Asc sequence of Test and T. Range 2 cell', ['Test2', 'T2', 'Test3', 'T3']);
|
||
getAutofillCase([0, 0, 10], [0, 3, 10], 3, 'Date. Asc sequence. Range 1 cell', ['36527', '36528', '36529']); // 02.01.2000, 03.01.2000, 04.01.2000
|
||
getAutofillCase([0, 1, 11], [0, 4, 11], 3, 'Date. Asc sequence. Range 2 cell', ['36528', '36529', '36530']); // 03.01.2000, 04.01.2000, 05.01.2000
|
||
getAutofillCase([0, 1, 12], [0, 4, 12], 3, 'Date. Asc even sequence. Range 2 cell', ['36531', '36533', '36535']); // 06.01.2000, 08.01.2000, 10.01.2000
|
||
getAutofillCase([0, 1, 13], [0, 4, 13], 3, 'Date. Asc odd sequence. Range 2 cell', ['36530', '36532', '36534']); // 05.01.2000, 07.01.2000, 09.01.2000
|
||
|
||
clearData(0, 0, 5, 13);
|
||
// Reverse cases
|
||
range = ws.getRange4(0, 3);
|
||
range.fillData(testData);
|
||
// nFillHandleArea: 1 - Reverse, 3 - asc sequence, 2 - Reverse 1 elem.
|
||
getAutofillCase([3, 3, 0], [2, 3, 0], 1, 'Number. Reverse sequence. Range 1 cell', ['-1']);
|
||
getAutofillCase([3, 4, 1], [4, 0, 1], 1, 'Number. Reverse sequence. Range 2 cell', ['-2', '-3', '-4']);
|
||
getAutofillCase([3, 4, 2], [4, 0, 2], 1, 'Number. Reverse odd sequence. Range 2 cell', ['-1', '-3', '-5']);
|
||
getAutofillCase([3, 4, 3], [4, 0, 3], 1, 'Number. Reverse even sequence. Range 2 cell', ['0', '-2', '-4']);
|
||
getAutofillCase([3, 3, 4], [2, 3, 4], 1, 'Text. Reverse sequence. Range 1 cell', ['Test']);
|
||
getAutofillCase([3, 3, 5], [3, 0, 5], 1, 'Text with postfix 01. Reverse sequence. Range 1 cell', ['Test00', 'Test01', 'Test02']);
|
||
getAutofillCase([3, 3, 6], [3, 0, 6], 1, 'Text with postfix 1. Reverse sequence. Range 1 cell', ['Test0', 'Test1', 'Test2']);
|
||
getAutofillCase([3, 4, 7], [4, 0, 7], 1, 'Text with postfix. Reverse odd sequence. Range 2 cell', ['Test1', 'Test3', 'Test5']);
|
||
getAutofillCase([3, 4, 8], [4, 0, 8], 1, 'Text with postfix. Reverse even sequence. Range 2 cell', ['Test0', 'Test2', 'Test4']);
|
||
getAutofillCase([3, 4, 9], [4, 0, 9], 1, 'Text with postfix. Reverse sequence of Test and T. Range 2 cell', ['T0', 'Test0', 'T1']);
|
||
getAutofillCase([3, 3, 10], [3, 0, 10], 1, 'Date. Reverse sequence. Range 1 cell', ['36525', '36524', '36523']); // 31.12.1999, 30.12.1999, 29.12.1999
|
||
getAutofillCase([3, 4, 11], [4, 0, 11], 1, 'Date. Reverse sequence. Range 2 cell', ['36525', '36524', '36523']); // 31.12.1999, 30.12.1999, 29.12.1999
|
||
getAutofillCase([3, 4, 12], [4, 0, 12], 1, 'Date. Reverse even sequence. Range 2 cell', ['36525', '36523', '36521']); // 30.12.1999, 28.12.1999, 26.12.1999
|
||
getAutofillCase([3, 4, 13], [4, 0, 13], 1, 'Date. Reverse odd sequence. Range 2 cell', ['36524', '36522', '36520']); // 31.12.1999, 29.12.1999, 27.12.1999
|
||
clearData(0, 0, 4, 13);
|
||
|
||
});
|
||
QUnit.test('Autofill - Vertical sequence.', function (assert) {
|
||
function getAutofillCase(aFrom, aTo, nFillHandleArea, sDescription, expectedData) {
|
||
const [r1From, r2From, cFrom] = aFrom;
|
||
const [r1To, r2To, cTo] = aTo;
|
||
const nHandleDirection = 1; // 0 - Horizontal, 1 - Vertical
|
||
const autofillR1 = nFillHandleArea === 3 ? r2From + 1 : r1From - 1;
|
||
const autoFillAssert = nFillHandleArea === 3 ? autofillData : reverseAutofillData;
|
||
|
||
ws.selectionRange.ranges = [getRange(cFrom, r1From, cFrom, r2From)];
|
||
wsView = getAutoFillRange(wsView, cTo, r1To, cTo, r2To, nHandleDirection, nFillHandleArea);
|
||
let autoFillRange = getRange(cTo, autofillR1, cTo, r2To);
|
||
autoFillAssert(assert, autoFillRange, expectedData, sDescription);
|
||
}
|
||
const testData = [
|
||
['-1', '-1', '1', '2', 'Test', 'Test01', 'Test1', 'Test1', 'Test2', 'Test1', '01/01/2000', '01/01/2000', '01/02/2000', '01/01/2000'],
|
||
['', '0', '3', '4', '', '', '', 'Test3', 'Test4', 'T1', '', '01/02/2000', '01/04/2000', '01/03/2000']
|
||
];
|
||
|
||
// Asc cases
|
||
let range = ws.getRange4(0, 0);
|
||
range.fillData(testData);
|
||
// nFillHandleArea: 1 - Reverse, 3 - asc sequence, 2 - Reverse 1 elem.
|
||
getAutofillCase([0, 0, 0], [0, 1, 0], 3, 'Number. Asc sequence. Range 1 cell', [['-1']]);
|
||
getAutofillCase([0, 1, 1], [0, 4, 1], 3, 'Number. Asc sequence. Range 2 cell', [['1'], ['2'], ['3']]);
|
||
getAutofillCase([0, 1, 2], [0, 4, 2], 3, 'Number. Asc odd sequence. Range 2 cell', [['5'], ['7'], ['9']]);
|
||
getAutofillCase([0, 1, 3], [0, 4, 3], 3, 'Number. Asc even sequence. Range 2 cell', [['6'], ['8'], ['10']]);
|
||
getAutofillCase([0, 0, 4], [0, 1, 4], 3, 'Text. Asc sequence. Range 1 cell', [['Test']]);
|
||
getAutofillCase([0, 0, 5], [0, 3, 5], 3, 'Text with postfix 01. Asc sequence. Range 1 cell', [['Test02'], ['Test03'], ['Test04']]);
|
||
getAutofillCase([0, 0, 6], [0, 3, 6], 3, 'Text with postfix 1. Asc sequence. Range 1 cell', [['Test2'], ['Test3'], ['Test4']]);
|
||
getAutofillCase([0, 1, 7], [0, 4, 7], 3, 'Text with postfix. Asc odd sequence. Range 2 cell', [['Test5'], ['Test7'], ['Test9']]);
|
||
getAutofillCase([0, 1, 8], [0, 4, 8], 3, 'Text with postfix. Asc even sequence. Range 2 cell', [['Test6'], ['Test8'], ['Test10']]);
|
||
getAutofillCase([0, 1, 9], [0, 5, 9], 3, 'Text with postfix. Asc sequence of Test and T. Range 2 cell', [['Test2'], ['T2'], ['Test3'], ['T3']]);
|
||
getAutofillCase([0, 0, 10], [0, 3, 10], 3, 'Date. Asc sequence. Range 1 cell', [['36527'], ['36528'], ['36529']]); // 02.01.2000, 03.01.2000, 04.01.2000
|
||
getAutofillCase([0, 1, 11], [0, 4, 11], 3, 'Date. Asc sequence. Range 2 cell', [['36528'], ['36529'], ['36530']]); // 03.01.2000, 04.01.2000, 05.01.2000
|
||
getAutofillCase([0, 1, 12], [0, 4, 12], 3, 'Date. Asc even sequence. Range 2 cell', [['36531'], ['36533'], ['36535']]); // 06.01.2000, 08.01.2000, 10.01.2000
|
||
getAutofillCase([0, 1, 13], [0, 4, 13], 3, 'Date. Asc odd sequence. Range 2 cell', [['36530'], ['36532'], ['36534']]); // 05.01.2000, 07.01.2000, 09.01.2000
|
||
|
||
clearData(0, 0, 5, 13);
|
||
// Reverse cases
|
||
range = ws.getRange4(3, 0);
|
||
range.fillData(testData);
|
||
// nFillHandleArea: 1 - Reverse, 3 - asc sequence, 2 - Reverse 1 elem.
|
||
getAutofillCase([3, 3, 0], [2, 3, 0], 1, 'Number. Reverse sequence. Range 1 cell', [['-1']]);
|
||
getAutofillCase([3, 4, 1], [4, 0, 1], 1, 'Number. Reverse sequence. Range 2 cell', [['-2'], ['-3'], ['-4']]);
|
||
getAutofillCase([3, 4, 2], [4, 0, 2], 1, 'Number. Reverse odd sequence. Range 2 cell', [['-1'], ['-3'], ['-5']]);
|
||
getAutofillCase([3, 4, 3], [4, 0, 3], 1, 'Number. Reverse even sequence. Range 2 cell', [['0'], ['-2'], ['-4']]);
|
||
getAutofillCase([3, 3, 4], [2, 3, 4], 1, 'Text. Reverse sequence. Range 1 cell', [['Test']]);
|
||
getAutofillCase([3, 3, 5], [3, 0, 5], 1, 'Text with postfix 01. Reverse sequence. Range 1 cell', [['Test00'], ['Test01'], ['Test02']]);
|
||
getAutofillCase([3, 3, 6], [3, 0, 6], 1, 'Text with postfix 1. Reverse sequence. Range 1 cell', [['Test0'], ['Test1'], ['Test2']]);
|
||
getAutofillCase([3, 4, 7], [4, 0, 7], 1, 'Text with postfix. Reverse odd sequence. Range 2 cell', [['Test1'], ['Test3'], ['Test5']]);
|
||
getAutofillCase([3, 4, 8], [4, 0, 8], 1, 'Text with postfix. Reverse even sequence. Range 2 cell', [['Test0'], ['Test2'], ['Test4']]);
|
||
getAutofillCase([3, 4, 9], [4, 0, 9], 1, 'Text with postfix. Reverse sequence of Test and T. Range 2 cell', [['T0'], ['Test0'], ['T1']]);
|
||
getAutofillCase([3, 3, 10], [3, 0, 10], 1, 'Date. Reverse sequence. Range 1 cell', [['36525'], ['36524'], ['36523']]); // 31.12.1999, 30.12.1999, 29.12.1999
|
||
getAutofillCase([3, 4, 11], [4, 0, 11], 1, 'Date. Reverse sequence. Range 2 cell', [['36525'], ['36524'], ['36523']]); // 31.12.1999, 30.12.1999, 29.12.1999
|
||
getAutofillCase([3, 4, 12], [4, 0, 12], 1, 'Date. Reverse even sequence. Range 2 cell', [['36525'], ['36523'], ['36521']]); // 30.12.1999, 28.12.1999, 26.12.1999
|
||
getAutofillCase([3, 4, 13], [4, 0, 13], 1, 'Date. Reverse odd sequence. Range 2 cell', [['36524'], ['36522'], ['36520']]); // 31.12.1999, 29.12.1999, 27.12.1999
|
||
|
||
clearData(0, 0, 4, 13);
|
||
});
|
||
QUnit.test('Autofill: Days of week and months with spaces and "." - Horizontal sequence', function (assert) {
|
||
function getAutofillCase(aFrom, aTo, nFillHandleArea, sDescription, expectedData) {
|
||
const [c1From, c2From, rFrom] = aFrom;
|
||
const [c1To, c2To, rTo] = aTo;
|
||
const nHandleDirection = 0; // 0 - Horizontal, 1 - Vertical
|
||
const autofillC1 = nFillHandleArea === 3 ? c2From + 1 : c1From - 1;
|
||
const autoFillAssert = nFillHandleArea === 3 ? autofillData : reverseAutofillData;
|
||
|
||
ws.selectionRange.ranges = [getRange(c1From, rFrom, c2From, rFrom)];
|
||
wsView = getAutoFillRange(wsView, c1To, rTo, c2To, rTo, nHandleDirection, nFillHandleArea);
|
||
let autoFillRange = getRange(autofillC1, rTo, c2To, rTo);
|
||
autoFillAssert(assert, autoFillRange, [expectedData], sDescription);
|
||
}
|
||
const testData = [
|
||
['monday '],
|
||
['monday ', 'tuesday'],
|
||
[' monday ', 'tuesday '],
|
||
['mon.'],
|
||
['mon.', 'tue'],
|
||
['mon ', 'tue'],
|
||
[' mon ', 'tue '],
|
||
['january '],
|
||
['january ', 'february'],
|
||
[' january ', 'february'],
|
||
['jan.'],
|
||
['jan.', 'feb'],
|
||
['mon.day']
|
||
];
|
||
// Asc cases
|
||
let range = ws.getRange4(0, 0);
|
||
range.fillData(testData);
|
||
// nFillHandleArea: 1 - Reverse, 3 - asc sequence, 2 - Reverse 1 elem.
|
||
getAutofillCase([0, 0, 0], [0, 6, 0], 3, 'Day of week with space. Asc sequence. Range 1 cell', ['tuesday', 'wednesday', 'thursday', 'friday', 'saturday', 'sunday']);
|
||
getAutofillCase([0, 1, 1], [0, 5, 1], 3, 'Day of week with space. Asc sequence. Range 2 cell', ['wednesday', 'thursday', 'friday', 'saturday', 'sunday']);
|
||
getAutofillCase([0, 1, 2], [0, 5, 2], 3, 'Day of week with space. Asc sequence. Range 2 cell', ['wednesday', 'thursday', 'friday', 'saturday', 'sunday']);
|
||
getAutofillCase([0, 0, 3], [0, 6, 3], 3, 'Day of week short with ".". Asc sequence. Range 1 cell', ['tue', 'wed', 'thu', 'fri', 'sat', 'sun']);
|
||
getAutofillCase([0, 1, 4], [0, 5, 4], 3, 'Day of week short with ".". Asc sequence. Range 2 cell', ['wed', 'thu', 'fri', 'sat', 'sun']);
|
||
getAutofillCase([0, 1, 5], [0, 5, 5], 3, 'Day of week short with space. Asc sequence. Range 2 cell', ['wed', 'thu', 'fri', 'sat', 'sun']);
|
||
getAutofillCase([0, 1, 6], [0, 5, 6], 3, 'Day of week short with spaces. Asc sequence. Range 2 cell', ['wed', 'thu', 'fri', 'sat', 'sun']);
|
||
getAutofillCase([0, 0, 7], [0, 6, 7], 3, 'Month with space. Asc sequence. Range 1 cell', ['february', 'march', 'april', 'may', 'june', 'july']);
|
||
getAutofillCase([0, 1, 8], [0, 6, 8], 3, 'Month with space. Asc sequence. Range 2 cell', ['march', 'april', 'may', 'june', 'july', 'august']);
|
||
getAutofillCase([0, 1, 9], [0, 6, 9], 3, 'Month with spaces. Asc sequence. Range 2 cell', ['march', 'april', 'may', 'june', 'july', 'august']);
|
||
getAutofillCase([0, 0, 10], [0, 6, 10], 3, 'Month short with ".". Asc sequence. Range 1 cell', ['feb','mar', 'apr', 'may', 'jun', 'jul']);
|
||
getAutofillCase([0, 1, 11], [0, 6, 11], 3, 'Month short with ".". Asc sequence. Range 2 cell', ['mar', 'apr', 'may', 'jun', 'jul', 'aug']);
|
||
getAutofillCase([0, 0, 12], [0, 2, 12], 3, 'mon.day. Asc sequence. Range 1 cell', ['mon.day', 'mon.day']);
|
||
clearData(0, 0, 6, 12);
|
||
// Reverse cases
|
||
range = ws.getRange4(0, 7);
|
||
range.fillData(testData);
|
||
// nFillHandleArea: 1 - Reverse, 3 - asc sequence, 2 - Reverse 1 elem.
|
||
getAutofillCase([7, 7, 0], [6, 0, 0], 1, 'Day of week with space. Reverse sequence. Range 1 cell', ['sunday', 'saturday', 'friday', 'thursday', 'wednesday', 'tuesday', 'monday']);
|
||
getAutofillCase([7, 8, 1], [6, 0, 1], 1, 'Day of week with space. Reverse sequence. Range 2 cell', ['sunday', 'saturday', 'friday', 'thursday', 'wednesday', 'tuesday', 'monday']);
|
||
getAutofillCase([7, 8, 2], [6, 0, 2], 1, 'Day of week with space. Reverse sequence. Range 2 cell', ['sunday', 'saturday', 'friday', 'thursday', 'wednesday', 'tuesday', 'monday']);
|
||
getAutofillCase([7, 7, 3], [6, 0, 3], 1, 'Day of week short with ".". Reverse sequence. Range 1 cell', ['sun', 'sat', 'fri', 'thu', 'wed', 'tue', 'mon']);
|
||
getAutofillCase([7, 8, 4], [6, 0, 4], 1, 'Day of week short with ".". Reverse sequence. Range 2 cell', ['sun', 'sat', 'fri', 'thu', 'wed', 'tue', 'mon']);
|
||
getAutofillCase([7, 8, 5], [6, 0, 5], 1, 'Day of week short with space. Reverse sequence. Range 2 cell', ['sun', 'sat', 'fri', 'thu', 'wed', 'tue', 'mon']);
|
||
getAutofillCase([7, 8, 6], [6, 0, 6], 1, 'Day of week short with spaces. Reverse sequence. Range 2 cell', ['sun', 'sat', 'fri', 'thu', 'wed', 'tue', 'mon']);
|
||
getAutofillCase([7, 7, 7], [6, 0, 7], 1, 'Month with space. Reverse sequence. Range 1 cell', ['december', 'november', 'october', 'september', 'august', 'july', 'june']);
|
||
getAutofillCase([7, 8, 8], [6, 0, 8], 1, 'Month with space. Reverse sequence. Range 2 cell', ['december', 'november', 'october', 'september', 'august', 'july', 'june']);
|
||
getAutofillCase([7, 8, 9], [6, 0, 9], 1, 'Month with spaces. Reverse sequence. Range 2 cell', ['december', 'november', 'october', 'september', 'august', 'july', 'june']);
|
||
getAutofillCase([7, 7, 10], [6, 0, 10], 1, 'Month short with ".". Reverse sequence. Range 1 cell', ['dec', 'nov', 'oct', 'sep', 'aug', 'jul', 'jun']);
|
||
getAutofillCase([7, 8, 11], [6, 0, 11], 1, 'Month short with ".". Reverse sequence. Range 2 cell', ['dec', 'nov', 'oct', 'sep', 'aug', 'jul', 'jun']);
|
||
getAutofillCase([7, 7, 12], [6, 5, 12], 1, 'mon.day. Reverse sequence. Range 1 cell', ['mon.day', 'mon.day']);
|
||
clearData(0, 0, 8, 12);
|
||
});
|
||
QUnit.test('Autofill: Days of week and months with spaces and "." - Vertical sequence.', function (assert) {
|
||
function getAutofillCase(aFrom, aTo, nFillHandleArea, sDescription, expectedData) {
|
||
const [r1From, r2From, cFrom] = aFrom;
|
||
const [r1To, r2To, cTo] = aTo;
|
||
const nHandleDirection = 1; // 0 - Horizontal, 1 - Vertical
|
||
const autofillR1 = nFillHandleArea === 3 ? r2From + 1 : r1From - 1;
|
||
const autoFillAssert = nFillHandleArea === 3 ? autofillData : reverseAutofillData;
|
||
|
||
ws.selectionRange.ranges = [getRange(cFrom, r1From, cFrom, r2From)];
|
||
wsView = getAutoFillRange(wsView, cTo, r1To, cTo, r2To, nHandleDirection, nFillHandleArea);
|
||
let autoFillRange = getRange(cTo, autofillR1, cTo, r2To);
|
||
autoFillAssert(assert, autoFillRange, expectedData, sDescription);
|
||
}
|
||
const testData = [
|
||
['monday ', 'monday ', ' monday ', 'mon.', 'mon.', 'mon ', ' mon ', 'january ', 'january ', ' january ', 'jan.', 'jan.', 'mon.day'],
|
||
['', 'tuesday', 'tuesday ', '', 'tue', 'tue', 'tue ', '', 'february', 'february', '', 'feb', '']
|
||
];
|
||
|
||
// Asc cases
|
||
let range = ws.getRange4(0, 0);
|
||
range.fillData(testData);
|
||
// nFillHandleArea: 1 - Reverse, 3 - asc sequence, 2 - Reverse 1 elem.
|
||
getAutofillCase([0, 0, 0], [0, 6, 0], 3, 'Day of week with space. Asc sequence. Range 1 cell', [['tuesday'], ['wednesday'], ['thursday'], ['friday'], ['saturday'], ['sunday']]);
|
||
getAutofillCase([0, 1, 1], [0, 5, 1], 3, 'Day of week with space. Asc sequence. Range 2 cell', [['wednesday'], ['thursday'], ['friday'], ['saturday'], ['sunday']]);
|
||
getAutofillCase([0, 1, 2], [0, 5, 2], 3, 'Day of week with space. Asc sequence. Range 2 cell', [['wednesday'], ['thursday'], ['friday'], ['saturday'], ['sunday']]);
|
||
getAutofillCase([0, 0, 3], [0, 6, 3], 3, 'Day of week short with ".". Asc sequence. Range 1 cell', [['tue'], ['wed'], ['thu'], ['fri'], ['sat'], ['sun']]);
|
||
getAutofillCase([0, 1, 4], [0, 5, 4], 3, 'Day of week short with ".". Asc sequence. Range 2 cell', [['wed'], ['thu'], ['fri'], ['sat'], ['sun']]);
|
||
getAutofillCase([0, 1, 5], [0, 5, 5], 3, 'Day of week short with space. Asc sequence. Range 2 cell', [['wed'], ['thu'], ['fri'], ['sat'], ['sun']]);
|
||
getAutofillCase([0, 1, 6], [0, 5, 6], 3, 'Day of week short with spaces. Asc sequence. Range 2 cell', [['wed'], ['thu'], ['fri'], ['sat'], ['sun']]);
|
||
getAutofillCase([0, 0, 7], [0, 6, 7], 3, 'Month with space. Asc sequence. Range 1 cell', [['february'], ['march'], ['april'], ['may'], ['june'], ['july']]);
|
||
getAutofillCase([0, 1, 8], [0, 6, 8], 3, 'Month with space. Asc sequence. Range 2 cell', [['march'], ['april'], ['may'], ['june'], ['july'], ['august']]);
|
||
getAutofillCase([0, 1, 9], [0, 6, 9], 3, 'Month with spaces. Asc sequence. Range 2 cell', [['march'], ['april'], ['may'], ['june'], ['july'], ['august']]);
|
||
getAutofillCase([0, 0, 10], [0, 6, 10], 3, 'Month short with ".". Asc sequence. Range 1 cell', [['feb'],['mar'], ['apr'], ['may'], ['jun'], ['jul']]);
|
||
getAutofillCase([0, 1, 11], [0, 6, 11], 3, 'Month short with ".". Asc sequence. Range 2 cell', [['mar'], ['apr'], ['may'], ['jun'], ['jul'], ['aug']]);
|
||
getAutofillCase([0, 0, 12], [0, 2, 12], 3, 'mon.day. Asc sequence. Range 1 cell', [['mon.day'], ['mon.day']]);
|
||
clearData(0, 0, 6, 11);
|
||
// Reverse cases
|
||
range = ws.getRange4(7, 0);
|
||
range.fillData(testData);
|
||
// nFillHandleArea: 1 - Reverse, 3 - asc sequence, 2 - Reverse 1 elem.
|
||
getAutofillCase([7, 7, 0], [6, 0, 0], 1, 'Day of week with space. Reverse sequence. Range 1 cell', [['sunday'], ['saturday'], ['friday'], ['thursday'], ['wednesday'], ['tuesday'], ['monday']]);
|
||
getAutofillCase([7, 8, 1], [6, 0, 1], 1, 'Day of week with space. Reverse sequence. Range 2 cell', [['sunday'], ['saturday'], ['friday'], ['thursday'], ['wednesday'], ['tuesday'], ['monday']]);
|
||
getAutofillCase([7, 8, 2], [6, 0, 2], 1, 'Day of week with space. Reverse sequence. Range 2 cell', [['sunday'], ['saturday'], ['friday'], ['thursday'], ['wednesday'], ['tuesday'], ['monday']]);
|
||
getAutofillCase([7, 7, 3], [6, 0, 3], 1, 'Day of week short with ".". Reverse sequence. Range 1 cell', [['sun'], ['sat'], ['fri'], ['thu'], ['wed'], ['tue'], ['mon']]);
|
||
getAutofillCase([7, 8, 4], [6, 0, 4], 1, 'Day of week short with ".". Reverse sequence. Range 2 cell', [['sun'], ['sat'], ['fri'], ['thu'], ['wed'], ['tue'], ['mon']]);
|
||
getAutofillCase([7, 8, 5], [6, 0, 5], 1, 'Day of week short with space. Reverse sequence. Range 2 cell', [['sun'], ['sat'], ['fri'], ['thu'], ['wed'], ['tue'], ['mon']]);
|
||
getAutofillCase([7, 8, 6], [6, 0, 6], 1, 'Day of week short with spaces. Reverse sequence. Range 2 cell', [['sun'], ['sat'], ['fri'], ['thu'], ['wed'], ['tue'], ['mon']]);
|
||
getAutofillCase([7, 7, 7], [6, 0, 7], 1, 'Month with space. Reverse sequence. Range 1 cell', [['december'], ['november'], ['october'], ['september'], ['august'], ['july'], ['june']]);
|
||
getAutofillCase([7, 8, 8], [6, 0, 8], 1, 'Month with space. Reverse sequence. Range 2 cell', [['december'], ['november'], ['october'], ['september'], ['august'], ['july'], ['june']]);
|
||
getAutofillCase([7, 8, 9], [6, 0, 9], 1, 'Month with spaces. Reverse sequence. Range 2 cell', [['december'], ['november'], ['october'], ['september'], ['august'], ['july'], ['june']]);
|
||
getAutofillCase([7, 7, 10], [6, 0, 10], 1, 'Month short with ".". Reverse sequence. Range 1 cell', [['dec'], ['nov'], ['oct'], ['sep'], ['aug'], ['jul'], ['jun']]);
|
||
getAutofillCase([7, 8, 11], [6, 0, 11], 1, 'Month short with ".". Reverse sequence. Range 2 cell', [['dec'], ['nov'], ['oct'], ['sep'], ['aug'], ['jul'], ['jun']]);
|
||
getAutofillCase([7, 7, 12], [6, 5, 12], 1, 'mon.day. Reverse sequence. Range 1 cell', [['mon.day'], ['mon.day']]);
|
||
clearData(0, 0, 8, 11);
|
||
});
|
||
|
||
QUnit.test('Autofill: test toolbar down/up/left/right', function (assert) {
|
||
clearData(0, 0, 6, 11);
|
||
|
||
const testData = [
|
||
['1', 'Test', 'Test1', '01/01/2000']
|
||
];
|
||
|
||
// Asc cases
|
||
let range = ws.getRange4(0, 0);
|
||
range.fillData(testData);
|
||
|
||
let fillRange = new Asc.Range(0, 0, 0, 3);
|
||
wsView.setSelection(fillRange);
|
||
api.asc_FillCells(Asc.c_oAscFillType.fillDown);
|
||
|
||
checkUndoRedo(function (_desc) {
|
||
compareData(assert, fillRange, [["1"], [""], [""], [""]], _desc);
|
||
}, function (_desc) {
|
||
compareData(assert, fillRange, [["1"], ["1"], ["1"], ["1"]], _desc);
|
||
}, "Autofill: down fill number");
|
||
|
||
fillRange = new Asc.Range(1, 0, 1, 3);
|
||
wsView.setSelection(fillRange);
|
||
api.asc_FillCells(Asc.c_oAscFillType.fillDown);
|
||
|
||
checkUndoRedo(function (_desc) {
|
||
compareData(assert, fillRange, [["Test"], [""], [""], [""]], _desc);
|
||
}, function (_desc) {
|
||
compareData(assert, fillRange, [["Test"], ["Test"], ["Test"], ["Test"]], _desc);
|
||
}, "Autofill: down fill text");
|
||
|
||
fillRange = new Asc.Range(2, 0, 2, 3);
|
||
wsView.setSelection(fillRange);
|
||
api.asc_FillCells(Asc.c_oAscFillType.fillDown);
|
||
|
||
checkUndoRedo(function (_desc) {
|
||
compareData(assert, fillRange, [["Test1"], [""], [""], [""]], _desc);
|
||
}, function (_desc) {
|
||
compareData(assert, fillRange, [["Test1"], ["Test1"], ["Test1"], ["Test1"]], _desc);
|
||
}, "Autofill: down fill text + number");
|
||
|
||
|
||
fillRange = new Asc.Range(3, 0, 3, 3);
|
||
wsView.setSelection(fillRange);
|
||
api.asc_FillCells(Asc.c_oAscFillType.fillDown);
|
||
|
||
checkUndoRedo(function (_desc) {
|
||
compareData(assert, fillRange, [["36526"], [""], [""], [""]], _desc);
|
||
}, function (_desc) {
|
||
compareData(assert, fillRange, [["36526"], ["36526"], ["36526"], ["36526"]], _desc);
|
||
}, "Autofill: down fill date");
|
||
|
||
|
||
fillRange = new Asc.Range(2, 0, 4, 0);
|
||
wsView.setSelection(fillRange);
|
||
api.asc_FillCells(Asc.c_oAscFillType.fillRight);
|
||
|
||
checkUndoRedo(function (_desc) {
|
||
compareData(assert, fillRange, [["Test1", "36526", "", ""]], _desc);
|
||
}, function (_desc) {
|
||
compareData(assert, fillRange, [["Test1", "Test1", "Test1", "Test1"]], _desc);
|
||
}, "Autofill: right fill text + number");
|
||
|
||
|
||
clearData(0, 0, 6, 11);
|
||
|
||
});
|
||
|
||
QUnit.test('Table selection for formula', function (assert) {
|
||
|
||
let tableOptions = new AscCommonExcel.AddFormatTableOptions();
|
||
tableOptions.range = "A100:C103";
|
||
api.asc_addAutoFilter("TableStyleMedium2", tableOptions);
|
||
|
||
let tables = wsView.model.autoFilters.getTablesIntersectionRange(new Asc.Range(0, 100, 0, 100));
|
||
assert.strictEqual(tables.length, 1, "compare tables length");
|
||
|
||
let table = tables[0];
|
||
let tableName = table.DisplayName;
|
||
let activeCell = new AscCommon.CellBase(10, 10);
|
||
let handleSelectionRange = new Asc.Range(0, 1, 0, 1);
|
||
let sTableData = table.getSelectionString(activeCell, handleSelectionRange);
|
||
|
||
assert.strictEqual(sTableData, null, "check selection not table");
|
||
|
||
activeCell = new AscCommon.CellBase(10, 10);
|
||
handleSelectionRange = new Asc.Range(0, 100, 0, 100);
|
||
sTableData = table.getSelectionString(activeCell, handleSelectionRange);
|
||
|
||
assert.strictEqual(sTableData, null, "check selection not table_2");
|
||
|
||
|
||
activeCell = new AscCommon.CellBase(10, 10);
|
||
handleSelectionRange = new Asc.Range(0, 100, 0, 103);
|
||
sTableData = table.getSelectionString(activeCell, handleSelectionRange);
|
||
|
||
assert.strictEqual(sTableData, tableName + "[Column1]", "check selection column1");
|
||
|
||
activeCell = new AscCommon.CellBase(10, 10);
|
||
handleSelectionRange = new Asc.Range(0, 100, 1, 103);
|
||
sTableData = table.getSelectionString(activeCell, handleSelectionRange);
|
||
|
||
assert.strictEqual(sTableData, tableName + "[[Column1]:[Column2]]", "check selection table data from column1 to column2");
|
||
|
||
activeCell = new AscCommon.CellBase(10, 10);
|
||
handleSelectionRange = new Asc.Range(0, 100, 2, 103);
|
||
sTableData = table.getSelectionString(activeCell, handleSelectionRange);
|
||
|
||
assert.strictEqual(sTableData, tableName, "check selection all table");
|
||
|
||
activeCell = new AscCommon.CellBase(10, 10);
|
||
handleSelectionRange = new Asc.Range(0, 100, 2, 103);
|
||
sTableData = table.getSelectionString(activeCell, handleSelectionRange);
|
||
|
||
assert.strictEqual(sTableData, tableName, "check selection table data from column1 to column2");
|
||
|
||
activeCell = new AscCommon.CellBase(10, 10);
|
||
handleSelectionRange = new Asc.Range(0, 99, 1, 103);
|
||
sTableData = table.getSelectionString(activeCell, handleSelectionRange);
|
||
|
||
assert.strictEqual(sTableData, tableName + "[[#All],[Column1]:[Column2]]", "check selection table data from column1 to column2 + header");
|
||
|
||
|
||
activeCell = new AscCommon.CellBase(10, 10);
|
||
handleSelectionRange = new Asc.Range(0, 99, 2, 103);
|
||
sTableData = table.getSelectionString(activeCell, handleSelectionRange);
|
||
|
||
assert.strictEqual(sTableData, tableName + "[#All]", "check all selection table");
|
||
|
||
activeCell = new AscCommon.CellBase(10, 10);
|
||
handleSelectionRange = new Asc.Range(0, 99, 2, 99);
|
||
sTableData = table.getSelectionString(activeCell, handleSelectionRange);
|
||
|
||
assert.strictEqual(sTableData, tableName + "[#Headers]", "check all selection table");
|
||
|
||
assert.strictEqual(table.isTotalsRow(), false, "check total before total added");
|
||
wsView.af_changeFormatTableInfo(tableName, Asc.c_oAscChangeTableStyleInfo.rowTotal, true);
|
||
assert.strictEqual(table.isTotalsRow(), true, "check total added");
|
||
|
||
activeCell = new AscCommon.CellBase(10, 10);
|
||
handleSelectionRange = new Asc.Range(0, 100, 2, 104);
|
||
sTableData = table.getSelectionString(activeCell, handleSelectionRange);
|
||
|
||
assert.strictEqual(sTableData, tableName + "[[#Data],[#Totals]]", "check data + totals selection table");
|
||
|
||
//Table5[[#Data];[#Totals];[Column1]:[Column2]]
|
||
activeCell = new AscCommon.CellBase(10, 10);
|
||
handleSelectionRange = new Asc.Range(0, 100, 1, 104);
|
||
sTableData = table.getSelectionString(activeCell, handleSelectionRange);
|
||
|
||
assert.strictEqual(sTableData, tableName + "[[#Data],[#Totals],[Column1]:[Column2]]", "check data + totals selection table");
|
||
|
||
//Table5[[#All];[Column1]]
|
||
activeCell = new AscCommon.CellBase(10, 10);
|
||
handleSelectionRange = new Asc.Range(0, 99, 0, 104);
|
||
sTableData = table.getSelectionString(activeCell, handleSelectionRange);
|
||
|
||
assert.strictEqual(sTableData, tableName + "[[#All],[Column1]]", "check all column1 selection table");
|
||
|
||
|
||
//Table5[[#All];[Column1]:[Column2]]
|
||
activeCell = new AscCommon.CellBase(10, 10);
|
||
handleSelectionRange = new Asc.Range(0, 99, 1, 104);
|
||
sTableData = table.getSelectionString(activeCell, handleSelectionRange);
|
||
|
||
assert.strictEqual(sTableData, tableName + "[[#All],[Column1]:[Column2]]", "check all column1:column2 selection table");
|
||
|
||
//Table5[[#Headers];[#Data];[Column1]:[Column2]]
|
||
activeCell = new AscCommon.CellBase(10, 10);
|
||
handleSelectionRange = new Asc.Range(0, 99, 1, 103);
|
||
sTableData = table.getSelectionString(activeCell, handleSelectionRange);
|
||
|
||
assert.strictEqual(sTableData, tableName + "[[#Headers],[#Data],[Column1]:[Column2]]", "check headers + data + column1:column2 selection table");
|
||
|
||
//@
|
||
//Table5[@]
|
||
activeCell = new AscCommon.CellBase(101, 4);
|
||
handleSelectionRange = new Asc.Range(0, 101, 2, 101);
|
||
sTableData = table.getSelectionString(activeCell, handleSelectionRange);
|
||
|
||
assert.strictEqual(sTableData, tableName + "[@]", "check intersection all row");
|
||
|
||
//Table5[@[Column1]:[Column2]]
|
||
activeCell = new AscCommon.CellBase(101, 4);
|
||
handleSelectionRange = new Asc.Range(0, 101, 1, 101);
|
||
sTableData = table.getSelectionString(activeCell, handleSelectionRange);
|
||
|
||
assert.strictEqual(sTableData, tableName + "[@[Column1]:[Column2]]", "check intersection column1:column2 row");
|
||
|
||
//Table5[@Column1]
|
||
activeCell = new AscCommon.CellBase(101, 4);
|
||
handleSelectionRange = new Asc.Range(0, 101, 0, 101);
|
||
sTableData = table.getSelectionString(activeCell, handleSelectionRange);
|
||
|
||
assert.strictEqual(sTableData, tableName + "[@Column1]", "check intersection column1 row");
|
||
|
||
//Table5[#Headers]
|
||
activeCell = new AscCommon.CellBase(99, 4);
|
||
handleSelectionRange = new Asc.Range(0, 99, 2, 99);
|
||
sTableData = table.getSelectionString(activeCell, handleSelectionRange);
|
||
|
||
assert.strictEqual(sTableData, tableName + "[#Headers]", "check selection Headers");
|
||
|
||
// Table5[[#Headers],[#Data]]
|
||
activeCell = new AscCommon.CellBase(99, 4);
|
||
handleSelectionRange = new Asc.Range(0, 99, 2, 103);
|
||
sTableData = table.getSelectionString(activeCell, handleSelectionRange);
|
||
|
||
assert.strictEqual(sTableData, tableName + "[[#Headers],[#Data]]", "check selection Headers Data");
|
||
|
||
|
||
clearData(0, 99, 0, 105);
|
||
});
|
||
|
||
QUnit.test('Table values/values for edit tests', function (assert) {
|
||
/*This test checks whether the string is parsed and changed correctly when working with tables */
|
||
let array;
|
||
ws.getRange2("A100:C103").setValue("1");
|
||
|
||
let tableOptions = new AscCommonExcel.AddFormatTableOptions();
|
||
tableOptions.range = "A100:C103";
|
||
api.asc_addAutoFilter("TableStyleMedium2", tableOptions); // create table in A100:C103 range
|
||
|
||
let tables = wsView.model.autoFilters.getTablesIntersectionRange(new Asc.Range(0, 100, 0, 100));
|
||
assert.strictEqual(tables.length, 1, "compare tables length");
|
||
|
||
let table = tables[0];
|
||
let tableName = table.DisplayName; // due to the fact that other tables are used in file, get the name of the one we need by this way
|
||
wsView.af_changeFormatTableInfo(tableName, Asc.c_oAscChangeTableStyleInfo.rowTotal, true);
|
||
|
||
// calc res check
|
||
let cellWithFormula = new AscCommonExcel.CCellWithFormula(ws, 101, 5);
|
||
let oParser = new AscCommonExcel.parserFormula(tableName + "[@]", cellWithFormula, ws);
|
||
assert.ok(oParser.parse());
|
||
array = oParser.calculate();
|
||
assert.strictEqual(array.getValueByRowCol(0, 0).getValue(), 1, 'Result of Table[@][0,0]');
|
||
assert.strictEqual(array.getValueByRowCol(0, 1).getValue(), 1, 'Result of Table[@][0,1]');
|
||
assert.strictEqual(array.getValueByRowCol(0, 2).getValue(), 1, 'Result of Table[@][0,2]');
|
||
|
||
// value for edit and formula in cell check
|
||
resCell = ws.getRange4(101, 5);
|
||
resCell.setValue("=" + tableName +"[@]");
|
||
|
||
assert.strictEqual(resCell.getValueForEdit(), "=" + tableName + "[@]", "Value for edit in cell after Table[@] is typed");
|
||
assert.strictEqual(resCell.getFormula(), tableName + "[#This Row]", "Formula in cell after Table[@] is typed");
|
||
|
||
|
||
// calc res check
|
||
cellWithFormula = new AscCommonExcel.CCellWithFormula(ws, 101, 10);
|
||
oParser = new AscCommonExcel.parserFormula(tableName + "[#This Row]", cellWithFormula, ws);
|
||
assert.ok(oParser.parse());
|
||
array = oParser.calculate();
|
||
assert.strictEqual(array.getValueByRowCol(0, 0).getValue(), 1, 'Result of Table[#This Row][0,0]');
|
||
assert.strictEqual(array.getValueByRowCol(0, 1).getValue(), 1, 'Result of Table[#This Row][0,1]');
|
||
assert.strictEqual(array.getValueByRowCol(0, 2).getValue(), 1, 'Result of Table[#This Row][0,2]');
|
||
|
||
// value for edit and formula in cell check
|
||
resCell = ws.getRange4(101, 10);
|
||
resCell.setValue("=" + tableName +"[#This Row]");
|
||
|
||
assert.strictEqual(resCell.getValueForEdit(), "=" + tableName + "[@]", "Value for edit in cell after Table[#This Row] is typed");
|
||
assert.strictEqual(resCell.getFormula(), tableName + "[#This Row]", "Formula in cell after Table[#This Row] is typed");
|
||
|
||
// =Table[[#This Row]] => =Table[@]
|
||
// calc res check
|
||
cellWithFormula = new AscCommonExcel.CCellWithFormula(ws, 101, 15);
|
||
oParser = new AscCommonExcel.parserFormula(tableName + "[[#This Row]]", cellWithFormula, ws);
|
||
assert.ok(oParser.parse());
|
||
array = oParser.calculate();
|
||
assert.strictEqual(array.getValueByRowCol(0, 0).getValue(), 1, 'Result of Table[[#This Row]][0,0]');
|
||
assert.strictEqual(array.getValueByRowCol(0, 1).getValue(), 1, 'Result of Table[[#This Row]][0,1]');
|
||
assert.strictEqual(array.getValueByRowCol(0, 2).getValue(), 1, 'Result of Table[[#This Row]][0,2]');
|
||
|
||
// value for edit and formula in cell check
|
||
resCell = ws.getRange4(101, 15);
|
||
resCell.setValue("=" + tableName +"[[#This Row]]");
|
||
|
||
assert.strictEqual(resCell.getValueForEdit(), "=" + tableName + "[@]", "Value for edit in cell after Table[@] is typed");
|
||
assert.strictEqual(resCell.getFormula(), tableName + "[#This Row]", "Formula in cell after Table[@] is typed");
|
||
|
||
|
||
// calc res check
|
||
cellWithFormula = new AscCommonExcel.CCellWithFormula(ws, 101, 20);
|
||
oParser = new AscCommonExcel.parserFormula(tableName + "[@Column1]", cellWithFormula, ws);
|
||
assert.ok(oParser.parse());
|
||
assert.strictEqual(oParser.calculate().getValue().getValue(), 1, 'Result of Table[@Column1]');
|
||
|
||
// value for edit and formula in cell check
|
||
resCell = ws.getRange4(101, 20);
|
||
resCell.setValue("=" + tableName +"[@Column1]");
|
||
|
||
assert.strictEqual(resCell.getValueForEdit(), "=" + tableName + "[@Column1]", "Value for edit in cell after Table[@Column1] is typed");
|
||
assert.strictEqual(resCell.getFormula(), tableName + "[[#This Row],[Column1]]", "Formula in cell after Table[@Column1] is typed");
|
||
|
||
|
||
// calc res check
|
||
cellWithFormula = new AscCommonExcel.CCellWithFormula(ws, 101, 25);
|
||
oParser = new AscCommonExcel.parserFormula(tableName + "[[#This Row],[Column1]]", cellWithFormula, ws);
|
||
assert.ok(oParser.parse());
|
||
assert.strictEqual(oParser.calculate().getValue().getValue(), 1, 'Result of Table[[#This Row],[Column1]]');
|
||
|
||
// value for edit and formula in cell check
|
||
resCell = ws.getRange4(101, 25);
|
||
resCell.setValue("=" + tableName +"[[#This Row],[Column1]]");
|
||
|
||
assert.strictEqual(resCell.getValueForEdit(), "=" + tableName + "[@Column1]", "Value for edit in cell after Table[[#This Row],[Column1]] is typed");
|
||
assert.strictEqual(resCell.getFormula(), tableName + "[[#This Row],[Column1]]", "Formula in cell after Table[[#This Row],[Column1]] is typed");
|
||
|
||
|
||
// calc res check
|
||
cellWithFormula = new AscCommonExcel.CCellWithFormula(ws, 101, 30);
|
||
oParser = new AscCommonExcel.parserFormula(tableName + "[[Column1]:[Column2]]", cellWithFormula, ws);
|
||
assert.ok(oParser.parse());
|
||
array = oParser.calculate();
|
||
assert.strictEqual(array.getValueByRowCol(0, 0).getValue(), 1, 'Result of Table[[Column1]:[Column2]][0,0]');
|
||
assert.strictEqual(array.getValueByRowCol(0, 1).getValue(), 1, 'Result of Table[[Column1]:[Column2]][0,1]');
|
||
|
||
// value for edit and formula in cell check
|
||
resCell = ws.getRange4(101, 30);
|
||
resCell.setValue("=" + tableName +"[[Column1]:[Column2]]");
|
||
|
||
assert.strictEqual(resCell.getValueForEdit(), "=" + tableName + "[[Column1]:[Column2]]", "Value for edit in cell after Table[[Column1]:[Column2]] is typed");
|
||
assert.strictEqual(resCell.getFormula(), tableName + "[[Column1]:[Column2]]", "Formula in cell after Table[[Column1]:[Column2]] is typed");
|
||
|
||
|
||
// calc res check
|
||
cellWithFormula = new AscCommonExcel.CCellWithFormula(ws, 101, 30);
|
||
oParser = new AscCommonExcel.parserFormula(tableName + "[[Column1]:[Column2]]", cellWithFormula, ws);
|
||
assert.ok(oParser.parse());
|
||
array = oParser.calculate();
|
||
assert.strictEqual(array.getValueByRowCol(0, 0).getValue(), 1, 'Result of Table[[Column1]:[Column3]][0,0]');
|
||
assert.strictEqual(array.getValueByRowCol(0, 1).getValue(), 1, 'Result of Table[[Column1]:[Column3]][0,1]');
|
||
|
||
// value for edit and formula in cell check
|
||
resCell = ws.getRange4(101, 30);
|
||
resCell.setValue("=" + tableName +"[[Column1]:[Column3]]");
|
||
|
||
assert.strictEqual(resCell.getValueForEdit(), "=" + tableName + "[[Column1]:[Column3]]", "Value for edit in cell after Table[[Column1]:[Column3]] is typed");
|
||
assert.strictEqual(resCell.getFormula(), tableName + "[[Column1]:[Column3]]", "Formula in cell after Table[[Column1]:[Column3]] is typed");
|
||
|
||
|
||
// calc res check
|
||
cellWithFormula = new AscCommonExcel.CCellWithFormula(ws, 101, 30);
|
||
oParser = new AscCommonExcel.parserFormula(tableName + "[[Column1]:[Column345]]", cellWithFormula, ws);
|
||
assert.ok(oParser.parse() === false);
|
||
array = oParser.calculate();
|
||
assert.strictEqual(array.type, AscCommonExcel.cElementType.error, 'Result of Table[[Column1]:[Column345]]');
|
||
assert.strictEqual(array.value, "#NAME?", 'Result of Table[[Column1]:[Column345]]');
|
||
|
||
|
||
// calc res check
|
||
cellWithFormula = new AscCommonExcel.CCellWithFormula(ws, 101, 30);
|
||
oParser = new AscCommonExcel.parserFormula(tableName + "[@[Column1]:[Column2]]", cellWithFormula, ws);
|
||
assert.ok(oParser.parse());
|
||
array = oParser.calculate();
|
||
assert.strictEqual(array.getValueByRowCol(0, 0).getValue(), 1, 'Result of Table[@[Column1]:[Column2]][0,0]');
|
||
assert.strictEqual(array.getValueByRowCol(0, 1).getValue(), 1, 'Result of Table[@[Column1]:[Column2]][0,1]');
|
||
|
||
// value for edit and formula in cell check
|
||
resCell = ws.getRange4(101, 30);
|
||
resCell.setValue("=" + tableName +"[@[Column1]:[Column2]]");
|
||
|
||
assert.strictEqual(resCell.getValueForEdit(), "=" + tableName + "[@[Column1]:[Column2]]", "Value for edit in cell after Table[@[Column1]:[Column2]] is typed");
|
||
assert.strictEqual(resCell.getFormula(), tableName + "[[#This Row],[Column1]:[Column2]]", "Formula in cell after Table[@[Column1]:[Column2]] is typed");
|
||
|
||
|
||
// calc res check
|
||
cellWithFormula = new AscCommonExcel.CCellWithFormula(ws, 101, 35);
|
||
oParser = new AscCommonExcel.parserFormula(tableName + "[[#This Row],[Column1]:[Column2]]", cellWithFormula, ws);
|
||
assert.ok(oParser.parse());
|
||
array = oParser.calculate();
|
||
assert.strictEqual(array.getValueByRowCol(0, 0).getValue(), 1, 'Result of Table[[#This Row],[Column1]:[Column2]][0,0]');
|
||
assert.strictEqual(array.getValueByRowCol(0, 1).getValue(), 1, 'Result of Table[[#This Row],[Column1]:[Column2]][0,1]');
|
||
|
||
// value for edit and formula in cell check
|
||
resCell = ws.getRange4(101, 35);
|
||
resCell.setValue("=" + tableName +"[[#This Row],[Column1]:[Column2]]");
|
||
|
||
assert.strictEqual(resCell.getValueForEdit(), "=" + tableName + "[@[Column1]:[Column2]]", "Value for edit in cell after Table[[#This Row],[Column1]:[Column2]] is typed");
|
||
assert.strictEqual(resCell.getFormula(), tableName + "[[#This Row],[Column1]:[Column2]]", "Formula in cell after Table[[#This Row],[Column1]:[Column2]] is typed");
|
||
|
||
|
||
// calc res check
|
||
cellWithFormula = new AscCommonExcel.CCellWithFormula(ws, 101, 40);
|
||
oParser = new AscCommonExcel.parserFormula(tableName + "[[#This Row],[Column1]:[Column2]]", cellWithFormula, ws);
|
||
assert.ok(oParser.parse());
|
||
array = oParser.calculate();
|
||
assert.strictEqual(array.getValueByRowCol(0, 0).getValue(), 1, 'Result of Table[[#This Row],[Column1]:[Column2]][0,0]');
|
||
assert.strictEqual(array.getValueByRowCol(0, 1).getValue(), 1, 'Result of Table[[#This Row],[Column1]:[Column2]][0,1]');
|
||
|
||
// value for edit and formula in cell check
|
||
resCell = ws.getRange4(101, 40);
|
||
resCell.setValue("=" + tableName +"[[#This Row],[Column1]:[Column2]]");
|
||
|
||
assert.strictEqual(resCell.getValueForEdit(), "=" + tableName + "[@[Column1]:[Column2]]", "Value for edit in cell after Table[[#This Row],[Column1]:[Column2]] is typed");
|
||
assert.strictEqual(resCell.getFormula(), tableName + "[[#This Row],[Column1]:[Column2]]", "Formula in cell after Table[[#This Row],[Column1]:[Column2]] is typed");
|
||
|
||
|
||
// calc res check
|
||
cellWithFormula = new AscCommonExcel.CCellWithFormula(ws, 101, 45);
|
||
oParser = new AscCommonExcel.parserFormula(tableName + "[@[Column1]]", cellWithFormula, ws);
|
||
assert.ok(oParser.parse());
|
||
assert.strictEqual(oParser.calculate().getValue().getValue(), 1, 'Result of Table[@[Column1]]');
|
||
|
||
// value for edit and formula in cell check
|
||
resCell = ws.getRange4(101, 45);
|
||
resCell.setValue("=" + tableName +"[@[Column1]]");
|
||
|
||
assert.strictEqual(resCell.getValueForEdit(), "=" + tableName + "[@Column1]", "Value for edit in cell after Table[@[Column1]] is typed");
|
||
assert.strictEqual(resCell.getFormula(), tableName + "[[#This Row],[Column1]]", "Formula in cell after Table[@[Column1]] is typed");
|
||
|
||
|
||
// calc res check
|
||
cellWithFormula = new AscCommonExcel.CCellWithFormula(ws, 101, 50);
|
||
oParser = new AscCommonExcel.parserFormula(tableName + "[#Headers]", cellWithFormula, ws);
|
||
assert.ok(oParser.parse());
|
||
array = oParser.calculate();
|
||
assert.strictEqual(array.getValueByRowCol(0, 0).getValue(), "Column1", 'Result of Table[#Headers][0,0]');
|
||
assert.strictEqual(array.getValueByRowCol(0, 1).getValue(), "Column2", 'Result of Table[#Headers][0,1]');
|
||
assert.strictEqual(array.getValueByRowCol(0, 2).getValue(), "Column3", 'Result of Table[#Headers][0,2]');
|
||
|
||
// value for edit and formula in cell check
|
||
resCell = ws.getRange4(101, 50);
|
||
resCell.setValue("=" + tableName +"[#Headers]");
|
||
|
||
assert.strictEqual(resCell.getValueForEdit(), "=" + tableName + "[#Headers]", "Value for edit in cell after Table[#Headers] is typed");
|
||
assert.strictEqual(resCell.getFormula(), tableName + "[#Headers]", "Formula in cell after Table[#Headers] is typed");
|
||
|
||
|
||
// calc res check
|
||
cellWithFormula = new AscCommonExcel.CCellWithFormula(ws, 101, 55);
|
||
oParser = new AscCommonExcel.parserFormula(tableName + "[[#Headers]]", cellWithFormula, ws);
|
||
assert.ok(oParser.parse());
|
||
array = oParser.calculate();
|
||
assert.strictEqual(array.getValueByRowCol(0, 0).getValue(), "Column1", 'Result of Table[[#Headers]][0,0]');
|
||
assert.strictEqual(array.getValueByRowCol(0, 1).getValue(), "Column2", 'Result of Table[[#Headers]][0,1]');
|
||
assert.strictEqual(array.getValueByRowCol(0, 2).getValue(), "Column3", 'Result of Table[[#Headers]][0,2]');
|
||
|
||
// value for edit and formula in cell check
|
||
resCell = ws.getRange4(101, 55);
|
||
resCell.setValue("=" + tableName +"[[#Headers]]");
|
||
|
||
assert.strictEqual(resCell.getValueForEdit(), "=" + tableName + "[#Headers]", "Value for edit in cell after Table[[#Headers]] is typed");
|
||
assert.strictEqual(resCell.getFormula(), tableName + "[#Headers]", "Formula in cell after Table[[#Headers]] is typed");
|
||
|
||
|
||
// calc res check
|
||
cellWithFormula = new AscCommonExcel.CCellWithFormula(ws, 101, 60);
|
||
oParser = new AscCommonExcel.parserFormula(tableName + "[[#Headers],[Column2]]", cellWithFormula, ws);
|
||
assert.ok(oParser.parse());
|
||
assert.strictEqual(oParser.calculate().getValue().getValue(), "Column2", 'Result of Table[[#Headers],[Column2]]');
|
||
|
||
// value for edit and formula in cell check
|
||
resCell = ws.getRange4(101, 60);
|
||
resCell.setValue("=" + tableName +"[[#Headers],[Column2]]");
|
||
|
||
assert.strictEqual(resCell.getValueForEdit(), "=" + tableName + "[[#Headers],[Column2]]", "Value for edit in cell after Table[[#Headers],[Column2]] is typed");
|
||
assert.strictEqual(resCell.getFormula(), tableName + "[[#Headers],[Column2]]", "Formula in cell after Table[[#Headers],[Column2]] is typed");
|
||
|
||
|
||
// calc res check
|
||
cellWithFormula = new AscCommonExcel.CCellWithFormula(ws, 101, 65);
|
||
oParser = new AscCommonExcel.parserFormula(tableName + "[[#Headers],[Column2]:[Column3]]", cellWithFormula, ws);
|
||
assert.ok(oParser.parse());
|
||
array = oParser.calculate();
|
||
assert.strictEqual(array.getValueByRowCol(0, 0).getValue(), "Column2", 'Result of Table[[#Headers],[Column2]:[Column3]][0,0]');
|
||
assert.strictEqual(array.getValueByRowCol(0, 1).getValue(), "Column3", 'Result of Table[[#Headers],[Column2]:[Column3]][0,1]');
|
||
|
||
// value for edit and formula in cell check
|
||
resCell = ws.getRange4(101, 65);
|
||
resCell.setValue("=" + tableName +"[[#Headers],[Column2]:[Column3]]");
|
||
|
||
assert.strictEqual(resCell.getValueForEdit(), "=" + tableName + "[[#Headers],[Column2]:[Column3]]", "Value for edit in cell after Table[[#Headers],[Column2]:[Column3]] is typed");
|
||
assert.strictEqual(resCell.getFormula(), tableName + "[[#Headers],[Column2]:[Column3]]", "Formula in cell after Table[[#Headers],[Column2]:[Column3]] is typed");
|
||
|
||
|
||
// calc res check
|
||
cellWithFormula = new AscCommonExcel.CCellWithFormula(ws, 101, 70);
|
||
oParser = new AscCommonExcel.parserFormula(tableName + "[#All]", cellWithFormula, ws);
|
||
assert.ok(oParser.parse());
|
||
array = oParser.calculate();
|
||
assert.strictEqual(array.getValueByRowCol(0, 0).getValue(), "Column1", 'Result of Table[#All][0,0]');
|
||
assert.strictEqual(array.getValueByRowCol(0, 1).getValue(), "Column2", 'Result of Table[#All][0,1]');
|
||
assert.strictEqual(array.getValueByRowCol(1, 0).getValue(), 1, 'Result of Table[#All][1,0]');
|
||
assert.strictEqual(array.getValueByRowCol(1, 1).getValue(), 1, 'Result of Table[#All][1,1]');
|
||
assert.strictEqual(array.getValueByRowCol(3, 0).getValue(), 1, 'Result of Table[#All][3,0]');
|
||
assert.strictEqual(array.getValueByRowCol(3, 1).getValue(), 1, 'Result of Table[#All][3,1]');
|
||
|
||
// value for edit and formula in cell check
|
||
resCell = ws.getRange4(101, 70);
|
||
resCell.setValue("=" + tableName +"[#All]");
|
||
|
||
assert.strictEqual(resCell.getValueForEdit(), "=" + tableName + "[#All]", "Value for edit in cell after Table[#All] is typed");
|
||
assert.strictEqual(resCell.getFormula(), tableName + "[#All]", "Formula in cell after Table[#All] is typed");
|
||
|
||
|
||
// calc res check
|
||
cellWithFormula = new AscCommonExcel.CCellWithFormula(ws, 101, 75);
|
||
oParser = new AscCommonExcel.parserFormula(tableName + "[[#All]]", cellWithFormula, ws);
|
||
assert.ok(oParser.parse());
|
||
array = oParser.calculate();
|
||
assert.strictEqual(array.getValueByRowCol(0, 0).getValue(), "Column1", 'Result of Table[[#All]][0,0]');
|
||
assert.strictEqual(array.getValueByRowCol(0, 1).getValue(), "Column2", 'Result of Table[[#All]][0,1]');
|
||
assert.strictEqual(array.getValueByRowCol(1, 0).getValue(), 1, 'Result of Table[[#All]][1,0]');
|
||
assert.strictEqual(array.getValueByRowCol(1, 1).getValue(), 1, 'Result of Table[[#All]][1,1]');
|
||
assert.strictEqual(array.getValueByRowCol(3, 0).getValue(), 1, 'Result of Table[[#All]][3,0]');
|
||
assert.strictEqual(array.getValueByRowCol(3, 1).getValue(), 1, 'Result of Table[[#All]][3,1]');
|
||
|
||
// value for edit and formula in cell check
|
||
resCell = ws.getRange4(101, 75);
|
||
resCell.setValue("=" + tableName +"[[#All]]");
|
||
|
||
assert.strictEqual(resCell.getValueForEdit(), "=" + tableName + "[#All]", "Value for edit in cell after Table[[#All]] is typed");
|
||
assert.strictEqual(resCell.getFormula(), tableName + "[#All]", "Formula in cell after Table[[#All]] is typed");
|
||
|
||
|
||
// calc res check
|
||
cellWithFormula = new AscCommonExcel.CCellWithFormula(ws, 101, 80);
|
||
oParser = new AscCommonExcel.parserFormula(tableName + "[#Data]", cellWithFormula, ws);
|
||
assert.ok(oParser.parse());
|
||
array = oParser.calculate();
|
||
assert.strictEqual(array.getValueByRowCol(0, 0).getValue(), 1, 'Result of Table[#Data][0,0]');
|
||
assert.strictEqual(array.getValueByRowCol(0, 1).getValue(), 1, 'Result of Table[#Data][0,1]');
|
||
assert.strictEqual(array.getValueByRowCol(1, 0).getValue(), 1, 'Result of Table[#Data][1,0]');
|
||
assert.strictEqual(array.getValueByRowCol(1, 1).getValue(), 1, 'Result of Table[#Data][1,1]');
|
||
assert.strictEqual(array.getValueByRowCol(2, 0).getValue(), 1, 'Result of Table[#Data][2,0]');
|
||
assert.strictEqual(array.getValueByRowCol(2, 1).getValue(), 1, 'Result of Table[#Data][2,1]');
|
||
|
||
// value for edit and formula in cell check
|
||
resCell = ws.getRange4(101, 80);
|
||
resCell.setValue("=" + tableName +"[#Data]");
|
||
|
||
assert.strictEqual(resCell.getValueForEdit(), "=" + tableName +"[#Data]", "Value for edit in cell after Table[#Data] is typed");
|
||
assert.strictEqual(resCell.getFormula(), tableName +"[#Data]", "Formula in cell after Table[#Data] is typed");
|
||
|
||
|
||
// calc res check
|
||
cellWithFormula = new AscCommonExcel.CCellWithFormula(ws, 101, 85);
|
||
oParser = new AscCommonExcel.parserFormula(tableName + "[[#Data]]", cellWithFormula, ws);
|
||
assert.ok(oParser.parse());
|
||
array = oParser.calculate();
|
||
assert.strictEqual(array.getValueByRowCol(0, 0).getValue(), 1, 'Result of Table[[#Data]][0,0]');
|
||
assert.strictEqual(array.getValueByRowCol(0, 1).getValue(), 1, 'Result of Table[[#Data]][0,1]');
|
||
assert.strictEqual(array.getValueByRowCol(1, 0).getValue(), 1, 'Result of Table[[#Data]][1,0]');
|
||
assert.strictEqual(array.getValueByRowCol(1, 1).getValue(), 1, 'Result of Table[[#Data]][1,1]');
|
||
assert.strictEqual(array.getValueByRowCol(2, 0).getValue(), 1, 'Result of Table[[#Data]][2,0]');
|
||
assert.strictEqual(array.getValueByRowCol(2, 1).getValue(), 1, 'Result of Table[[#Data]][2,1]');
|
||
|
||
// value for edit and formula in cell check
|
||
resCell = ws.getRange4(101, 85);
|
||
resCell.setValue("=" + tableName +"[[#Data]]");
|
||
|
||
assert.strictEqual(resCell.getValueForEdit(), "=" + tableName + "[#Data]", "Value for edit in cell after Table[[#Data]] is typed");
|
||
assert.strictEqual(resCell.getFormula(), tableName + "[#Data]", "Formula in cell after Table[[#Data]] is typed");
|
||
|
||
|
||
// calc res check
|
||
cellWithFormula = new AscCommonExcel.CCellWithFormula(ws, 101, 90);
|
||
oParser = new AscCommonExcel.parserFormula(tableName + "[[#Totals]]", cellWithFormula, ws);
|
||
assert.ok(oParser.parse());
|
||
array = oParser.calculate();
|
||
assert.strictEqual(array.getValueByRowCol(0, 0).getValue(), "Summary", 'Result of Table[[#Totals]][0,0]');
|
||
|
||
// value for edit and formula in cell check
|
||
resCell = ws.getRange4(101, 90);
|
||
resCell.setValue("=" + tableName +"[[#Totals]]");
|
||
|
||
assert.strictEqual(resCell.getValueForEdit(), "=" + tableName + "[#Totals]", "Value for edit in cell after Table[#Totals]] is typed");
|
||
assert.strictEqual(resCell.getFormula(), tableName + "[#Totals]", "Formula in cell after Table[[#Totals]] is typed");
|
||
|
||
|
||
// calc res check
|
||
cellWithFormula = new AscCommonExcel.CCellWithFormula(ws, 101, 95);
|
||
oParser = new AscCommonExcel.parserFormula(tableName + "[[#Data],[#Totals]]", cellWithFormula, ws);
|
||
assert.ok(oParser.parse());
|
||
array = oParser.calculate();
|
||
assert.strictEqual(array.getValueByRowCol(0, 0).getValue(), 1, 'Result of Table[[#Data],[#Totals]][0,0]');
|
||
assert.strictEqual(array.getValueByRowCol(0, 1).getValue(), 1, 'Result of Table[[#Data],[#Totals]][0,1]');
|
||
assert.strictEqual(array.getValueByRowCol(1, 0).getValue(), 1, 'Result of Table[[#Data],[#Totals]][1,0]');
|
||
assert.strictEqual(array.getValueByRowCol(1, 1).getValue(), 1, 'Result of Table[[#Data],[#Totals]][1,1]');
|
||
assert.strictEqual(array.getValueByRowCol(2, 0).getValue(), 1, 'Result of Table[[#Data],[#Totals]][2,0]');
|
||
assert.strictEqual(array.getValueByRowCol(2, 1).getValue(), 1, 'Result of Table[[#Data],[#Totals]][2,1]');
|
||
assert.strictEqual(array.getValueByRowCol(4, 0).getValue(), "Summary", 'Result of Table[[#Data],[#Totals]][4,0]');
|
||
|
||
// value for edit and formula in cell check
|
||
resCell = ws.getRange4(101, 95);
|
||
resCell.setValue("=" + tableName +"[[#Data],[#Totals]]");
|
||
|
||
assert.strictEqual(resCell.getValueForEdit(), "=" + tableName + "[[#Data],[#Totals]]", "Value for edit in cell after Table[[#Data],[#Totals]] is typed");
|
||
assert.strictEqual(resCell.getFormula(), tableName + "[[#Data],[#Totals]]", "Formula in cell after Table[[#Data],[#Totals]] is typed");
|
||
|
||
|
||
// =Table3[[#This Row],[#Data]]
|
||
// calc res check
|
||
cellWithFormula = new AscCommonExcel.CCellWithFormula(ws, 101, 100);
|
||
oParser = new AscCommonExcel.parserFormula(tableName + "[[#This Row],[#Data]]", cellWithFormula, ws);
|
||
// assert.ok(oParser.parse()); // false
|
||
array = oParser.calculate();
|
||
assert.strictEqual(oParser.calculate().getValue(), "#NAME?", 'Result of Table[[#This Row],[#Data]]');
|
||
|
||
// value for edit and formula in cell check
|
||
resCell = ws.getRange4(101, 100);
|
||
resCell.setValue("=" + tableName +"[[#This Row],[#Data]]");
|
||
|
||
assert.strictEqual(resCell.getValueForEdit(), "", "Value for edit in cell after Table[[#This Row],[#Data]] is typed");
|
||
assert.strictEqual(resCell.getFormula(), "", "Formula in cell after Table[[#This Row],[#Data]] is typed");
|
||
|
||
|
||
// =Table3[[#This Row],[#All]]
|
||
// calc res check
|
||
cellWithFormula = new AscCommonExcel.CCellWithFormula(ws, 101, 105);
|
||
oParser = new AscCommonExcel.parserFormula(tableName + "[[#This Row],[#All]]", cellWithFormula, ws);
|
||
// assert.ok(oParser.parse()); // false
|
||
array = oParser.calculate();
|
||
assert.strictEqual(oParser.calculate().getValue(), "#NAME?", 'Result of Table[[#This Row],[#All]]');
|
||
|
||
// value for edit and formula in cell check
|
||
resCell = ws.getRange4(101, 105);
|
||
resCell.setValue("=" + tableName +"[[#This Row],[#All]]");
|
||
|
||
assert.strictEqual(resCell.getValueForEdit(), "", "Value for edit in cell after Table[[#This Row],[#All]] is typed");
|
||
assert.strictEqual(resCell.getFormula(), "", "Formula in cell after Table[[#This Row],[#All]] is typed");
|
||
|
||
|
||
// =Table3[[#Headers],[#Data]]
|
||
// calc res check
|
||
cellWithFormula = new AscCommonExcel.CCellWithFormula(ws, 101, 90);
|
||
oParser = new AscCommonExcel.parserFormula(tableName + "[[#Headers],[#Data]]", cellWithFormula, ws);
|
||
assert.ok(oParser.parse());
|
||
array = oParser.calculate();
|
||
assert.strictEqual(array.getValueByRowCol(0, 0).getValue(), "Column1", 'Result of Table[[#Headers],[#Data]][0,0]');
|
||
assert.strictEqual(array.getValueByRowCol(0, 1).getValue(), "Column2", 'Result of Table[[#Headers],[#Data]][0,1]');
|
||
assert.strictEqual(array.getValueByRowCol(0, 2).getValue(), "Column3", 'Result of Table[[#Headers],[#Data]][0,2]');
|
||
assert.strictEqual(array.getValueByRowCol(1, 0).getValue(), 1, 'Result of Table[[#Headers],[#Data]][1,0]');
|
||
assert.strictEqual(array.getValueByRowCol(1, 1).getValue(), 1, 'Result of Table[[#Headers],[#Data]][1,1]');
|
||
assert.strictEqual(array.getValueByRowCol(2, 0).getValue(), 1, 'Result of Table[[#Headers],[#Data]][2,0]');
|
||
assert.strictEqual(array.getValueByRowCol(2, 1).getValue(), 1, 'Result of Table[[#Headers],[#Data]][2,1]');
|
||
|
||
// value for edit and formula in cell check
|
||
resCell = ws.getRange4(101, 90);
|
||
resCell.setValue("=" + tableName +"[[#Headers],[#Data]]");
|
||
|
||
assert.strictEqual(resCell.getValueForEdit(), "=" + tableName + "[[#Headers],[#Data]]", "Value for edit in cell after Table[[#Headers],[#Data]] is typed");
|
||
assert.strictEqual(resCell.getFormula(), tableName + "[[#Headers],[#Data]]", "Formula in cell after Table[[#Headers],[#Data]] is typed");
|
||
|
||
// todo
|
||
// This entry is swapped in ms(Data is swapped with Headers) and is written as: =Table[[#Headers],[#Data]] and exactly the same is written to the file
|
||
// Our editor does not have such functionality, but it does not affect the final result of the calculation
|
||
// The only difference is that the string in the cell will differ from ms
|
||
// calc res check
|
||
cellWithFormula = new AscCommonExcel.CCellWithFormula(ws, 101, 95);
|
||
oParser = new AscCommonExcel.parserFormula(tableName + "[[#Data],[#Headers]]", cellWithFormula, ws);
|
||
assert.ok(oParser.parse());
|
||
array = oParser.calculate();
|
||
assert.strictEqual(array.getValueByRowCol(0, 0).getValue(), "Column1", 'Result of Table[[#Data],[#Headers]][0,0]');
|
||
assert.strictEqual(array.getValueByRowCol(0, 1).getValue(), "Column2", 'Result of Table[[#Data],[#Headers]][0,1]');
|
||
assert.strictEqual(array.getValueByRowCol(0, 2).getValue(), "Column3", 'Result of Table[[#Data],[#Headers]][0,2]');
|
||
assert.strictEqual(array.getValueByRowCol(1, 0).getValue(), 1, 'Result of Table[[#Data],[#Headers]][1,0]');
|
||
assert.strictEqual(array.getValueByRowCol(1, 1).getValue(), 1, 'Result of Table[[#Data],[#Headers]][1,1]');
|
||
assert.strictEqual(array.getValueByRowCol(2, 0).getValue(), 1, 'Result of Table[[#Data],[#Headers]][2,0]');
|
||
assert.strictEqual(array.getValueByRowCol(2, 1).getValue(), 1, 'Result of Table[[#Data],[#Headers]][2,1]');
|
||
|
||
// value for edit and formula in cell check
|
||
resCell = ws.getRange4(101, 95);
|
||
resCell.setValue("=" + tableName +"[[#Data],[#Headers]]");
|
||
|
||
//"=" + tableName + "[[#Headers],[#Data]]"
|
||
assert.strictEqual(resCell.getValueForEdit(), "=" + tableName + "[[#Data],[#Headers]]", "Value for edit in cell after Table[[#Data],[#Headers]] is typed");
|
||
assert.strictEqual(resCell.getFormula(), tableName + "[[#Data],[#Headers]]", "Formula in cell after Table[[#Data],[#Headers]] is typed");
|
||
|
||
// for bug 46174
|
||
// calc res check
|
||
cellWithFormula = new AscCommonExcel.CCellWithFormula(ws, 104, 0);
|
||
oParser = new AscCommonExcel.parserFormula("[[Column1]]", cellWithFormula, ws);
|
||
assert.ok(oParser.parse(true));
|
||
array = oParser.calculate();
|
||
assert.strictEqual(array.getValueByRowCol(0, 0).getValue(), 1, 'Short notation. Result of [[Column1]][0,0] inside table');
|
||
assert.strictEqual(array.getValueByRowCol(1, 0).getValue(), 1, 'Short notation. Result of [[Column1]][1,0] inside table');
|
||
assert.strictEqual(array.getValueByRowCol(2, 0).getValue(), 1, 'Short notation. Result of [[Column1]][2,0] inside table');
|
||
assert.strictEqual(array.getValueByRowCol(3, 0).getValue(), 1, 'Short notation. Result of [[Column1]][3,0] inside table');
|
||
|
||
cellWithFormula = new AscCommonExcel.CCellWithFormula(ws, 105, 0);
|
||
oParser = new AscCommonExcel.parserFormula("[[Column1]]", cellWithFormula, ws);
|
||
assert.ok(!oParser.parse(true));
|
||
array = oParser.calculate();
|
||
assert.strictEqual(array.type, AscCommonExcel.cElementType.error, 'Short notation. Result of [[Column1]] outside table');
|
||
|
||
cellWithFormula = new AscCommonExcel.CCellWithFormula(ws, 101, 20);
|
||
oParser = new AscCommonExcel.parserFormula(tableName + "[[Column1]]", cellWithFormula, ws);
|
||
assert.ok(oParser.parse());
|
||
array = oParser.calculate();
|
||
assert.strictEqual(array.getValueByRowCol(0, 0).getValue(), 1, 'Result of [[Column1]][0,0]');
|
||
assert.strictEqual(array.getValueByRowCol(1, 0).getValue(), 1, 'Result of [[Column1]][1,0]');
|
||
assert.strictEqual(array.getValueByRowCol(2, 0).getValue(), 1, 'Result of [[Column1]][2,0]');
|
||
assert.strictEqual(array.getValueByRowCol(3, 0).getValue(), 1, 'Result of [[Column1]][3,0]');
|
||
|
||
// value for edit and formula in cell check
|
||
resCell = ws.getRange4(101, 20);
|
||
resCell.setValue("=" + tableName +"[[Column1]]");
|
||
|
||
assert.strictEqual(resCell.getValueForEdit(), "=" + tableName + "[Column1]", "Value for edit in cell after Table[[Column1]] is typed");
|
||
assert.strictEqual(resCell.getFormula(), tableName + "[Column1]", "Formula in cell after Table[[Column1]] is typed");
|
||
|
||
// short links inside the table(check for correct formula parsing)
|
||
resCell = ws.getRange2("C101");
|
||
cellWithFormula = new AscCommonExcel.CCellWithFormula(ws, 100, 2);
|
||
oParser = new AscCommonExcel.parserFormula("[]", cellWithFormula, ws);
|
||
parseResult = new AscCommonExcel.ParseResult([], []);
|
||
assert.ok(oParser.parse(true, true, parseResult, true));
|
||
assert.ok(oParser.outStack && oParser.outStack[0] && (oParser.outStack[0].type === AscCommonExcel.cElementType.table), "=[] Formula parsing Inside the table");
|
||
|
||
cellWithFormula = new AscCommonExcel.CCellWithFormula(ws, 100, 2);
|
||
oParser = new AscCommonExcel.parserFormula("[Column1]", cellWithFormula, ws);
|
||
parseResult = new AscCommonExcel.ParseResult([], []);
|
||
assert.ok(oParser.parse(true, true, parseResult, true));
|
||
assert.ok(oParser.outStack && oParser.outStack[0] && (oParser.outStack[0].type === AscCommonExcel.cElementType.table), "=[Column1] Formula parsing Inside the table");
|
||
|
||
cellWithFormula = new AscCommonExcel.CCellWithFormula(ws, 100, 2);
|
||
oParser = new AscCommonExcel.parserFormula("[[Column1]:[Column2]]", cellWithFormula, ws);
|
||
parseResult = new AscCommonExcel.ParseResult([], []);
|
||
assert.ok(oParser.parse(true, true, parseResult, true));
|
||
assert.ok(oParser.outStack && oParser.outStack[0] && (oParser.outStack[0].type === AscCommonExcel.cElementType.table), "=[[Column1]:[Column2]] Formula parsing Inside the table");
|
||
|
||
cellWithFormula = new AscCommonExcel.CCellWithFormula(ws, 100, 2);
|
||
oParser = new AscCommonExcel.parserFormula("[@]", cellWithFormula, ws);
|
||
parseResult = new AscCommonExcel.ParseResult([], []);
|
||
assert.ok(oParser.parse(true, true, parseResult, true));
|
||
assert.ok(oParser.outStack && oParser.outStack[0] && (oParser.outStack[0].type === AscCommonExcel.cElementType.table), "=[@] Formula parsing Inside the table");
|
||
|
||
cellWithFormula = new AscCommonExcel.CCellWithFormula(ws, 100, 2);
|
||
oParser = new AscCommonExcel.parserFormula("[@Column1]", cellWithFormula, ws);
|
||
parseResult = new AscCommonExcel.ParseResult([], []);
|
||
assert.ok(oParser.parse(true, true, parseResult, true));
|
||
assert.ok(oParser.outStack && oParser.outStack[0] && (oParser.outStack[0].type === AscCommonExcel.cElementType.table), "=[@Column1] Formula parsing Inside the table");
|
||
|
||
cellWithFormula = new AscCommonExcel.CCellWithFormula(ws, 100, 2);
|
||
oParser = new AscCommonExcel.parserFormula("[@[Column1]:[Column2]]", cellWithFormula, ws);
|
||
parseResult = new AscCommonExcel.ParseResult([], []);
|
||
assert.ok(oParser.parse(true, true, parseResult, true));
|
||
assert.ok(oParser.outStack && oParser.outStack[0] && (oParser.outStack[0].type === AscCommonExcel.cElementType.table), "=[@[Column1]:[Column2]] Formula parsing Inside the table");
|
||
|
||
clearData(0, 99, 0, 105);
|
||
});
|
||
|
||
QUnit.test('Table special characters tests', function (assert) {
|
||
/* This test checks for special characters inside a table, namely column names with escaped characters */
|
||
let array;
|
||
ws.getRange2("A100:C103").setValue("1");
|
||
ws.getRange2("A100").setValue("With a single ' quote");
|
||
ws.getRange2("B100").setValue("With a double '' quote");
|
||
ws.getRange2("C100").setValue("With a special ' @ & ? * / | \ # '' [ ] characters");
|
||
|
||
let tableOptions = new AscCommonExcel.AddFormatTableOptions();
|
||
tableOptions.range = "A100:C103";
|
||
tableOptions.isTitle = true;
|
||
api.asc_addAutoFilter("TableStyleMedium2", tableOptions); // create table in A100:C103 range
|
||
|
||
let tables = wsView.model.autoFilters.getTablesIntersectionRange(new Asc.Range(0, 100, 0, 100));
|
||
assert.strictEqual(tables.length, 1, "compare tables length");
|
||
|
||
let table = tables[0];
|
||
let tableName = table.DisplayName; // due to the fact that other tables are used in file, get the name of the one we need by this way
|
||
wsView.af_changeFormatTableInfo(tableName, Asc.c_oAscChangeTableStyleInfo.rowTotal, true);
|
||
|
||
// calc res check
|
||
cellWithFormula = new AscCommonExcel.CCellWithFormula(ws, 101, 70);
|
||
oParser = new AscCommonExcel.parserFormula(tableName + "[#All]", cellWithFormula, ws);
|
||
assert.ok(oParser.parse());
|
||
array = oParser.calculate();
|
||
assert.strictEqual(array.getValueByRowCol(0, 0).getValue(), "With a single ' quote", 'Result of Table[#All][0,0]');
|
||
assert.strictEqual(array.getValueByRowCol(0, 1).getValue(), "With a double '' quote", 'Result of Table[#All][0,1]');
|
||
assert.strictEqual(array.getValueByRowCol(0, 2).getValue(), "With a special ' @ & ? * / | # '' [ ] characters", 'Result of Table[#All][0,2]');
|
||
assert.strictEqual(array.getValueByRowCol(1, 0).getValue(), 1, 'Result of Table[#All][1,0]');
|
||
assert.strictEqual(array.getValueByRowCol(1, 1).getValue(), 1, 'Result of Table[#All][1,1]');
|
||
assert.strictEqual(array.getValueByRowCol(3, 0).getValue(), 1, 'Result of Table[#All][3,0]');
|
||
assert.strictEqual(array.getValueByRowCol(3, 1).getValue(), 1, 'Result of Table[#All][3,1]');
|
||
|
||
// value for edit and formula in cell check
|
||
resCell = ws.getRange4(101, 70);
|
||
resCell.setValue("=" + tableName +"[#All]");
|
||
|
||
assert.strictEqual(resCell.getValueForEdit(), "=" + tableName + "[#All]", "Value for edit in cell after Table[#All] is typed");
|
||
assert.strictEqual(resCell.getFormula(), tableName + "[#All]", "Formula in cell after Table[#All] is typed");
|
||
|
||
|
||
/* column header check */
|
||
// this pattern is looking for special characters in the string that need to be escaped
|
||
let specialSymbolsPattern = /(['#@\[\]])/g;
|
||
// set selection to the first column header
|
||
let selectedRange = ws.getRange2("A100");
|
||
wsView.setSelection(selectedRange.bbox);
|
||
|
||
let ranges = wsView.model.selectionRange.ranges;
|
||
let valueInCellEditMode = tables[0].getSelectionString(wsView.model.getSelection().activeCell, ranges[0]);
|
||
let expectedValue = tableName + "[[#Headers],[" + ws.getRange2("A100").getValueForEdit().replace(specialSymbolsPattern, "'$1") + "]]";
|
||
|
||
assert.strictEqual(valueInCellEditMode, expectedValue, "Header value in first column. Simulation value for edit in cellEditMode");
|
||
|
||
|
||
// set selection to the second column header
|
||
selectedRange = ws.getRange2("B100");
|
||
wsView.setSelection(selectedRange.bbox);
|
||
|
||
ranges = wsView.model.selectionRange.ranges;
|
||
valueInCellEditMode = tables[0].getSelectionString(wsView.model.getSelection().activeCell, ranges[0]);
|
||
expectedValue = tableName + "[[#Headers],[" + ws.getRange2("B100").getValueForEdit().replace(specialSymbolsPattern, "'$1") + "]]";
|
||
|
||
assert.strictEqual(valueInCellEditMode, expectedValue, "Header value in second column. Simulation value for edit in cellEditMode");
|
||
|
||
|
||
// set selection to the third column header
|
||
selectedRange = ws.getRange2("C100");
|
||
wsView.setSelection(selectedRange.bbox);
|
||
|
||
ranges = wsView.model.selectionRange.ranges;
|
||
valueInCellEditMode = tables[0].getSelectionString(wsView.model.getSelection().activeCell, ranges[0]);
|
||
expectedValue = tableName + "[[#Headers],[" + ws.getRange2("C100").getValueForEdit().replace(specialSymbolsPattern, "'$1") + "]]";
|
||
|
||
assert.strictEqual(valueInCellEditMode, expectedValue, "Header value in third column. Simulation value for edit in cellEditMode");
|
||
|
||
/* full column check */
|
||
// first column select
|
||
selectedRange = ws.getRange2("A101:A103");
|
||
wsView.setSelection(selectedRange.bbox);
|
||
|
||
ranges = wsView.model.selectionRange.ranges;
|
||
valueInCellEditMode = tables[0].getSelectionString(wsView.model.getSelection().activeCell, ranges[0]);
|
||
expectedValue = tableName + "[" + ws.getRange2("A100:A103").getValueForEdit().replace(specialSymbolsPattern, "'$1") + "]";
|
||
|
||
assert.strictEqual(valueInCellEditMode, expectedValue, "First column without header select. Simulation value for edit in cellEditMode");
|
||
|
||
// second column select
|
||
selectedRange = ws.getRange2("B101:B103");
|
||
wsView.setSelection(selectedRange.bbox);
|
||
|
||
ranges = wsView.model.selectionRange.ranges;
|
||
valueInCellEditMode = tables[0].getSelectionString(wsView.model.getSelection().activeCell, ranges[0]);
|
||
expectedValue = tableName + "[" + ws.getRange2("B100:B103").getValueForEdit().replace(specialSymbolsPattern, "'$1") + "]";
|
||
|
||
assert.strictEqual(valueInCellEditMode, expectedValue, "Second column without header select. Simulation value for edit in cellEditMode");
|
||
|
||
// third column select
|
||
selectedRange = ws.getRange2("C101:C103");
|
||
wsView.setSelection(selectedRange.bbox);
|
||
|
||
ranges = wsView.model.selectionRange.ranges;
|
||
valueInCellEditMode = tables[0].getSelectionString(wsView.model.getSelection().activeCell, ranges[0]);
|
||
expectedValue = tableName + "[" + ws.getRange2("C100:C103").getValueForEdit().replace(specialSymbolsPattern, "'$1") + "]";
|
||
|
||
assert.strictEqual(valueInCellEditMode, expectedValue, "Third column without header select. Simulation value for edit in cellEditMode");
|
||
|
||
/* two columns check */
|
||
// first and second column
|
||
selectedRange = ws.getRange2("A101:B103");
|
||
wsView.setSelection(selectedRange.bbox);
|
||
|
||
ranges = wsView.model.selectionRange.ranges;
|
||
valueInCellEditMode = tables[0].getSelectionString(wsView.model.getSelection().activeCell, ranges[0]);
|
||
expectedValue = tableName + "["
|
||
+ "[" + ws.getRange2("A100:A103").getValueForEdit().replace(specialSymbolsPattern, "'$1") + "]:"
|
||
+ "[" + ws.getRange2("B100:B103").getValueForEdit().replace(specialSymbolsPattern, "'$1") + "]"
|
||
+ "]";
|
||
|
||
assert.strictEqual(valueInCellEditMode, expectedValue, "First and second column without header select. Simulation value for edit in cellEditMode");
|
||
|
||
// second and third column
|
||
selectedRange = ws.getRange2("B101:C103");
|
||
wsView.setSelection(selectedRange.bbox);
|
||
|
||
ranges = wsView.model.selectionRange.ranges;
|
||
valueInCellEditMode = tables[0].getSelectionString(wsView.model.getSelection().activeCell, ranges[0]);
|
||
expectedValue = tableName + "["
|
||
+ "[" + ws.getRange2("B100:B103").getValueForEdit().replace(specialSymbolsPattern, "'$1") + "]:"
|
||
+ "[" + ws.getRange2("C100:C103").getValueForEdit().replace(specialSymbolsPattern, "'$1") + "]"
|
||
+ "]";
|
||
|
||
assert.strictEqual(valueInCellEditMode, expectedValue, "Second and third column without header select. Simulation value for edit in cellEditMode");
|
||
|
||
|
||
clearData(0, 99, 0, 105);
|
||
});
|
||
|
||
/* for bug 61856 */
|
||
QUnit.test('Array of arguments check after calling the wizard for the function', function (assert) {
|
||
let resArray;
|
||
|
||
ws.getRange2("D1").setValue("11");
|
||
ws.getRange2("D2").setValue("22");
|
||
ws.getRange2("D3").setValue("33");
|
||
|
||
api.wb.cellEditor = {
|
||
data : {},
|
||
changeCellText: function () {},
|
||
getText: function () {
|
||
return "";
|
||
}
|
||
};
|
||
|
||
api.wb.wsActive = ws.getIndex();
|
||
api.wb.setCellEditMode(true);
|
||
|
||
wb.dependencyFormulas.addDefName("def", "Sheet1!$A$100:$A$102");
|
||
|
||
// api.asc_startWizard();
|
||
let formula = "SUM(D1"
|
||
let parser = new AscCommonExcel.parserFormula(formula, /*formulaParsed.parent*/null, ws);
|
||
let _parseResult = new AscCommonExcel.ParseResult([], []);
|
||
|
||
parser.parse(true, true, _parseResult, true);
|
||
|
||
resArray = _parseResult.getArgumentsValue(formula);
|
||
assert.strictEqual(resArray[0], "D1", 'First argument in "SUM(D1"');
|
||
assert.strictEqual(_parseResult.error, c_oAscError.ID.FrmlParenthesesCorrectCount, 'Error in parseResult for "SUM(D1" formula');
|
||
|
||
|
||
formula = "SUM(D1,"
|
||
parser = new AscCommonExcel.parserFormula(formula, null, ws);
|
||
_parseResult = new AscCommonExcel.ParseResult([], []);
|
||
|
||
parser.parse(true, true, _parseResult, true);
|
||
|
||
resArray = _parseResult.getArgumentsValue(formula);
|
||
assert.strictEqual(resArray[0], "D1", 'First argument in "SUM(D1,"');
|
||
assert.strictEqual(_parseResult.error, c_oAscError.ID.FrmlOperandExpected, 'Error in parseResult for "SUM(D1," formula');
|
||
|
||
|
||
formula = "SUM(D1,D2"
|
||
parser = new AscCommonExcel.parserFormula(formula, null, ws);
|
||
_parseResult = new AscCommonExcel.ParseResult([], []);
|
||
|
||
parser.parse(true, true, _parseResult, true);
|
||
|
||
resArray = _parseResult.getArgumentsValue(formula);
|
||
assert.strictEqual(resArray[0], "D1", 'First argument in "SUM(D1,D2"');
|
||
assert.strictEqual(resArray[1], "D2", 'Second argument in "SUM(D1,D2"');
|
||
assert.strictEqual(_parseResult.error, c_oAscError.ID.FrmlParenthesesCorrectCount, 'Error in parseResult for "SUM(D1,D2" formula');
|
||
|
||
|
||
formula = "SUM(D1,D2)"
|
||
parser = new AscCommonExcel.parserFormula(formula, null, ws);
|
||
_parseResult = new AscCommonExcel.ParseResult([], []);
|
||
|
||
parser.parse(true, true, _parseResult, true);
|
||
|
||
resArray = _parseResult.getArgumentsValue(formula);
|
||
assert.strictEqual(resArray[0], "D1", 'First argument in "SUM(D1,D2)"');
|
||
assert.strictEqual(resArray[1], "D2", 'Second argument in "SUM(D1,D2)"');
|
||
assert.strictEqual(_parseResult.error, undefined, 'Error in parseResult for "SUM(D1,D2)" formula');
|
||
|
||
|
||
formula = "SUM(D1:D2)"
|
||
parser = new AscCommonExcel.parserFormula(formula, null, ws);
|
||
_parseResult = new AscCommonExcel.ParseResult([], []);
|
||
|
||
parser.parse(true, true, _parseResult, true);
|
||
|
||
resArray = _parseResult.getArgumentsValue(formula);
|
||
assert.strictEqual(resArray[0], "D1:D2", 'First argument in "SUM(D1:D2)"');
|
||
assert.strictEqual(_parseResult.error, undefined, 'Error in parseResult for "SUM(D1:D2)" formula');
|
||
|
||
|
||
formula = "SUM(D1:D2,)"
|
||
parser = new AscCommonExcel.parserFormula(formula, null, ws);
|
||
_parseResult = new AscCommonExcel.ParseResult([], []);
|
||
|
||
parser.parse(true, true, _parseResult, true);
|
||
|
||
resArray = _parseResult.getArgumentsValue(formula);
|
||
assert.strictEqual(resArray[0], "D1:D2", 'First argument in "SUM(D1:D2,)"');
|
||
assert.strictEqual(_parseResult.error, undefined, 'Error in parseResult for "SUM(D1:D2,)" formula');
|
||
|
||
|
||
formula = "SUM("
|
||
parser = new AscCommonExcel.parserFormula(formula, null, ws);
|
||
_parseResult = new AscCommonExcel.ParseResult([], []);
|
||
|
||
parser.parse(true, true, _parseResult, true);
|
||
|
||
resArray = _parseResult.getArgumentsValue(formula);
|
||
assert.strictEqual(resArray[0], "", 'First argument in "SUM("');
|
||
assert.strictEqual(_parseResult.error, c_oAscError.ID.FrmlOperandExpected, 'Error in parseResult for "SUM(" formula');
|
||
|
||
|
||
formula = "SUM(1"
|
||
parser = new AscCommonExcel.parserFormula(formula, null, ws);
|
||
_parseResult = new AscCommonExcel.ParseResult([], []);
|
||
|
||
parser.parse(true, true, _parseResult, true);
|
||
|
||
resArray = _parseResult.getArgumentsValue(formula);
|
||
assert.strictEqual(resArray[0], "1", 'First argument in "SUM(1"');
|
||
assert.strictEqual(_parseResult.error, c_oAscError.ID.FrmlParenthesesCorrectCount, 'Error in parseResult for "SUM(1" formula');
|
||
|
||
formula = "SUM(1,D1"
|
||
parser = new AscCommonExcel.parserFormula(formula, null, ws);
|
||
_parseResult = new AscCommonExcel.ParseResult([], []);
|
||
|
||
parser.parse(true, true, _parseResult, true);
|
||
|
||
resArray = _parseResult.getArgumentsValue(formula);
|
||
assert.strictEqual(resArray[0], "1", 'First argument in "SUM(1,D1"');
|
||
assert.strictEqual(resArray[1], "D1", 'Second argument in "SUM(1,D1"');
|
||
assert.strictEqual(_parseResult.error, c_oAscError.ID.FrmlParenthesesCorrectCount, 'Error in parseResult for "SUM(1,D1" formula');
|
||
|
||
|
||
formula = 'SUM(1,D1,"str",TRUE,def'
|
||
parser = new AscCommonExcel.parserFormula(formula, null, ws);
|
||
_parseResult = new AscCommonExcel.ParseResult([], []);
|
||
|
||
parser.parse(true, true, _parseResult, true);
|
||
|
||
resArray = _parseResult.getArgumentsValue(formula);
|
||
assert.strictEqual(resArray[0], "1", 'First argument in "SUM(1,D1,"str",TRUE,def"');
|
||
assert.strictEqual(resArray[1], "D1", 'Second argument in "SUM(1,D1,"str",TRUE,def"');
|
||
assert.strictEqual(resArray[2], "\"str\"", 'Third argument in "SUM(1,D1,"str",TRUE,def"');
|
||
assert.strictEqual(resArray[3], "TRUE", 'Fourth argument in "SUM(1,D1,"str",TRUE,def"');
|
||
assert.strictEqual(resArray[4], "def", 'Fifth argument in "SUM(1,D1,"str",TRUE,def"');
|
||
assert.strictEqual(_parseResult.error, c_oAscError.ID.FrmlParenthesesCorrectCount, 'Error in parseResult for "SUM(1,D1,"str",TRUE,def" formula');
|
||
|
||
// remove all created earlier defNames
|
||
wb.dependencyFormulas._foreachDefName(function(defName) {
|
||
wb.dependencyFormulas.removeDefName(undefined, defName.name);
|
||
});
|
||
|
||
// for bug 61855
|
||
let insertArgsRes = api.wb.insertArgumentsInFormula(["1"], 0, 0, "SUM", true/*bEndInsertArg*/);
|
||
assert.strictEqual(insertArgsRes && insertArgsRes.functionResult, "1", "Calculation result for SUM function when insert first argument in formula");
|
||
|
||
insertArgsRes = api.wb.insertArgumentsInFormula(["1,2"], 1, 0, "SUM", true);
|
||
assert.strictEqual(insertArgsRes && insertArgsRes.functionResult, "3", "Calculation result for SUM function when insert second argument in formula");
|
||
|
||
insertArgsRes = api.wb.insertArgumentsInFormula(["1"], 1, 0, "SUM", true);
|
||
assert.strictEqual(insertArgsRes && insertArgsRes.functionResult, "1", "Calculation result for SUM function when delete second argument in formula");
|
||
|
||
});
|
||
|
||
QUnit.test('autoCompleteFormula', function (assert) {
|
||
let resCell, range, fillRange, autoCompleteRes;
|
||
|
||
ws.getRange2("A1:Z100").cleanAll();
|
||
|
||
let testData = [
|
||
// ['1', 'Test', 'Test1', '01/01/2000']
|
||
['1'],
|
||
['Test'],
|
||
['Test1'],
|
||
['01/01/2000']
|
||
];
|
||
|
||
// Asc cases
|
||
range = ws.getRange2("A1");
|
||
range.fillData(testData);
|
||
// ws.getRange2("A1").setValue("1");
|
||
// ws.getRange2("A2").setValue("Test");
|
||
// ws.getRange2("A3").setValue("Test1");
|
||
// ws.getRange2("A4").setValue("01/01/2000");
|
||
|
||
// c1, r1, c2, r2
|
||
// fillRange = new Asc.Range(0, 0, 0, 3);
|
||
fillRange = ws.getRange2("A1:A4");
|
||
wsView.setSelection(fillRange.bbox);
|
||
wsView._initRowsCount();
|
||
wsView._initColsCount();
|
||
wsView.autoCompleteFormula("SUM");
|
||
|
||
resCell = ws.getRange2("A5");
|
||
assert.strictEqual(resCell.getValueWithFormat(), "36527", "Value after A1:A4 autosum");
|
||
assert.strictEqual(resCell.getValueForEdit(), "=SUM(A1:A4)", "Formula after A1:A4 autosum");
|
||
assert.strictEqual(wsView.model.selectionRange.getLast().getName(), "A1:A5", "Selection after A1:A4 autosum");
|
||
|
||
range = ws.getRange2("B1");
|
||
ws.getRange2("B1").setValue("ds");
|
||
ws.getRange2("B2").setValue("1");
|
||
|
||
// fillRange = new Asc.Range(1, 0, 1, 1);
|
||
fillRange = ws.getRange2("B1:B2");
|
||
wsView.setSelection(fillRange.bbox);
|
||
wsView._initRowsCount();
|
||
wsView._initColsCount();
|
||
wsView.autoCompleteFormula("SUM");
|
||
|
||
resCell = ws.getRange2("B3");
|
||
assert.strictEqual(resCell.getValueWithFormat(), "", "Value after B1:B2 autosum");
|
||
assert.strictEqual(resCell.getValueForEdit(), "", "Formula after B1:B2 autosum");
|
||
assert.strictEqual(wsView.model.selectionRange.getLast().getName(), "B1:B2", "Selection after B1:B2 autosum");
|
||
|
||
|
||
ws.getRange2("C1").setValue("ds");
|
||
ws.getRange2("C2").setValue("1");
|
||
ws.getRange2("C3").setValue("1");
|
||
|
||
// fillRange = new Asc.Range(2, 0, 2, 2);
|
||
fillRange = ws.getRange2("C1:C3");
|
||
wsView.setSelection(fillRange.bbox);
|
||
wsView._initRowsCount();
|
||
wsView._initColsCount();
|
||
wsView.autoCompleteFormula("SUM");
|
||
|
||
resCell = ws.getRange2("C4");
|
||
assert.strictEqual(resCell.getValueWithFormat(), "2", "Value after C1:C3 autosum");
|
||
assert.strictEqual(resCell.getValueForEdit(), "=SUM(C2:C3)", "Formula after C1:C3 autosum");
|
||
assert.strictEqual(wsView.model.selectionRange.getLast().getName(), "C2:C4", "Selection after C1:C3 autosum");
|
||
|
||
|
||
ws.getRange2("D2").setValue("ds");
|
||
ws.getRange2("D4").setValue("1");
|
||
|
||
// fillRange = new Asc.Range(3, 0, 3, 3);
|
||
fillRange = ws.getRange2("D1:D4");
|
||
wsView.setSelection(fillRange.bbox);
|
||
wsView._initRowsCount();
|
||
wsView._initColsCount();
|
||
wsView.autoCompleteFormula("SUM");
|
||
|
||
resCell = ws.getRange2("D5");
|
||
assert.strictEqual(resCell.getValueWithFormat(), "1", "Value after D1:D4 autosum");
|
||
assert.strictEqual(resCell.getValueForEdit(), "=SUM(D1:D4)", "Formula after D1:D4 autosum");
|
||
assert.strictEqual(wsView.model.selectionRange.getLast().getName(), "D1:D5", "Selection after D1:D4 autosum");
|
||
|
||
|
||
ws.getRange2("E1").setValue("ds");
|
||
ws.getRange2("E3").setValue("1");
|
||
ws.getRange2("E4").setValue("");
|
||
|
||
// fillRange = new Asc.Range(4, 0, 4, 3);
|
||
fillRange = ws.getRange2("E1:E4");
|
||
wsView.setSelection(fillRange.bbox);
|
||
wsView._initRowsCount();
|
||
wsView._initColsCount();
|
||
wsView.autoCompleteFormula("SUM");
|
||
|
||
|
||
resCell = ws.getRange2("E4");
|
||
assert.strictEqual(resCell.getValueWithFormat(), "1", "Value after E1:E4 autosum");
|
||
assert.strictEqual(resCell.getValueForEdit(), "=SUM(E3)", "Formula after E1:E4 autosum");
|
||
assert.strictEqual(wsView.model.selectionRange.getLast().getName(), "E3:E4", "Selection after E1:E4 autosum");
|
||
|
||
|
||
ws.getRange2("F1").setValue("ds");
|
||
ws.getRange2("F3").setValue("1");
|
||
ws.getRange2("F4").setValue("1");
|
||
|
||
// fillRange = new Asc.Range(5, 0, 5, 3);
|
||
fillRange = ws.getRange2("F1:F4");
|
||
wsView.setSelection(fillRange.bbox);
|
||
wsView._initRowsCount();
|
||
wsView._initColsCount();
|
||
wsView.autoCompleteFormula("SUM");
|
||
|
||
resCell = ws.getRange2("F5");
|
||
assert.strictEqual(resCell.getValueWithFormat(), "2", "Value after F1:F4 autosum");
|
||
assert.strictEqual(resCell.getValueForEdit(), "=SUM(F3:F4)", "Formula after F1:F4 autosum");
|
||
assert.strictEqual(wsView.model.selectionRange.getLast().getName(), "F3:F5", "Selection after F1:F4 autosum");
|
||
|
||
|
||
ws.getRange2("G2").setValue("ds");
|
||
ws.getRange2("G4").setValue("1");
|
||
ws.getRange2("G5").setValue("1");
|
||
|
||
// fillRange = new Asc.Range(6, 0, 6, 4);
|
||
fillRange = ws.getRange2("G1:G5");
|
||
wsView.setSelection(fillRange.bbox);
|
||
wsView._initRowsCount();
|
||
wsView._initColsCount();
|
||
wsView.autoCompleteFormula("SUM");
|
||
|
||
resCell = ws.getRange2("G6");
|
||
assert.strictEqual(resCell.getValueWithFormat(), "2", "Value after G1:G5 autosum");
|
||
assert.strictEqual(resCell.getValueForEdit(), "=SUM(G1:G5)", "Formula after G1:G5 autosum");
|
||
assert.strictEqual(wsView.model.selectionRange.getLast().getName(), "G1:G6", "Selection after G1:G5 autosum");
|
||
|
||
// col tests
|
||
ws.getRange2("A10").setValue("ds");
|
||
ws.getRange2("B10").setValue("1");
|
||
ws.getRange2("C10").setValue("1");
|
||
|
||
// fillRange = new Asc.Range(0, 9, 2, 9);
|
||
fillRange = ws.getRange2("A10:C10");
|
||
wsView.setSelection(fillRange.bbox);
|
||
wsView._initRowsCount();
|
||
wsView._initColsCount();
|
||
wsView.autoCompleteFormula("SUM");
|
||
|
||
resCell = ws.getRange2("D10");
|
||
assert.strictEqual(resCell.getValueWithFormat(), "2", "Value after A10:C10 autosum");
|
||
assert.strictEqual(resCell.getValueForEdit(), "=SUM(B10:C10)", "Formula after A10:C10 autosum");
|
||
assert.strictEqual(wsView.model.selectionRange.getLast().getName(), "B10:D10", "Selection after A10:C10 autosum");
|
||
|
||
|
||
ws.getRange2("A11").setValue("ds");
|
||
ws.getRange2("B11").setValue("1");
|
||
|
||
// fillRange = new Asc.Range(0, 10, 2, 10);
|
||
fillRange = ws.getRange2("A11:C11");
|
||
wsView.setSelection(fillRange.bbox);
|
||
wsView._initRowsCount();
|
||
wsView._initColsCount();
|
||
autoCompleteRes = wsView.autoCompleteFormula("SUM");
|
||
|
||
resCell = ws.getRange2("C11");
|
||
assert.strictEqual(resCell.getValueWithFormat(), "1", "Value after A11:C11 autosum");
|
||
assert.strictEqual(resCell.getValueForEdit(), "=SUM(B11)", "Formula after A11:C11 autosum");
|
||
assert.strictEqual(wsView.model.selectionRange.getLast().getName(), "B11:C11", "Selection after A11:C11 autosum");
|
||
|
||
|
||
ws.getRange2("B12").setValue("ds");
|
||
ws.getRange2("D12").setValue("1");
|
||
ws.getRange2("E12").setValue("1");
|
||
|
||
// fillRange = new Asc.Range(0, 11, 4, 11);
|
||
fillRange = ws.getRange2("A12:E12");
|
||
wsView.setSelection(fillRange.bbox);
|
||
wsView._initRowsCount();
|
||
wsView._initColsCount();
|
||
autoCompleteRes = wsView.autoCompleteFormula("SUM");
|
||
|
||
resCell = ws.getRange2("F12");
|
||
assert.strictEqual(resCell.getValueWithFormat(), "2", "Value after A12:E12 autosum");
|
||
assert.strictEqual(resCell.getValueForEdit(), "=SUM(A12:E12)", "Formula after A12:E12 autosum");
|
||
assert.strictEqual(wsView.model.selectionRange.getLast().getName(), "A12:F12", "Selection after A12:E12 autosum");
|
||
|
||
// row + col tests
|
||
ws.getRange2("A20").setValue("ds");
|
||
ws.getRange2("A21").setValue("1");
|
||
ws.getRange2("A22").setValue("1");
|
||
ws.getRange2("B20").setValue("ds");
|
||
ws.getRange2("B21").setValue("1");
|
||
ws.getRange2("B23").setValue("1");
|
||
|
||
// fillRange = new Asc.Range(0, 19, 1, 22);
|
||
fillRange = ws.getRange2("A20:B23");
|
||
wsView.setSelection(fillRange.bbox);
|
||
wsView._initRowsCount();
|
||
wsView._initColsCount();
|
||
autoCompleteRes = wsView.autoCompleteFormula("SUM");
|
||
|
||
resCell = ws.getRange2("A24");
|
||
assert.strictEqual(resCell.getValueWithFormat(), "2", "Value after A20:B23 autosum");
|
||
assert.strictEqual(resCell.getValueForEdit(), "=SUM(A21:A23)", "Formula after A20:B23 autosum");
|
||
assert.strictEqual(wsView.model.selectionRange.getLast().getName(), "A21:B24", "Selection after A20:B23 autosum");
|
||
resCell = ws.getRange2("B24");
|
||
assert.strictEqual(resCell.getValueWithFormat(), "2", "Value after A20:B23 autosum");
|
||
assert.strictEqual(resCell.getValueForEdit(), "=SUM(B21:B23)", "Formula after A20:B23 autosum");
|
||
assert.strictEqual(wsView.model.selectionRange.getLast().getName(), "A21:B24", "Selection after A20:B23 autosum");
|
||
|
||
|
||
ws.getRange2("K1").setValue("ds");
|
||
ws.getRange2("L1").setValue("ds");
|
||
ws.getRange2("K3").setValue("1");
|
||
|
||
// fillRange = new Asc.Range(10, 0, 11, 2);
|
||
fillRange = ws.getRange2("K1:L3");
|
||
wsView.setSelection(fillRange.bbox);
|
||
wsView._initRowsCount();
|
||
wsView._initColsCount();
|
||
autoCompleteRes = wsView.autoCompleteFormula("SUM");
|
||
|
||
resCell = ws.getRange2("L3");
|
||
assert.strictEqual(resCell.getValueWithFormat(), "1", "Value after K1:L3 autosum");
|
||
assert.strictEqual(resCell.getValueForEdit(), "=SUM(K3)", "Formula after K1:L3 autosum");
|
||
assert.strictEqual(wsView.model.selectionRange.getLast().getName(), "K3:L3", "Selection after K1:L3 autosum");
|
||
|
||
|
||
ws.getRange2("K5:L10").cleanAll();
|
||
ws.getRange2("K6").setValue("ds");
|
||
ws.getRange2("K8").setValue("1");
|
||
|
||
// fillRange = new Asc.Range(10, 4, 11, 8);
|
||
fillRange = ws.getRange2("K5:L9");
|
||
wsView.setSelection(fillRange.bbox);
|
||
wsView._initRowsCount();
|
||
wsView._initColsCount();
|
||
autoCompleteRes = wsView.autoCompleteFormula("SUM");
|
||
|
||
resCell = ws.getRange2("L8");
|
||
assert.strictEqual(resCell.getValueWithFormat(), "1", "Value after K5:L9 autosum");
|
||
assert.strictEqual(resCell.getValueForEdit(), "=SUM(K8)", "Formula after K5:L9 autosum");
|
||
assert.strictEqual(wsView.model.selectionRange.getLast().getName(), "K8:L9", "Selection after K5:L9 autosum");
|
||
resCell = ws.getRange2("K9");
|
||
assert.strictEqual(resCell.getValueWithFormat(), "1", "Value after K5:L9 autosum");
|
||
assert.strictEqual(resCell.getValueForEdit(), "=SUM(K8)", "Formula after K5:L9 autosum");
|
||
assert.strictEqual(wsView.model.selectionRange.getLast().getName(), "K8:L9", "Selection after K5:L9 autosum");
|
||
resCell = ws.getRange2("L9");
|
||
assert.strictEqual(resCell.getValueWithFormat(), "1", "Value after K5:L9 autosum");
|
||
assert.strictEqual(resCell.getValueForEdit(), "=SUM(K9)", "Formula after K5:L9 autosum");
|
||
assert.strictEqual(wsView.model.selectionRange.getLast().getName(), "K8:L9", "Selection after K5:L9 autosum");
|
||
|
||
|
||
ws.getRange2("A12:M14").cleanAll();
|
||
ws.getRange2("K13").setValue("1");
|
||
ws.getRange2("L13").setValue("1");
|
||
|
||
// fillRange = new Asc.Range(9, 11, 12, 13);
|
||
fillRange = ws.getRange2("A12:M14");
|
||
wsView.setSelection(fillRange.bbox);
|
||
wsView._initRowsCount();
|
||
wsView._initColsCount();
|
||
autoCompleteRes = wsView.autoCompleteFormula("SUM");
|
||
|
||
resCell = ws.getRange2("M13");
|
||
assert.strictEqual(resCell.getValueWithFormat(), "2", "Value after A12:M14 autosum");
|
||
assert.strictEqual(resCell.getValueForEdit(), "=SUM(A13:L13)", "Formula after A12:M14 autosum");
|
||
assert.strictEqual(wsView.model.selectionRange.getLast().getName(), "A13:M14", "Selection after A12:M14 autosum");
|
||
resCell = ws.getRange2("M14");
|
||
assert.strictEqual(resCell.getValueWithFormat(), "2", "Value after A12:M14 autosum");
|
||
assert.strictEqual(resCell.getValueForEdit(), "=SUM(A14:L14)", "Formula after A12:M14 autosum");
|
||
assert.strictEqual(wsView.model.selectionRange.getLast().getName(), "A13:M14", "Selection after A12:M14 autosum");
|
||
resCell = ws.getRange2("K14");
|
||
assert.strictEqual(resCell.getValueWithFormat(), "1", "Value after A12:M14 autosum");
|
||
assert.strictEqual(resCell.getValueForEdit(), "=SUM(K13)", "Formula after A12:M14 autosum");
|
||
assert.strictEqual(wsView.model.selectionRange.getLast().getName(), "A13:M14", "Selection after A12:M14 autosum");
|
||
resCell = ws.getRange2("L14");
|
||
assert.strictEqual(resCell.getValueWithFormat(), "1", "Value after A12:M14 autosum");
|
||
assert.strictEqual(resCell.getValueForEdit(), "=SUM(L13)", "Formula after A12:M14 autosum");
|
||
assert.strictEqual(wsView.model.selectionRange.getLast().getName(), "A13:M14", "Selection after A12:M14 autosum");
|
||
|
||
// for bug 32959
|
||
ws.getRange2("B10:B14").cleanAll();
|
||
ws.getRange2("B11").setValue("1");
|
||
ws.getRange2("B12").setValue("ds");
|
||
|
||
// B11:B12
|
||
fillRange = ws.getRange2("B11:B12");
|
||
wsView.setSelection(fillRange.bbox);
|
||
wsView._initRowsCount();
|
||
wsView._initColsCount();
|
||
autoCompleteRes = wsView.autoCompleteFormula("SUM");
|
||
|
||
resCell = ws.getRange2("B13");
|
||
assert.strictEqual(resCell.getValueWithFormat(), "1", "Value after B11:B12 autosum");
|
||
assert.strictEqual(resCell.getValueForEdit(), "=SUM(B11:B12)", "Formula after B11:B12 autosum");
|
||
assert.strictEqual(wsView.model.selectionRange.getLast().getName(), "B11:B13", "Selection after B11:B12 autosum");
|
||
|
||
// B11:B13
|
||
ws.getRange2("B13:B14").cleanAll();
|
||
fillRange = ws.getRange2("B11:B13");
|
||
wsView.setSelection(fillRange.bbox);
|
||
wsView._initRowsCount();
|
||
wsView._initColsCount();
|
||
autoCompleteRes = wsView.autoCompleteFormula("SUM");
|
||
|
||
resCell = ws.getRange2("B13");
|
||
assert.strictEqual(resCell.getValueWithFormat(), "1", "Value after B11:B13 autosum");
|
||
assert.strictEqual(resCell.getValueForEdit(), "=SUM(B11:B12)", "Formula after B11:B13 autosum");
|
||
assert.strictEqual(wsView.model.selectionRange.getLast().getName(), "B11:B13", "Selection after B11:B13 autosum");
|
||
|
||
// B10:B12
|
||
ws.getRange2("B13:B14").cleanAll();
|
||
fillRange = ws.getRange2("B10:B12");
|
||
wsView.setSelection(fillRange.bbox);
|
||
wsView._initRowsCount();
|
||
wsView._initColsCount();
|
||
autoCompleteRes = wsView.autoCompleteFormula("SUM");
|
||
|
||
resCell = ws.getRange2("B13");
|
||
assert.strictEqual(resCell.getValueWithFormat(), "1", "Value after B10:B12 autosum");
|
||
assert.strictEqual(resCell.getValueForEdit(), "=SUM(B10:B12)", "Formula after B10:B12 autosum");
|
||
assert.strictEqual(wsView.model.selectionRange.getLast().getName(), "B10:B13", "Selection after B10:B12 autosum");
|
||
|
||
// B10:B13
|
||
ws.getRange2("B13:B14").cleanAll();
|
||
fillRange = ws.getRange2("B10:B13");
|
||
wsView.setSelection(fillRange.bbox);
|
||
wsView._initRowsCount();
|
||
wsView._initColsCount();
|
||
autoCompleteRes = wsView.autoCompleteFormula("SUM");
|
||
|
||
resCell = ws.getRange2("B13");
|
||
assert.strictEqual(resCell.getValueWithFormat(), "1", "Value after B10:B13 autosum");
|
||
assert.strictEqual(resCell.getValueForEdit(), "=SUM(B10:B12)", "Formula after B10:B13 autosum");
|
||
assert.strictEqual(wsView.model.selectionRange.getLast().getName(), "B10:B13", "Selection after B10:B13 autosum");
|
||
|
||
|
||
ws.getRange2("B20:F20").cleanAll();
|
||
ws.getRange2("C20").setValue("1");
|
||
ws.getRange2("D20").setValue("ds");
|
||
// C20:D20
|
||
ws.getRange2("E20:F20").cleanAll();
|
||
fillRange = ws.getRange2("C20:D20");
|
||
wsView.setSelection(fillRange.bbox);
|
||
wsView._initRowsCount();
|
||
wsView._initColsCount();
|
||
autoCompleteRes = wsView.autoCompleteFormula("SUM");
|
||
|
||
resCell = ws.getRange2("E20");
|
||
assert.strictEqual(resCell.getValueWithFormat(), "1", "Value after C20:D20 autosum");
|
||
assert.strictEqual(resCell.getValueForEdit(), "=SUM(C20:D20)", "Formula after C20:D20 autosum");
|
||
assert.strictEqual(wsView.model.selectionRange.getLast().getName(), "C20:E20", "Selection after C20:D20 autosum");
|
||
|
||
// C20:E20
|
||
ws.getRange2("E20:F20").cleanAll();
|
||
fillRange = ws.getRange2("C20:E20");
|
||
wsView.setSelection(fillRange.bbox);
|
||
wsView._initRowsCount();
|
||
wsView._initColsCount();
|
||
autoCompleteRes = wsView.autoCompleteFormula("SUM");
|
||
|
||
resCell = ws.getRange2("E20");
|
||
assert.strictEqual(resCell.getValueWithFormat(), "1", "Value after C20:E20 autosum");
|
||
assert.strictEqual(resCell.getValueForEdit(), "=SUM(C20:D20)", "Formula after C20:E20 autosum");
|
||
assert.strictEqual(wsView.model.selectionRange.getLast().getName(), "C20:E20", "Selection after C20:E20 autosum");
|
||
|
||
// B20:D20
|
||
ws.getRange2("E20:F20").cleanAll();
|
||
fillRange = ws.getRange2("B20:D20");
|
||
wsView.setSelection(fillRange.bbox);
|
||
wsView._initRowsCount();
|
||
wsView._initColsCount();
|
||
autoCompleteRes = wsView.autoCompleteFormula("SUM");
|
||
|
||
resCell = ws.getRange2("E20");
|
||
assert.strictEqual(resCell.getValueWithFormat(), "1", "Value after B20:D20 autosum");
|
||
assert.strictEqual(resCell.getValueForEdit(), "=SUM(B20:D20)", "Formula after B20:D20 autosum");
|
||
assert.strictEqual(wsView.model.selectionRange.getLast().getName(), "B20:E20", "Selection after B20:D20 autosum");
|
||
|
||
// B20:E20
|
||
ws.getRange2("E20:F20").cleanAll();
|
||
fillRange = ws.getRange2("B20:E20");
|
||
wsView.setSelection(fillRange.bbox);
|
||
wsView._initRowsCount();
|
||
wsView._initColsCount();
|
||
autoCompleteRes = wsView.autoCompleteFormula("SUM");
|
||
|
||
resCell = ws.getRange2("E20");
|
||
assert.strictEqual(resCell.getValueWithFormat(), "1", "Value after B20:E20 autosum");
|
||
assert.strictEqual(resCell.getValueForEdit(), "=SUM(B20:D20)", "Formula after B20:E20 autosum");
|
||
assert.strictEqual(wsView.model.selectionRange.getLast().getName(), "B20:E20", "Selection after B20:E20 autosum");
|
||
|
||
// for bug 37318
|
||
ws.getRange2("A20:A22").cleanAll();
|
||
ws.getRange2("A20:A22").setValue("1");
|
||
fillRange = ws.getRange2("A20:A22");
|
||
fillRange.setNumFormat("m/d/yyyy"); // change to the short date format
|
||
// wsView.setSelectionInfo("format", "m/d/yyyy");
|
||
|
||
wsView.setSelection(fillRange.bbox);
|
||
wsView._initRowsCount();
|
||
wsView._initColsCount();
|
||
autoCompleteRes = wsView.autoCompleteFormula("SUM");
|
||
|
||
resCell = ws.getRange2("A23");
|
||
assert.strictEqual(resCell.getValueWithFormat(), "", "Value after A20:A22(only dates in range) autosum");
|
||
assert.strictEqual(resCell.getValueForEdit(), "", "Formula after A20:A22(only dates in range) autosum");
|
||
assert.strictEqual(wsView.model.selectionRange.getLast().getName(), "A20:A22", "Selection after A20:A22(only dates in range) autosum");
|
||
|
||
|
||
// number
|
||
ws.getRange2("A20:A23").cleanAll();
|
||
fillRange = ws.getRange2("A20:A22");
|
||
fillRange.setValue("1");
|
||
fillRange.setNumFormat("0.00"); // change to the number format
|
||
|
||
wsView.setSelection(fillRange.bbox);
|
||
wsView._initRowsCount();
|
||
wsView._initColsCount();
|
||
autoCompleteRes = wsView.autoCompleteFormula("SUM");
|
||
|
||
resCell = ws.getRange2("A23");
|
||
assert.strictEqual(resCell.getValueWithFormat(), "3", "Value after A20:A22(only number in range) autosum");
|
||
assert.strictEqual(resCell.getValueForEdit(), "=SUM(A20:A22)", "Formula after A20:A22(only number in range) autosum");
|
||
assert.strictEqual(wsView.model.selectionRange.getLast().getName(), "A20:A23", "Selection after A20:A22(only number in range) autosum");
|
||
|
||
|
||
// fraction
|
||
fillRange = ws.getRange2("A20:A22");
|
||
fillRange.setNumFormat("# ?/?"); // change to the fraction format
|
||
ws.getRange2("A23").cleanAll();
|
||
wsView.setSelection(fillRange.bbox);
|
||
wsView._initRowsCount();
|
||
wsView._initColsCount();
|
||
autoCompleteRes = wsView.autoCompleteFormula("SUM");
|
||
|
||
resCell = ws.getRange2("A23");
|
||
assert.strictEqual(resCell.getValueWithFormat(), "3", "Value after A20:A22(only fraction in range) autosum");
|
||
assert.strictEqual(resCell.getValueForEdit(), "=SUM(A20:A22)", "Formula after A20:A22(only fraction in range) autosum");
|
||
assert.strictEqual(wsView.model.selectionRange.getLast().getName(), "A20:A23", "Selection after A20:A22(only fraction in range) autosum");
|
||
|
||
|
||
// scientific
|
||
fillRange = ws.getRange2("A20:A22");
|
||
fillRange.setNumFormat("0.00E+00"); // change to the scientific format
|
||
ws.getRange2("A23").cleanAll();
|
||
wsView.setSelection(fillRange.bbox);
|
||
wsView._initRowsCount();
|
||
wsView._initColsCount();
|
||
autoCompleteRes = wsView.autoCompleteFormula("SUM");
|
||
|
||
resCell = ws.getRange2("A23");
|
||
assert.strictEqual(resCell.getValueWithFormat(), "3", "Value after A20:A22(only scientific in range) autosum");
|
||
assert.strictEqual(resCell.getValueForEdit(), "=SUM(A20:A22)", "Formula after A20:A22(only scientific in range) autosum");
|
||
assert.strictEqual(wsView.model.selectionRange.getLast().getName(), "A20:A23", "Selection after A20:A22(only scientific in range) autosum");
|
||
|
||
|
||
// accounting
|
||
fillRange = ws.getRange2("A20:A22");
|
||
fillRange.setNumFormat("_([$$-409]* #,##0.00_);_([$$-409]* \\(#,##0.00\\);_([$$-409]* \"-\"??_);_(@_)"); // change to the accounting format
|
||
ws.getRange2("A23").cleanAll();
|
||
wsView.setSelection(fillRange.bbox);
|
||
wsView._initRowsCount();
|
||
wsView._initColsCount();
|
||
autoCompleteRes = wsView.autoCompleteFormula("SUM");
|
||
|
||
resCell = ws.getRange2("A23");
|
||
assert.strictEqual(resCell.getValueWithFormat(), "3", "Value after A20:A22(only accounting in range) autosum");
|
||
assert.strictEqual(resCell.getValueForEdit(), "=SUM(A20:A22)", "Formula after A20:A22(only accounting in range) autosum");
|
||
assert.strictEqual(wsView.model.selectionRange.getLast().getName(), "A20:A23", "Selection after A20:A22(only accounting in range) autosum");
|
||
|
||
|
||
// percentage
|
||
fillRange = ws.getRange2("A20:A22");
|
||
fillRange.setNumFormat("0.00%"); // change to the percentage format
|
||
ws.getRange2("A23").cleanAll();
|
||
wsView.setSelection(fillRange.bbox);
|
||
wsView._initRowsCount();
|
||
wsView._initColsCount();
|
||
autoCompleteRes = wsView.autoCompleteFormula("SUM");
|
||
|
||
resCell = ws.getRange2("A23");
|
||
assert.strictEqual(resCell.getValueWithFormat(), "3", "Value after A20:A22(only percents in range) autosum");
|
||
assert.strictEqual(resCell.getValueForEdit(), "=SUM(A20:A22)", "Formula after A20:A22(only percents in range) autosum");
|
||
assert.strictEqual(wsView.model.selectionRange.getLast().getName(), "A20:A23", "Selection after A20:A22(only percents in range) autosum");
|
||
|
||
|
||
// l.date
|
||
fillRange = ws.getRange2("A20:A22");
|
||
fillRange.setNumFormat("[$-F800]dddd\,\ mmmm\ d\,\ yyyy"); // change to the long date format
|
||
ws.getRange2("A23").cleanAll();
|
||
wsView.setSelection(fillRange.bbox);
|
||
wsView._initRowsCount();
|
||
wsView._initColsCount();
|
||
autoCompleteRes = wsView.autoCompleteFormula("SUM");
|
||
|
||
resCell = ws.getRange2("A23");
|
||
assert.strictEqual(resCell.getValueWithFormat(), "", "Value after A20:A22(only dates in range) autosum");
|
||
assert.strictEqual(resCell.getValueForEdit(), "", "Formula after A20:A22(only dates in range) autosum");
|
||
assert.strictEqual(wsView.model.selectionRange.getLast().getName(), "A20:A22", "Selection after A20:A22(only dates in range) autosum");
|
||
|
||
|
||
// text
|
||
fillRange = ws.getRange2("A20:A22");
|
||
fillRange.setNumFormat("@"); // change to the text format
|
||
ws.getRange2("A23").cleanAll();
|
||
wsView.setSelection(fillRange.bbox);
|
||
wsView._initRowsCount();
|
||
wsView._initColsCount();
|
||
autoCompleteRes = wsView.autoCompleteFormula("SUM");
|
||
|
||
resCell = ws.getRange2("A23");
|
||
assert.strictEqual(resCell.getValueWithFormat(), "", "Value after A20:A22(only text in range) autosum");
|
||
assert.strictEqual(resCell.getValueForEdit(), "", "Formula after A20:A22(only text in range) autosum");
|
||
assert.strictEqual(wsView.model.selectionRange.getLast().getName(), "A20:A22", "Selection after A20:A22(only text in range) autosum");
|
||
|
||
/* activeCell tests */
|
||
/* if the data type does not allow the formula to be executed, the active cell is moved to the end of the select */
|
||
let activeCell, supposedActiveCell;
|
||
|
||
ws.getRange2("A1:Z100").cleanAll();
|
||
ws.getRange2("B10").setValue("111");
|
||
ws.getRange2("B20:B22").setValue("ds");
|
||
fillRange = ws.getRange2("B20:B22");
|
||
fillRange.setNumFormat("@");
|
||
wsView.setSelection(fillRange.bbox);
|
||
wsView._initRowsCount();
|
||
wsView._initColsCount();
|
||
autoCompleteRes = wsView.autoCompleteFormula("SUM");
|
||
|
||
activeCell = ws.selectionRange.activeCell;
|
||
supposedActiveCell = ws.getCell2("B22");
|
||
assert.strictEqual(activeCell.col === supposedActiveCell.bbox.c1 && activeCell.row === supposedActiveCell.bbox.r1, true, "Active cell test. B20:B22(only text in range) autosum");
|
||
|
||
|
||
ws.getRange2("B10").cleanAll();
|
||
ws.getRange2("A20:A21").setValue("111");
|
||
fillRange = ws.getRange2("B20:B22");
|
||
wsView.setSelection(fillRange.bbox);
|
||
wsView._initRowsCount();
|
||
wsView._initColsCount();
|
||
autoCompleteRes = wsView.autoCompleteFormula("SUM");
|
||
|
||
activeCell = ws.selectionRange.activeCell;
|
||
supposedActiveCell = ws.getCell2("B22");
|
||
assert.strictEqual(activeCell.col === supposedActiveCell.bbox.c1 && activeCell.row === supposedActiveCell.bbox.r1, true, "Active cell test. B20:B22(only text in range) autosum");
|
||
|
||
|
||
ws.getRange2("A22").setValue("111");
|
||
fillRange = ws.getRange2("B20:B22");
|
||
wsView.setSelection(fillRange.bbox);
|
||
wsView._initRowsCount();
|
||
wsView._initColsCount();
|
||
autoCompleteRes = wsView.autoCompleteFormula("SUM");
|
||
|
||
activeCell = ws.selectionRange.activeCell;
|
||
supposedActiveCell = ws.getCell2("B22");
|
||
assert.strictEqual(activeCell.col === supposedActiveCell.bbox.c1 && activeCell.row === supposedActiveCell.bbox.r1, true, "Active cell test. B20:B22(only text in range) autosum");
|
||
|
||
/* autocomplete to merge cells */
|
||
ws.getRange2("A30:B31").setValue("111");
|
||
// C30:D31 merge & center
|
||
ws.getRange2("C30:D31").merge(Asc.c_oAscMergeOptions.MergeCenter);
|
||
assert.ok(ws.getRange2("C30:D31").hasMerged(), 'Range C30:D31 is merged');
|
||
|
||
fillRange = ws.getRange2("A30:D31");
|
||
wsView.setSelection(fillRange.bbox);
|
||
wsView._initRowsCount();
|
||
wsView._initColsCount();
|
||
autoCompleteRes = wsView.autoCompleteFormula("SUM");
|
||
|
||
resCell = ws.getRange2("C30");
|
||
assert.strictEqual(resCell.getValueWithFormat(), "", "Value in merged cell after A30:D31 autosum");
|
||
assert.strictEqual(resCell.getValueForEdit(), "", "Formula in merged cell after A30:D31 autosum");
|
||
resCell = ws.getRange2("C31");
|
||
assert.strictEqual(resCell.getValueWithFormat(), "", "Value in merged cell after A30:D31 autosum");
|
||
assert.strictEqual(resCell.getValueForEdit(), "", "Formula in merged cell after A30:D31 autosum");
|
||
resCell = ws.getRange2("D30");
|
||
assert.strictEqual(resCell.getValueWithFormat(), "", "Value in merged cell after A30:D31 autosum");
|
||
assert.strictEqual(resCell.getValueForEdit(), "", "Formula in merged cell after A30:D31 autosum");
|
||
resCell = ws.getRange2("D31");
|
||
assert.strictEqual(resCell.getValueWithFormat(), "", "Value in merged cell after A30:D31 autosum");
|
||
assert.strictEqual(resCell.getValueForEdit(), "", "Formula in merged cell after A30:D31 autosum");
|
||
|
||
assert.strictEqual(wsView.model.selectionRange.getLast().getName(), "A30:D31", "Selection after A30:D31 autosum");
|
||
|
||
|
||
ws.getRange2("A40:B41").setValue("111");
|
||
ws.getRange2("C40:C41").merge(Asc.c_oAscMergeOptions.MergeCenter);
|
||
assert.ok(ws.getRange2("C40:C41").hasMerged(), 'Range C40:C41 is merged');
|
||
|
||
ws.getRange2("D40:D41").merge(Asc.c_oAscMergeOptions.MergeCenter);
|
||
assert.ok(ws.getRange2("D40:C41").hasMerged(), 'Range D40:C41 is merged');
|
||
|
||
fillRange = ws.getRange2("A40:D41");
|
||
wsView.setSelection(fillRange.bbox);
|
||
wsView._initRowsCount();
|
||
wsView._initColsCount();
|
||
autoCompleteRes = wsView.autoCompleteFormula("SUM");
|
||
|
||
resCell = ws.getRange2("C40");
|
||
assert.strictEqual(resCell.getValueWithFormat(), "", "Value in merged cell after A40:D41 autosum");
|
||
assert.strictEqual(resCell.getValueForEdit(), "", "Formula in merged cell after A40:D41 autosum");
|
||
resCell = ws.getRange2("C41");
|
||
assert.strictEqual(resCell.getValueWithFormat(), "", "Value in merged cell after A40:D41 autosum");
|
||
assert.strictEqual(resCell.getValueForEdit(), "", "Formula in merged cell after A40:D41 autosum");
|
||
resCell = ws.getRange2("D40");
|
||
assert.strictEqual(resCell.getValueWithFormat(), "", "Value in merged cell after A40:D41 autosum");
|
||
assert.strictEqual(resCell.getValueForEdit(), "", "Formula in merged cell after A40:D41 autosum");
|
||
resCell = ws.getRange2("D41");
|
||
assert.strictEqual(resCell.getValueWithFormat(), "", "Value in merged cell after A40:D41 autosum");
|
||
assert.strictEqual(resCell.getValueForEdit(), "", "Formula in merged cell after A40:D41 autosum");
|
||
|
||
assert.strictEqual(wsView.model.selectionRange.getLast().getName(), "A40:D41", "Selection after A40:D41 autosum");
|
||
|
||
|
||
ws.getRange2("A50:A51").setValue("111");
|
||
ws.getRange2("A52:A53").merge(Asc.c_oAscMergeOptions.MergeCenter);
|
||
assert.ok(ws.getRange2("A52:A53").hasMerged(), 'Range A52:A53 is merged');
|
||
|
||
fillRange = ws.getRange2("A50:A53");
|
||
wsView.setSelection(fillRange.bbox);
|
||
wsView._initRowsCount();
|
||
wsView._initColsCount();
|
||
autoCompleteRes = wsView.autoCompleteFormula("SUM");
|
||
|
||
resCell = ws.getRange2("A52");
|
||
assert.strictEqual(resCell.getValueWithFormat(), "", "Value in merged cell after A50:A53 autosum");
|
||
assert.strictEqual(resCell.getValueForEdit(), "", "Formula in merged cell after A50:A53 autosum");
|
||
resCell = ws.getRange2("A52");
|
||
assert.strictEqual(resCell.getValueWithFormat(), "", "Value in merged cell after A50:A53 autosum");
|
||
assert.strictEqual(resCell.getValueForEdit(), "", "Formula in merged cell after A50:A53 autosum");
|
||
|
||
assert.strictEqual(wsView.model.selectionRange.getLast().getName(), "A50:A53", "Selection after A50:A53 autosum");
|
||
|
||
|
||
ws.getRange2("A60:B61").setValue("111");
|
||
ws.getRange2("C60:D60").merge(Asc.c_oAscMergeOptions.MergeCenter);
|
||
assert.ok(ws.getRange2("C60:D60").hasMerged(), 'Range C60:D60 is merged');
|
||
|
||
ws.getRange2("C62:D62").merge(Asc.c_oAscMergeOptions.MergeCenter);
|
||
assert.ok(ws.getRange2("C62:D62").hasMerged(), 'Range C62:D62 is merged');
|
||
|
||
fillRange = ws.getRange2("A60:D62");
|
||
wsView.setSelection(fillRange.bbox);
|
||
wsView._initRowsCount();
|
||
wsView._initColsCount();
|
||
autoCompleteRes = wsView.autoCompleteFormula("SUM");
|
||
|
||
resCell = ws.getRange2("A62");
|
||
assert.strictEqual(resCell.getValueWithFormat(), "222", "Value in merged cell after A60:D62 autosum");
|
||
assert.strictEqual(resCell.getValueForEdit(), "=SUM(A60:A61)", "Formula in merged cell after A60:D62 autosum");
|
||
resCell = ws.getRange2("B62");
|
||
assert.strictEqual(resCell.getValueWithFormat(), "222", "Value in merged cell after A60:D62 autosum");
|
||
assert.strictEqual(resCell.getValueForEdit(), "=SUM(B60:B61)", "Formula in merged cell after A60:D62 autosum");
|
||
resCell = ws.getRange2("C62");
|
||
assert.strictEqual(resCell.getValueWithFormat(), "", "Value in merged cell after A60:D62 autosum");
|
||
assert.strictEqual(resCell.getValueForEdit(), "", "Formula in merged cell after A60:D62 autosum");
|
||
resCell = ws.getRange2("D62");
|
||
assert.strictEqual(resCell.getValueWithFormat(), "", "Value in merged cell after A60:D62 autosum");
|
||
assert.strictEqual(resCell.getValueForEdit(), "", "Formula in merged cell after A60:D62 autosum");
|
||
resCell = ws.getRange2("D60");
|
||
assert.strictEqual(resCell.getValueWithFormat(), "", "Value in merged cell after A60:D62 autosum");
|
||
assert.strictEqual(resCell.getValueForEdit(), "", "Formula in merged cell after A60:D62 autosum");
|
||
resCell = ws.getRange2("D61");
|
||
assert.strictEqual(resCell.getValueWithFormat(), "222", "Value in merged cell after A60:D62 autosum");
|
||
assert.strictEqual(resCell.getValueForEdit(), "=SUM(A61:C61)", "Formula in merged cell after A60:D62 autosum");
|
||
|
||
assert.strictEqual(wsView.model.selectionRange.getLast().getName(), "A60:D62", "Selection after A60:D62 autosum");
|
||
|
||
ws.getRange2("A1:D70").cleanAll();
|
||
// autosum from merged cell
|
||
ws.getRange2("A70:B70").setValue("111");
|
||
ws.getRange2("C70:D70").merge(Asc.c_oAscMergeOptions.MergeCenter);
|
||
assert.ok(ws.getRange2("C70:D70").hasMerged(), 'Range C70:D70 is merged');
|
||
|
||
fillRange = ws.getRange2("D70");
|
||
wsView.setSelection(fillRange.bbox);
|
||
wsView._initRowsCount();
|
||
wsView._initColsCount();
|
||
autoCompleteRes = wsView.autoCompleteFormula("SUM");
|
||
|
||
assert.strictEqual(autoCompleteRes && autoCompleteRes.text, "A70:B70", "Formula after autosum from merged cell. C70:D70 autosum from right");
|
||
resCell = ws.getRange2("C70");
|
||
assert.strictEqual(resCell.getValueWithFormat(), "", "Value in merged cell after C70:D70 autosum");
|
||
assert.strictEqual(resCell.getValueForEdit(), "", "Formula in merged cell after C70:D70 autosum");
|
||
|
||
|
||
ws.getRange2("A80:B82").setValue("111");
|
||
ws.getRange2("C80:H88").merge(Asc.c_oAscMergeOptions.MergeCenter);
|
||
assert.ok(ws.getRange2("C80:H88").hasMerged(), 'Range C80:H88" is merged');
|
||
|
||
fillRange = ws.getRange2("D82");
|
||
wsView.setSelection(fillRange.bbox);
|
||
wsView._initRowsCount();
|
||
wsView._initColsCount();
|
||
autoCompleteRes = wsView.autoCompleteFormula("SUM");
|
||
|
||
assert.strictEqual(autoCompleteRes && autoCompleteRes.text, "A80:B80", "Formula after autosum from merged cell. C80:H88 autosum from right");
|
||
resCell = ws.getRange2("C80");
|
||
assert.strictEqual(resCell.getValueWithFormat(), "", "Value in merged cell after C80:H88 autosum");
|
||
assert.strictEqual(resCell.getValueForEdit(), "", "Formula in merged cell after C80:H88 autosum");
|
||
|
||
|
||
ws.getRange2("A90:B91").setValue("111");
|
||
ws.getRange2("A92:D94").merge(Asc.c_oAscMergeOptions.MergeCenter);
|
||
assert.ok(ws.getRange2("A92:D94").hasMerged(), 'Range A92:D94 is merged');
|
||
|
||
fillRange = ws.getRange2("D94");
|
||
wsView.setSelection(fillRange.bbox);
|
||
wsView._initRowsCount();
|
||
wsView._initColsCount();
|
||
autoCompleteRes = wsView.autoCompleteFormula("SUM");
|
||
|
||
assert.strictEqual(autoCompleteRes && autoCompleteRes.text, "A90:A91", "Formula after autosum from merged cell. A92:D94 autosum from bottom");
|
||
resCell = ws.getRange2("A92");
|
||
assert.strictEqual(resCell.getValueWithFormat(), "", "Value in merged cell after A92:D94 autosum");
|
||
assert.strictEqual(resCell.getValueForEdit(), "", "Formula in merged cell after A92:D94 autosum");
|
||
|
||
|
||
ws.getRange2("A110:C111").setValue("111");
|
||
ws.getRange2("C112").setValue("111");
|
||
ws.getRange2("A113:C115").merge(Asc.c_oAscMergeOptions.MergeCenter);
|
||
assert.ok(ws.getRange2("A113:C115").hasMerged(), 'Range A113:C115 is merged');
|
||
|
||
fillRange = ws.getRange2("C113");
|
||
wsView.setSelection(fillRange.bbox);
|
||
wsView._initRowsCount();
|
||
wsView._initColsCount();
|
||
autoCompleteRes = wsView.autoCompleteFormula("SUM");
|
||
|
||
assert.strictEqual(autoCompleteRes && autoCompleteRes.text, "A110:A112", "Formula after autosum from merged cell. A113:C115 autosum from bottom");
|
||
resCell = ws.getRange2("A92");
|
||
assert.strictEqual(resCell.getValueWithFormat(), "", "Value in merged cell after A113:C115 autosum");
|
||
assert.strictEqual(resCell.getValueForEdit(), "", "Formula in merged cell after A113:C115 autosum");
|
||
|
||
// for bug 36902
|
||
// single cell selection, left cell data
|
||
ws.getRange2("A1:Z20").cleanAll();
|
||
ws.getRange2("A1:A3").setValue("1");
|
||
fillRange = ws.getRange2("B1");
|
||
wsView.setSelection(fillRange.bbox);
|
||
wsView._initRowsCount();
|
||
wsView._initColsCount();
|
||
autoCompleteRes = wsView.autoCompleteFormula("SUM");
|
||
|
||
activeCell = ws.selectionRange.activeCell;
|
||
supposedActiveCell = ws.getCell2("B1");
|
||
assert.strictEqual(activeCell.col === supposedActiveCell.bbox.c1 && activeCell.row === supposedActiveCell.bbox.r1, true, "Active cell test. Call autosum from empty B1 cell");
|
||
|
||
assert.strictEqual(autoCompleteRes && autoCompleteRes.text, "A1", "Formula for edit after autosum from empty B1 cell");
|
||
assert.strictEqual(autoCompleteRes && autoCompleteRes.notEditCell, undefined, "Is the B1 cell open for edit");
|
||
resCell = ws.getRange2("B1");
|
||
assert.strictEqual(resCell.getValueWithFormat(), "", "Value in cell B1 after autosum");
|
||
assert.strictEqual(resCell.getValueForEdit(), "", "Formula in cell B1 after autosum");
|
||
|
||
|
||
fillRange = ws.getRange2("D1");
|
||
wsView.setSelection(fillRange.bbox);
|
||
wsView._initRowsCount();
|
||
wsView._initColsCount();
|
||
autoCompleteRes = wsView.autoCompleteFormula("SUM");
|
||
|
||
activeCell = ws.selectionRange.activeCell;
|
||
supposedActiveCell = ws.getCell2("D1");
|
||
assert.strictEqual(activeCell.col === supposedActiveCell.bbox.c1 && activeCell.row === supposedActiveCell.bbox.r1, true, "Active cell test. Call autosum from empty D1 cell");
|
||
|
||
assert.strictEqual(autoCompleteRes && autoCompleteRes.text, "A1:C1", "Formula for edit after autosum from empty D1 cell");
|
||
assert.strictEqual(autoCompleteRes && autoCompleteRes.notEditCell, undefined, "Is the D1 cell open for edit");
|
||
resCell = ws.getRange2("D1");
|
||
assert.strictEqual(resCell.getValueWithFormat(), "", "Value in cell D1 after autosum");
|
||
assert.strictEqual(resCell.getValueForEdit(), "", "Formula in cell D1 after autosum");
|
||
|
||
// multi cells selection, left cell data
|
||
// vertical selection line
|
||
fillRange = ws.getRange2("B1:B3");
|
||
wsView.setSelection(fillRange.bbox);
|
||
wsView._initRowsCount();
|
||
wsView._initColsCount();
|
||
autoCompleteRes = wsView.autoCompleteFormula("SUM");
|
||
|
||
activeCell = ws.selectionRange.activeCell;
|
||
supposedActiveCell = ws.getCell2("B1");
|
||
assert.strictEqual(activeCell.col === supposedActiveCell.bbox.c1 && activeCell.row === supposedActiveCell.bbox.r1, true, "Active cell test. Call autosum from empty B1:B3 range");
|
||
|
||
assert.strictEqual(autoCompleteRes && autoCompleteRes.text, undefined, "Formula for edit after autosum from empty B1:B3 range");
|
||
assert.strictEqual(autoCompleteRes && autoCompleteRes.notEditCell, true, "Is the B1 cell open for edit");
|
||
resCell = ws.getRange2("B1");
|
||
assert.strictEqual(resCell.getValueWithFormat(), "1", "Value in cell B1 after autosum");
|
||
assert.strictEqual(resCell.getValueForEdit(), "=SUM(A1)", "Formula in cell B1 after autosum");
|
||
resCell = ws.getRange2("B2");
|
||
assert.strictEqual(resCell.getValueWithFormat(), "1", "Value in cell B2 after autosum");
|
||
assert.strictEqual(resCell.getValueForEdit(), "=SUM(A2)", "Formula in cell B2 after autosum");
|
||
resCell = ws.getRange2("B3");
|
||
assert.strictEqual(resCell.getValueWithFormat(), "1", "Value in cell B3 after autosum");
|
||
assert.strictEqual(resCell.getValueForEdit(), "=SUM(A3)", "Formula in cell B3 after autosum");
|
||
ws.getRange2("B1:B3").cleanAll();
|
||
|
||
|
||
fillRange = ws.getRange2("D1:D3");
|
||
wsView.setSelection(fillRange.bbox);
|
||
wsView._initRowsCount();
|
||
wsView._initColsCount();
|
||
autoCompleteRes = wsView.autoCompleteFormula("SUM");
|
||
|
||
activeCell = ws.selectionRange.activeCell;
|
||
supposedActiveCell = ws.getCell2("D1");
|
||
assert.strictEqual(activeCell.col === supposedActiveCell.bbox.c1 && activeCell.row === supposedActiveCell.bbox.r1, true, "Active cell test. Call autosum from empty D1:D3 range");
|
||
|
||
assert.strictEqual(autoCompleteRes && autoCompleteRes.text, undefined, "Formula for edit after autosum from empty D1:D3 range");
|
||
assert.strictEqual(autoCompleteRes && autoCompleteRes.notEditCell, true, "Is the D1 cell open for edit");
|
||
resCell = ws.getRange2("D1");
|
||
assert.strictEqual(resCell.getValueWithFormat(), "1", "Value in cell D1 after autosum");
|
||
assert.strictEqual(resCell.getValueForEdit(), "=SUM(A1:C1)", "Formula in cell D1 after autosum");
|
||
resCell = ws.getRange2("D2");
|
||
assert.strictEqual(resCell.getValueWithFormat(), "1", "Value in cell B2 after autosum");
|
||
assert.strictEqual(resCell.getValueForEdit(), "=SUM(A2:C2)", "Formula in cell B2 after autosum");
|
||
resCell = ws.getRange2("D3");
|
||
assert.strictEqual(resCell.getValueWithFormat(), "1", "Value in cell B3 after autosum");
|
||
assert.strictEqual(resCell.getValueForEdit(), "=SUM(A3:C3)", "Formula in cell B3 after autosum");
|
||
ws.getRange2("D1:D3").cleanAll();
|
||
|
||
// horizontal
|
||
fillRange = ws.getRange2("B1:D1");
|
||
wsView.setSelection(fillRange.bbox);
|
||
wsView._initRowsCount();
|
||
wsView._initColsCount();
|
||
autoCompleteRes = wsView.autoCompleteFormula("SUM");
|
||
|
||
activeCell = ws.selectionRange.activeCell;
|
||
supposedActiveCell = ws.getCell2("B1");
|
||
assert.strictEqual(activeCell.col === supposedActiveCell.bbox.c1 && activeCell.row === supposedActiveCell.bbox.r1, true, "Active cell test. Call autosum from empty B1:D1 range");
|
||
|
||
assert.strictEqual(autoCompleteRes && autoCompleteRes.text, undefined, "Formula for edit after autosum from empty B1:D1 range");
|
||
assert.strictEqual(autoCompleteRes && autoCompleteRes.notEditCell, true, "Is the B1 cell open for edit");
|
||
resCell = ws.getRange2("B1");
|
||
assert.strictEqual(resCell.getValueWithFormat(), "1", "Value in cell B1 after B1:D1 autosum");
|
||
assert.strictEqual(resCell.getValueForEdit(), "=SUM(A1)", "Formula in cell B1 after B1:D1 autosum");
|
||
resCell = ws.getRange2("C1");
|
||
assert.strictEqual(resCell.getValueWithFormat(), "1", "Value in cell C1 after B1:D1 autosum");
|
||
assert.strictEqual(resCell.getValueForEdit(), "=SUM(B1)", "Formula in cell C1 after B1:D1 autosum");
|
||
resCell = ws.getRange2("D1");
|
||
assert.strictEqual(resCell.getValueWithFormat(), "1", "Value in cell D1 after B1:D1 autosum");
|
||
assert.strictEqual(resCell.getValueForEdit(), "=SUM(C1)", "Formula in cell D1 after B1:D1 autosum");
|
||
ws.getRange2("B1:D1").cleanAll();
|
||
|
||
|
||
fillRange = ws.getRange2("D1:F1");
|
||
wsView.setSelection(fillRange.bbox);
|
||
wsView._initRowsCount();
|
||
wsView._initColsCount();
|
||
autoCompleteRes = wsView.autoCompleteFormula("SUM");
|
||
|
||
activeCell = ws.selectionRange.activeCell;
|
||
supposedActiveCell = ws.getCell2("D1");
|
||
assert.strictEqual(activeCell.col === supposedActiveCell.bbox.c1 && activeCell.row === supposedActiveCell.bbox.r1, true, "Active cell test. Call autosum from empty D1:F1 range");
|
||
|
||
assert.strictEqual(autoCompleteRes && autoCompleteRes.text, undefined, "Formula for edit after autosum from empty D1:F1 range");
|
||
assert.strictEqual(autoCompleteRes && autoCompleteRes.notEditCell, true, "Is the D1 cell open for edit");
|
||
resCell = ws.getRange2("D1");
|
||
assert.strictEqual(resCell.getValueWithFormat(), "1", "Value in cell D1 after D1:F1 autosum");
|
||
assert.strictEqual(resCell.getValueForEdit(), "=SUM(A1:C1)", "Formula in cell D1 after D1:F1 autosum");
|
||
resCell = ws.getRange2("E1");
|
||
assert.strictEqual(resCell.getValueWithFormat(), "1", "Value in cell E1 after D1:F1 autosum");
|
||
assert.strictEqual(resCell.getValueForEdit(), "=SUM(B1:D1)", "Formula in cell E1 after D1:F1 autosum");
|
||
resCell = ws.getRange2("F1");
|
||
assert.strictEqual(resCell.getValueWithFormat(), "2", "Value in cell F1 after D1:F1 autosum");
|
||
assert.strictEqual(resCell.getValueForEdit(), "=SUM(C1:E1)", "Formula in cell F1 after D1:F1 autosum");
|
||
ws.getRange2("D1:F1").cleanAll();
|
||
|
||
// two-dimensional
|
||
fillRange = ws.getRange2("B2:C3");
|
||
wsView.setSelection(fillRange.bbox);
|
||
wsView._initRowsCount();
|
||
wsView._initColsCount();
|
||
autoCompleteRes = wsView.autoCompleteFormula("SUM");
|
||
|
||
activeCell = ws.selectionRange.activeCell;
|
||
supposedActiveCell = ws.getCell2("B2");
|
||
assert.strictEqual(activeCell.col === supposedActiveCell.bbox.c1 && activeCell.row === supposedActiveCell.bbox.r1, true, "Active cell test. Call autosum from empty B2:C3 range");
|
||
|
||
assert.strictEqual(autoCompleteRes && autoCompleteRes.text, "A2", "Formula for edit after autosum from empty B2:C3 range");
|
||
assert.strictEqual(autoCompleteRes && autoCompleteRes.notEditCell, undefined, "Is the B2 cell open for edit");
|
||
resCell = ws.getRange2("B2");
|
||
assert.strictEqual(resCell.getValueWithFormat(), "", "Value in cell B2 after B2:C3 autosum");
|
||
assert.strictEqual(resCell.getValueForEdit(), "", "Formula in cell B2 after B2:C3 autosum");
|
||
resCell = ws.getRange2("C3");
|
||
assert.strictEqual(resCell.getValueWithFormat(), "", "Value in cell C3 after B2:C3 autosum");
|
||
assert.strictEqual(resCell.getValueForEdit(), "", "Formula in cell C3 after B2:C3 autosum");
|
||
|
||
|
||
// single cell selection, top cell data
|
||
ws.getRange2("A1:D1").setValue("1");
|
||
fillRange = ws.getRange2("D2");
|
||
wsView.setSelection(fillRange.bbox);
|
||
wsView._initRowsCount();
|
||
wsView._initColsCount();
|
||
autoCompleteRes = wsView.autoCompleteFormula("SUM");
|
||
|
||
activeCell = ws.selectionRange.activeCell;
|
||
supposedActiveCell = ws.getCell2("D2");
|
||
assert.strictEqual(activeCell.col === supposedActiveCell.bbox.c1 && activeCell.row === supposedActiveCell.bbox.r1, true, "Active cell test. Call autosum from empty D2 cell");
|
||
|
||
assert.strictEqual(autoCompleteRes && autoCompleteRes.text, "D1", "Formula for edit after autosum from empty D2 cell");
|
||
assert.strictEqual(autoCompleteRes && autoCompleteRes.notEditCell, undefined, "Is the D2 cell open for edit");
|
||
resCell = ws.getRange2("D2");
|
||
assert.strictEqual(resCell.getValueWithFormat(), "", "Value in cell D2 after autosum");
|
||
assert.strictEqual(resCell.getValueForEdit(), "", "Formula in cell D2 after autosum");
|
||
|
||
|
||
fillRange = ws.getRange2("D6");
|
||
wsView.setSelection(fillRange.bbox);
|
||
wsView._initRowsCount();
|
||
wsView._initColsCount();
|
||
autoCompleteRes = wsView.autoCompleteFormula("SUM");
|
||
|
||
activeCell = ws.selectionRange.activeCell;
|
||
supposedActiveCell = ws.getCell2("D6");
|
||
assert.strictEqual(activeCell.col === supposedActiveCell.bbox.c1 && activeCell.row === supposedActiveCell.bbox.r1, true, "Active cell test. Call autosum from empty D6 cell");
|
||
|
||
assert.strictEqual(autoCompleteRes && autoCompleteRes.text, "D1:D5", "Formula for edit after autosum from empty D6 cell");
|
||
assert.strictEqual(autoCompleteRes && autoCompleteRes.notEditCell, undefined, "Is the D6 cell open for edit");
|
||
resCell = ws.getRange2("D6");
|
||
assert.strictEqual(resCell.getValueWithFormat(), "", "Value in cell D6 after autosum");
|
||
assert.strictEqual(resCell.getValueForEdit(), "", "Formula in cell D6 after autosum");
|
||
|
||
|
||
// multi cells selection, top cell data
|
||
// vertical
|
||
fillRange = ws.getRange2("D2:D3");
|
||
wsView.setSelection(fillRange.bbox);
|
||
wsView._initRowsCount();
|
||
wsView._initColsCount();
|
||
autoCompleteRes = wsView.autoCompleteFormula("SUM");
|
||
|
||
activeCell = ws.selectionRange.activeCell;
|
||
supposedActiveCell = ws.getCell2("D2");
|
||
assert.strictEqual(activeCell.col === supposedActiveCell.bbox.c1 && activeCell.row === supposedActiveCell.bbox.r1, true, "Active cell test. Call autosum from empty D2:D3 range");
|
||
|
||
assert.strictEqual(autoCompleteRes && autoCompleteRes.text, undefined, "Formula for edit after autosum from empty D2:D3 range");
|
||
assert.strictEqual(autoCompleteRes && autoCompleteRes.notEditCell, true, "Is the D2 cell open for edit");
|
||
resCell = ws.getRange2("D2");
|
||
assert.strictEqual(resCell.getValueWithFormat(), "1", "Value in cell D2 after autosum");
|
||
assert.strictEqual(resCell.getValueForEdit(), "=SUM(D1)", "Formula in cell D2 after D2:D3 autosum");
|
||
resCell = ws.getRange2("D3");
|
||
assert.strictEqual(resCell.getValueWithFormat(), "1", "Value in cell D3 after autosum");
|
||
assert.strictEqual(resCell.getValueForEdit(), "=SUM(D2)", "Formula in cell D3 after D2:D3 autosum");
|
||
ws.getRange2("D2:D3").cleanAll();
|
||
|
||
|
||
fillRange = ws.getRange2("D6:D8");
|
||
wsView.setSelection(fillRange.bbox);
|
||
wsView._initRowsCount();
|
||
wsView._initColsCount();
|
||
autoCompleteRes = wsView.autoCompleteFormula("SUM");
|
||
|
||
activeCell = ws.selectionRange.activeCell;
|
||
supposedActiveCell = ws.getCell2("D6");
|
||
assert.strictEqual(activeCell.col === supposedActiveCell.bbox.c1 && activeCell.row === supposedActiveCell.bbox.r1, true, "Active cell test. Call autosum from empty D6:D8 range");
|
||
|
||
assert.strictEqual(autoCompleteRes && autoCompleteRes.text, undefined, "Formula for edit after autosum from empty D6:D8 range");
|
||
assert.strictEqual(autoCompleteRes && autoCompleteRes.notEditCell, true, "Is the B1 cell open for edit");
|
||
resCell = ws.getRange2("D6");
|
||
assert.strictEqual(resCell.getValueWithFormat(), "1", "Value in cell D6 after autosum");
|
||
assert.strictEqual(resCell.getValueForEdit(), "=SUM(D1:D5)", "Formula in cell D6 after D6:D8 autosum");
|
||
resCell = ws.getRange2("D7");
|
||
assert.strictEqual(resCell.getValueWithFormat(), "1", "Value in cell D7 after autosum");
|
||
assert.strictEqual(resCell.getValueForEdit(), "=SUM(D2:D6)", "Formula in cell D7 after D6:D8 autosum");
|
||
resCell = ws.getRange2("D8");
|
||
assert.strictEqual(resCell.getValueWithFormat(), "2", "Value in cell D8 after autosum");
|
||
assert.strictEqual(resCell.getValueForEdit(), "=SUM(D3:D7)", "Formula in cell D8 after D6:D8 autosum");
|
||
ws.getRange2("D6:D8").cleanAll();
|
||
|
||
// horizontal
|
||
fillRange = ws.getRange2("D2:F2");
|
||
wsView.setSelection(fillRange.bbox);
|
||
wsView._initRowsCount();
|
||
wsView._initColsCount();
|
||
autoCompleteRes = wsView.autoCompleteFormula("SUM");
|
||
|
||
activeCell = ws.selectionRange.activeCell;
|
||
supposedActiveCell = ws.getCell2("D2");
|
||
assert.strictEqual(activeCell.col === supposedActiveCell.bbox.c1 && activeCell.row === supposedActiveCell.bbox.r1, true, "Active cell test. Call autosum from empty D2:F2 range");
|
||
|
||
assert.strictEqual(autoCompleteRes && autoCompleteRes.text, undefined, "Formula for edit after autosum from empty D2:F2 range");
|
||
assert.strictEqual(autoCompleteRes && autoCompleteRes.notEditCell, true, "Is the D2 cell open for edit");
|
||
resCell = ws.getRange2("D2");
|
||
assert.strictEqual(resCell.getValueWithFormat(), "1", "Value in cell D2 after autosum");
|
||
assert.strictEqual(resCell.getValueForEdit(), "=SUM(D1)", "Formula in cell D2 after D2:F2 autosum");
|
||
resCell = ws.getRange2("E2");
|
||
assert.strictEqual(resCell.getValueWithFormat(), "0", "Value in cell E2 after autosum");
|
||
assert.strictEqual(resCell.getValueForEdit(), "=SUM(E1)", "Formula in cell E2 after D2:F2 autosum");
|
||
resCell = ws.getRange2("F2");
|
||
assert.strictEqual(resCell.getValueWithFormat(), "0", "Value in cell F2 after autosum");
|
||
assert.strictEqual(resCell.getValueForEdit(), "=SUM(F1)", "Formula in cell F2 after D2:F2 autosum");
|
||
ws.getRange2("D2:F2").cleanAll();
|
||
|
||
|
||
fillRange = ws.getRange2("D5:F5");
|
||
wsView.setSelection(fillRange.bbox);
|
||
wsView._initRowsCount();
|
||
wsView._initColsCount();
|
||
autoCompleteRes = wsView.autoCompleteFormula("SUM");
|
||
|
||
activeCell = ws.selectionRange.activeCell;
|
||
supposedActiveCell = ws.getCell2("D5");
|
||
assert.strictEqual(activeCell.col === supposedActiveCell.bbox.c1 && activeCell.row === supposedActiveCell.bbox.r1, true, "Active cell test. Call autosum from empty D5:F5 range");
|
||
|
||
assert.strictEqual(autoCompleteRes && autoCompleteRes.text, undefined, "Formula for edit after autosum from empty D5:F5 range");
|
||
assert.strictEqual(autoCompleteRes && autoCompleteRes.notEditCell, true, "Is the D5 cell open for edit");
|
||
resCell = ws.getRange2("D5");
|
||
assert.strictEqual(resCell.getValueWithFormat(), "1", "Value in cell D5 after autosum");
|
||
assert.strictEqual(resCell.getValueForEdit(), "=SUM(D1:D4)", "Formula in cell D5 after D5:F5 autosum");
|
||
resCell = ws.getRange2("E5");
|
||
assert.strictEqual(resCell.getValueWithFormat(), "0", "Value in cell E5 after autosum");
|
||
assert.strictEqual(resCell.getValueForEdit(), "=SUM(E1:E4)", "Formula in cell E5 after D5:F5 autosum");
|
||
resCell = ws.getRange2("F5");
|
||
assert.strictEqual(resCell.getValueWithFormat(), "0", "Value in cell F5 after autosum");
|
||
assert.strictEqual(resCell.getValueForEdit(), "=SUM(F1:F4)", "Formula in cell F5 after D5:F5 autosum");
|
||
ws.getRange2("D5:F5").cleanAll();
|
||
|
||
// two-dimensional
|
||
fillRange = ws.getRange2("D3:E4");
|
||
wsView.setSelection(fillRange.bbox);
|
||
wsView._initRowsCount();
|
||
wsView._initColsCount();
|
||
autoCompleteRes = wsView.autoCompleteFormula("SUM");
|
||
|
||
activeCell = ws.selectionRange.activeCell;
|
||
supposedActiveCell = ws.getCell2("D3");
|
||
assert.strictEqual(activeCell.col === supposedActiveCell.bbox.c1 && activeCell.row === supposedActiveCell.bbox.r1, true, "Active cell test. Call autosum from empty D3:E4 range");
|
||
|
||
assert.strictEqual(autoCompleteRes && autoCompleteRes.text, "D1:D2", "Formula for edit after autosum from empty D3:E4 range");
|
||
assert.strictEqual(autoCompleteRes && autoCompleteRes.notEditCell, undefined, "Is the D4 cell open for edit");
|
||
resCell = ws.getRange2("D3");
|
||
assert.strictEqual(resCell.getValueWithFormat(), "", "Value in cell D3 after autosum");
|
||
assert.strictEqual(resCell.getValueForEdit(), "", "Formula in cell D3 after D3:E4 autosum");
|
||
resCell = ws.getRange2("E4");
|
||
assert.strictEqual(resCell.getValueWithFormat(), "", "Value in cell E4 after autosum");
|
||
assert.strictEqual(resCell.getValueForEdit(), "", "Formula in cell E4 after D3:E4 autosum");
|
||
ws.getRange2("D3:E4").cleanAll();
|
||
|
||
ws.getRange2("A1:Z200").cleanAll();
|
||
});
|
||
|
||
/* for bug 69708 */
|
||
QUnit.test('Array formula ', function (assert) {
|
||
let array, cellWithFormula, fillRange;
|
||
|
||
ws.getRange2("A11").setNumFormat("@");
|
||
ws.getRange2("B12").setNumFormat("@");
|
||
|
||
ws.getRange2("A2").setValue("Jeans");
|
||
ws.getRange2("A3").setValue("Sweater");
|
||
ws.getRange2("A4").setValue("Shirt");
|
||
|
||
// set flags for CSE formula call
|
||
let flags = wsView._getCellFlags(9, 0);
|
||
flags.ctrlKey = true;
|
||
flags.shiftKey = true;
|
||
|
||
// set selection A10:B13
|
||
fillRange = ws.getRange2("A10:B12");
|
||
wsView.setSelection(fillRange.bbox);
|
||
wsView._initRowsCount();
|
||
wsView._initColsCount();
|
||
|
||
|
||
let fragment = ws.getRange2("A10").getValueForEdit2();
|
||
fragment[0].setFragmentText("=SIN({1,2})");
|
||
|
||
wsView._saveCellValueAfterEdit(fillRange, fragment, flags, null, null); // calculate
|
||
resCell = ws.getRange2("A10");
|
||
assert.strictEqual(wsView.model.selectionRange.getLast().getName(), "A10:B12", "Selection after =SIN({1,2}) cse formula call");
|
||
assert.strictEqual(resCell.getValueWithFormat(), "0.841470985", "Value in A10 after =SIN({1,2}) calculate");
|
||
assert.strictEqual(resCell.getValueForEdit(), "=SIN({1,2})", "Formula in A10 after =SIN({1,2}) calculate");
|
||
assert.strictEqual(resCell.getNumFormatStr(), "General", "A10 cellFormat after =SIN({1,2}) calculate");
|
||
|
||
resCell = ws.getRange2("A11");
|
||
assert.strictEqual(resCell.getValueWithFormat(), "0.841470985", "Value in A11 after =SIN({1,2}) calculate");
|
||
assert.strictEqual(resCell.getValueForEdit(), "=SIN({1,2})", "Formula in A11 after =SIN({1,2}) calculate");
|
||
assert.strictEqual(resCell.getNumFormatStr(), "@", "A11 cellFormat after =SIN({1,2}) calculate");
|
||
|
||
resCell = ws.getRange2("A12");
|
||
assert.strictEqual(resCell.getValueWithFormat(), "0.841470985", "Value in A12 after =SIN({1,2}) calculate");
|
||
assert.strictEqual(resCell.getValueForEdit(), "=SIN({1,2})", "Formula in A12 after =SIN({1,2}) calculate");
|
||
assert.strictEqual(resCell.getNumFormatStr(), "General", "A12 cellFormat after =SIN({1,2}) calculate");
|
||
|
||
resCell = ws.getRange2("B10");
|
||
assert.strictEqual(resCell.getValueWithFormat(), "0.909297427", "Value in B10 after =SIN({1,2}) calculate");
|
||
assert.strictEqual(resCell.getValueForEdit(), "=SIN({1,2})", "Formula in B10 after =SIN({1,2}) calculate");
|
||
assert.strictEqual(resCell.getNumFormatStr(), "General", "B10 cellFormat after =SIN({1,2}) calculate");
|
||
|
||
resCell = ws.getRange2("B11");
|
||
assert.strictEqual(resCell.getValueWithFormat(), "0.909297427", "Value in B11 after =SIN({1,2}) calculate");
|
||
assert.strictEqual(resCell.getValueForEdit(), "=SIN({1,2})", "Formula in B11 after =SIN({1,2}) calculate");
|
||
assert.strictEqual(resCell.getNumFormatStr(), "General", "B11 cellFormat after =SIN({1,2}) calculate");
|
||
|
||
resCell = ws.getRange2("B12");
|
||
assert.strictEqual(resCell.getValueWithFormat(), "0.909297427", "Value in B12 after =SIN({1,2}) calculate");
|
||
assert.strictEqual(resCell.getValueForEdit(), "=SIN({1,2})", "Formula in B12 after =SIN({1,2}) calculate");
|
||
assert.strictEqual(resCell.getNumFormatStr(), "@", "B12 cellFormat after =SIN({1,2}) calculate");
|
||
|
||
|
||
fragment[0].setFragmentText('=HSTACK({"Red";"Blue";"Green"},A2:A4)');
|
||
|
||
wsView._saveCellValueAfterEdit(fillRange, fragment, flags, null, null); // calculate
|
||
resCell = ws.getRange2("A10");
|
||
assert.strictEqual(wsView.model.selectionRange.getLast().getName(), "A10:B12", 'Selection after =HSTACK({"Red";"Blue";"Green"},A2:A4) cse formula call');
|
||
assert.strictEqual(resCell.getValueWithFormat(), "Red", 'Value in A10 after =HSTACK({"Red";"Blue";"Green"},A2:A4) calculate');
|
||
assert.strictEqual(resCell.getValueForEdit(), '=HSTACK({\"Red\";\"Blue\";\"Green\"},A2:A4)', 'Formula in A10 after =HSTACK({"Red";"Blue";"Green"},A2:A4) calculate');
|
||
assert.strictEqual(resCell.getNumFormatStr(), "General", 'A10 cellFormat after =HSTACK({"Red";"Blue";"Green"},A2:A4) calculate');
|
||
|
||
resCell = ws.getRange2("A11");
|
||
assert.strictEqual(resCell.getValueWithFormat(), "Blue", 'Value in A11 after =HSTACK({"Red";"Blue";"Green"},A2:A4) calculate');
|
||
assert.strictEqual(resCell.getValueForEdit(), '=HSTACK({\"Red\";\"Blue\";\"Green\"},A2:A4)', 'Formula in A11 after =HSTACK({"Red";"Blue";"Green"},A2:A4) calculate');
|
||
assert.strictEqual(resCell.getNumFormatStr(), "@", 'A11 cellFormat after =HSTACK({"Red";"Blue";"Green"},A2:A4) calculate');
|
||
|
||
resCell = ws.getRange2("A12");
|
||
assert.strictEqual(resCell.getValueWithFormat(), "Green", 'Value in A12 after =HSTACK({"Red";"Blue";"Green"},A2:A4) calculate');
|
||
assert.strictEqual(resCell.getValueForEdit(), '=HSTACK({\"Red\";\"Blue\";\"Green\"},A2:A4)', 'Formula in A12 after =HSTACK({"Red";"Blue";"Green"},A2:A4) calculate');
|
||
assert.strictEqual(resCell.getNumFormatStr(), "General", 'A12 cellFormat after =HSTACK({"Red";"Blue";"Green"},A2:A4) calculate');
|
||
|
||
resCell = ws.getRange2("B10");
|
||
assert.strictEqual(resCell.getValueWithFormat(), "Jeans", 'Value in B10 after =HSTACK({"Red";"Blue";"Green"},A2:A4) calculate');
|
||
assert.strictEqual(resCell.getValueForEdit(), '=HSTACK({\"Red\";\"Blue\";\"Green\"},A2:A4)', 'Formula in B10 after =HSTACK({"Red";"Blue";"Green"},A2:A4) calculate');
|
||
assert.strictEqual(resCell.getNumFormatStr(), "General", 'B10 cellFormat after =HSTACK({"Red";"Blue";"Green"},A2:A4) calculate');
|
||
|
||
resCell = ws.getRange2("B11");
|
||
assert.strictEqual(resCell.getValueWithFormat(), "Sweater", 'Value in B11 after =HSTACK({"Red";"Blue";"Green"},A2:A4) calculate');
|
||
assert.strictEqual(resCell.getValueForEdit(), '=HSTACK({\"Red\";\"Blue\";\"Green\"},A2:A4)', 'Formula in B11 after =HSTACK({"Red";"Blue";"Green"},A2:A4) calculate');
|
||
assert.strictEqual(resCell.getNumFormatStr(), "General", 'B11 cellFormat after =HSTACK({"Red";"Blue";"Green"},A2:A4) calculate');
|
||
|
||
resCell = ws.getRange2("B12");
|
||
assert.strictEqual(resCell.getValueWithFormat(), "Shirt", 'Value in B12 after =HSTACK({"Red";"Blue";"Green"},A2:A4) calculate');
|
||
assert.strictEqual(resCell.getValueForEdit(), '=HSTACK({\"Red\";\"Blue\";\"Green\"},A2:A4)', 'Formula in B12 after =HSTACK({"Red";"Blue";"Green"},A2:A4) calculate');
|
||
assert.strictEqual(resCell.getNumFormatStr(), "@", 'B12 cellFormat after =HSTACK({"Red";"Blue";"Green"},A2:A4) calculate');
|
||
|
||
|
||
ws.getRange2("A1:Z100").cleanAll();
|
||
});
|
||
|
||
QUnit.test('sortRangeTest', function (assert) {
|
||
let range, expectedRes;
|
||
|
||
ws.getRange2("A1:Z100").cleanAll();
|
||
|
||
let testData = [
|
||
['a'],
|
||
['h'],
|
||
['f'],
|
||
['é'],
|
||
['e'],
|
||
['d'],
|
||
['c'],
|
||
['b'],
|
||
['á'],
|
||
['g']
|
||
];
|
||
|
||
range = ws.getRange2("A1:A10");
|
||
range.fillData(testData);
|
||
|
||
range.sort(Asc.c_oAscSortOptions.Ascending, 0);
|
||
compareData(assert, range.bbox, [['a'],['á'],['b'],['c'],['d'],['e'],['é'],['f'],['g'],['h']], "check_sort_1");
|
||
|
||
range = ws.getRange2("A1:A10");
|
||
range.fillData(testData);
|
||
|
||
range.sort(Asc.c_oAscSortOptions.Descending, 0);
|
||
compareData(assert, range.bbox, [['h'],['g'],['f'],['é'],['e'],['d'],['c'],['b'],['á'],['a']], "check_sort_2");
|
||
|
||
testData = [
|
||
['1'],
|
||
['g'],
|
||
['2'],
|
||
['é'],
|
||
['TEST3'],
|
||
['á'],
|
||
['c'],
|
||
['Test2'],
|
||
['test1'],
|
||
['a']
|
||
];
|
||
|
||
range = ws.getRange2("A1:A10");
|
||
range.fillData(testData);
|
||
|
||
range.sort(Asc.c_oAscSortOptions.Ascending, 0);
|
||
compareData(assert, range.bbox, [['1'],['2'],['a'],['á'],['c'],['é'],['g'],['test1'],['Test2'],['TEST3']], "check_sort_3");
|
||
|
||
range.sort(Asc.c_oAscSortOptions.Descending, 0);
|
||
compareData(assert, range.bbox, [['TEST3'],['Test2'],['test1'],['g'],['é'],['c'],['á'],['a'],['2'],['1']], "check_sort_4");
|
||
|
||
testData = [
|
||
['-2'],
|
||
['Test2'],
|
||
['test1'],
|
||
['g'],
|
||
['é'],
|
||
['12345'],
|
||
['á'],
|
||
['a'],
|
||
['안세요'],
|
||
['녕하'],
|
||
['TEST0'],
|
||
['하'],
|
||
['TEST2'],
|
||
['аА'],
|
||
['é'],
|
||
['1'],
|
||
['2'],
|
||
['АА'],
|
||
['аа'],
|
||
['-1']
|
||
];
|
||
|
||
range = ws.getRange2("A1:A20");
|
||
range.fillData(testData);
|
||
|
||
range.sort(Asc.c_oAscSortOptions.Ascending, 0);
|
||
compareData(assert, range.bbox, [['-2'],['-1'],['1'],['2'],['12345'],['a'],['á'],['é'],['é'],['g'],['TEST0'],['test1'],['Test2'],['TEST2'],['аА'],['АА'],['аа'],['녕하'],['안세요'],['하']], "check_sort_5");
|
||
|
||
/* MS puts Arabic alphabet above Japanese, javascript sorts differently*/
|
||
|
||
testData = [
|
||
['أ'], // arabic
|
||
['А'], // russian
|
||
['あ'], // japanese
|
||
];
|
||
|
||
range = ws.getRange2("A1:A3");
|
||
range.fillData(testData);
|
||
|
||
range.sort(Asc.c_oAscSortOptions.Ascending, 0);
|
||
compareData(assert, range.bbox, [['А'],['أ'],['あ']], "Asc check_sort_6");
|
||
|
||
range.sort(Asc.c_oAscSortOptions.Descending, 0);
|
||
compareData(assert, range.bbox, [['あ'],['أ'],['А']], "Desc check_sort_6");
|
||
|
||
testData = [
|
||
['A'], // english
|
||
['A'], // spanish
|
||
['A'], // german
|
||
['Ä'], // german
|
||
['A'], // french
|
||
['À'], // french
|
||
['A'], // hungarian
|
||
['Á'], // hungarian
|
||
['A'], // turkish
|
||
['أ'], // arabic
|
||
['А'], // russian
|
||
['あ'], // japanese
|
||
];
|
||
|
||
range = ws.getRange2("A1:A12");
|
||
range.fillData(testData);
|
||
|
||
expectedRes = [['A'],['A'],['A'],['A'],['A'],['A'],['Á'],['À'],['Ä'],['А'],['أ'],['あ']];
|
||
range.sort(Asc.c_oAscSortOptions.Ascending, 0);
|
||
compareData(assert, range.bbox, expectedRes, "Asc check_sort_7");
|
||
|
||
range.sort(Asc.c_oAscSortOptions.Descending, 0);
|
||
compareData(assert, range.bbox, expectedRes.reverse(), "Desc check_sort_7");
|
||
|
||
// Tests with more of languages
|
||
testData = [
|
||
['City'], // eng
|
||
['城市'], // cn
|
||
['शहर'], // hindi
|
||
['Ciudad'], // esp
|
||
['Ville'], // fr
|
||
['مدينة'], // arabic
|
||
['শহর'], // bengal
|
||
['Город'], // ru
|
||
['Cidade'], // pt-pt
|
||
['Kota'], // indonesian
|
||
['Város'], // Magyar
|
||
['Stadt'] // Dutch
|
||
];
|
||
|
||
range = ws.getRange2("A1:A12");
|
||
range.fillData(testData);
|
||
|
||
expectedRes = [['Cidade'],['City'],['Ciudad'],['Kota'],['Stadt'],['Város'],['Ville'],['Город'],['مدينة'],['शहर'],['শহর'],['城市']];
|
||
range.sort(Asc.c_oAscSortOptions.Ascending, 0);
|
||
compareData(assert, range.bbox, expectedRes, "Asc check_sort_8");
|
||
|
||
range.sort(Asc.c_oAscSortOptions.Descending, 0);
|
||
compareData(assert, range.bbox, expectedRes.reverse(), "Desc check_sort_8");
|
||
|
||
testData = [
|
||
['123City'], // eng
|
||
['123城市'], // cn
|
||
['123शहर'], // hindi
|
||
['123Ciudad'], // esp
|
||
['123Ville'], // fr
|
||
['123' + 'مدينة'], // arabic
|
||
['123শহর'], // bengal
|
||
['123Город'], // ru
|
||
['123Cidade'], // pt-pt
|
||
['123Kota'], // indonesian
|
||
['123Város'], // Magyar
|
||
['123Stadt'] // Dutch
|
||
];
|
||
|
||
range = ws.getRange2("A1:A12");
|
||
range.fillData(testData);
|
||
|
||
expectedRes = [['123Cidade'],['123City'],['123Ciudad'],['123Kota'],['123Stadt'],['123Város'],['123Ville'],['123Город'],['123مدينة'],['123शहर'],['123শহর'],['123城市']];
|
||
range.sort(Asc.c_oAscSortOptions.Ascending, 0);
|
||
compareData(assert, range.bbox, expectedRes, "Asc check_sort_9");
|
||
|
||
range.sort(Asc.c_oAscSortOptions.Descending, 0);
|
||
compareData(assert, range.bbox, expectedRes.reverse(), "Desc check_sort_9");
|
||
|
||
testData = [
|
||
['2e2de2'],
|
||
['zxc'],
|
||
['f'],
|
||
['_d'],
|
||
['edasd'],
|
||
['SiM`Gl23'],
|
||
['dd23dd'],
|
||
['3e2de2'],
|
||
['SDY'],
|
||
['3e2de3'],
|
||
['2e3de2'],
|
||
['__z']
|
||
];
|
||
|
||
range = ws.getRange2("A1:A12");
|
||
range.fillData(testData);
|
||
|
||
expectedRes = [['__z'],['_d'],['2e2de2'],['2e3de2'],['3e2de2'],['3e2de3'],['dd23dd'],['edasd'],['f'],['SDY'],['SiM`Gl23'],['zxc']];
|
||
range.sort(Asc.c_oAscSortOptions.Ascending, 0);
|
||
compareData(assert, range.bbox, expectedRes, "Asc check_sort_10");
|
||
|
||
range.sort(Asc.c_oAscSortOptions.Descending, 0);
|
||
compareData(assert, range.bbox, expectedRes.reverse(), "Desc check_sort_10");
|
||
|
||
// sorting specials characters does not coincide with the sorting in ms (but the same as in gs and libre)
|
||
/*
|
||
testData = [
|
||
['!a'],
|
||
['#a'],
|
||
['$a'],
|
||
['^a'],
|
||
['&a'],
|
||
['*a'],
|
||
['(a'],
|
||
[')a'],
|
||
['_a'],
|
||
['[a'],
|
||
[']a'],
|
||
['{a'],
|
||
['}a'],
|
||
['\a'],
|
||
['/a'],
|
||
['|a'],
|
||
[';a'],
|
||
[':a'],
|
||
['a'],
|
||
[',a'],
|
||
['.a'],
|
||
['`a'],
|
||
['>a'],
|
||
['<a'],
|
||
['?a'],
|
||
['~a'],
|
||
];
|
||
|
||
range = ws.getRange2("A1:A26");
|
||
range.fillData(testData);
|
||
|
||
expectedRes = [['!a'],['#a'],['$a'],['&a'],['(a'],[')a'],['*a'],[',a'],['.a'],['/a'],[':a'],[';a'],['?a'],['[a'],['\a'],[']a'],['^a'],['_a'],['`a'],['{a'],['|a'],['}a'],['~a'],['<a'],['>a'],['a']];
|
||
range.sort(Asc.c_oAscSortOptions.Ascending, 0);
|
||
compareData(assert, range.bbox, expectedRes, "Asc check_sort_11");
|
||
|
||
range.sort(Asc.c_oAscSortOptions.Descending, 0);
|
||
compareData(assert, range.bbox, expectedRes.reverse(), "Desc check_sort_11");
|
||
|
||
// letters with diacritics sorting also does not coincide with the sorting in ms (but the same as in gs and libre)
|
||
testData = [
|
||
['á'],
|
||
['Á'],
|
||
['à'],
|
||
['ă'],
|
||
['â'],
|
||
['Â'],
|
||
['å'],
|
||
['ä'],
|
||
['ã'],
|
||
['Ą'],
|
||
['ā'],
|
||
['Ā'],
|
||
];
|
||
|
||
range = ws.getRange2("A1:A4");
|
||
range.fillData(testData);
|
||
|
||
expectedRes = [['á'],['Á'],['à'],['â'], ['Â'],['ä'],['ă'],['ā'],['Ā'],['ã'],['å'],['Ą'],];
|
||
range.sort(Asc.c_oAscSortOptions.Ascending, 0);
|
||
compareData(assert, range.bbox, expectedRes, "Asc check_sort_12");
|
||
|
||
range.sort(Asc.c_oAscSortOptions.Descending, 0);
|
||
compareData(assert, range.bbox, expectedRes.reverse(), "Desc check_sort_12");
|
||
*/
|
||
|
||
// english
|
||
testData = [
|
||
['Test1'],
|
||
['TEST1'],
|
||
['tESt1'],
|
||
['TesT1'],
|
||
];
|
||
|
||
range = ws.getRange2("A1:A4");
|
||
range.fillData(testData);
|
||
|
||
expectedRes = [['Test1'],['TEST1'],['tESt1'],['TesT1']];
|
||
range.sort(Asc.c_oAscSortOptions.Ascending, 0);
|
||
compareData(assert, range.bbox, expectedRes, "Asc check_sort_13");
|
||
|
||
range.sort(Asc.c_oAscSortOptions.Descending, 0);
|
||
compareData(assert, range.bbox, expectedRes, "Desc check_sort_13");
|
||
|
||
// hungarian
|
||
testData = [
|
||
['Köszönöm1'],
|
||
['KÖSZÖNÖM1'],
|
||
['köSzÖnÖm1'],
|
||
['KöszönöM1'],
|
||
];
|
||
|
||
range = ws.getRange2("A1:A4");
|
||
range.fillData(testData);
|
||
|
||
expectedRes = [['Köszönöm1'],['KÖSZÖNÖM1'],['köSzÖnÖm1'],['KöszönöM1']];
|
||
range.sort(Asc.c_oAscSortOptions.Ascending, 0);
|
||
compareData(assert, range.bbox, expectedRes, "Asc check_sort_14");
|
||
|
||
range.sort(Asc.c_oAscSortOptions.Descending, 0);
|
||
compareData(assert, range.bbox, expectedRes, "Desc check_sort_14");
|
||
|
||
testData = [
|
||
['ZZ'],['á'], ['é'],['í'], ['ó'],
|
||
['ö'], ['ő'], ['ú'], ['ü'], ['ű'],['a']
|
||
];
|
||
|
||
range = ws.getRange2("A1:A11");
|
||
range.fillData(testData);
|
||
|
||
expectedRes = [
|
||
['a'],['á'],['é'], ['í'], ['ó'],
|
||
['ö'], ['ő'], ['ú'], ['ü'], ['ű'],['ZZ']
|
||
];
|
||
range.sort(Asc.c_oAscSortOptions.Ascending, 0);
|
||
compareData(assert, range.bbox, expectedRes, "Asc check_sort_15");
|
||
|
||
range.sort(Asc.c_oAscSortOptions.Descending, 0);
|
||
compareData(assert, range.bbox, expectedRes.reverse(), "Desc check_sort_15");
|
||
|
||
|
||
// turkish
|
||
testData = [
|
||
['C'],['Ç'],['ç'],['Ğ'],['ğ'],
|
||
['Ö'],['ö'],['Ş'],['ş'],['Ü'],['ü']
|
||
];
|
||
|
||
range = ws.getRange2("A1:A11");
|
||
range.fillData(testData);
|
||
|
||
expectedRes = [
|
||
['C'],['Ç'],['ç'],['Ğ'],['ğ'],
|
||
['Ö'],['ö'],['Ş'],['ş'],['Ü'],['ü']
|
||
];
|
||
range.sort(Asc.c_oAscSortOptions.Ascending, 0);
|
||
compareData(assert, range.bbox, expectedRes, "Asc check_sort_16");
|
||
|
||
expectedRes = [
|
||
['Ü'],['ü'],['Ş'],['ş'],['Ö'],
|
||
['ö'],['Ğ'],['ğ'],['Ç'],['ç'],['C'],
|
||
];
|
||
range.sort(Asc.c_oAscSortOptions.Descending, 0);
|
||
compareData(assert, range.bbox, expectedRes, "Desc check_sort_16");
|
||
|
||
|
||
testData = [
|
||
['ALİ'],
|
||
['MURAT'],
|
||
['İSMAİL']
|
||
];
|
||
|
||
range = ws.getRange2("A1:A3");
|
||
range.fillData(testData);
|
||
|
||
expectedRes = [['ALİ'],['İSMAİL'],['MURAT']];
|
||
range.sort(Asc.c_oAscSortOptions.Ascending, 0);
|
||
compareData(assert, range.bbox, expectedRes, "Asc check_sort_17");
|
||
|
||
range.sort(Asc.c_oAscSortOptions.Descending, 0);
|
||
compareData(assert, range.bbox, expectedRes.reverse(), "Desc check_sort_17");
|
||
|
||
|
||
// hungarian, portugese, deutsch, turkish
|
||
testData = [
|
||
['Évad'],
|
||
['Óculos'],
|
||
['Äpfel'],
|
||
['Şehir']
|
||
];
|
||
|
||
range = ws.getRange2("A1:A4");
|
||
range.fillData(testData);
|
||
|
||
expectedRes = [['Äpfel'],['Évad'],['Óculos'],['Şehir']];
|
||
range.sort(Asc.c_oAscSortOptions.Ascending, 0);
|
||
compareData(assert, range.bbox, expectedRes, "Asc check_sort_18");
|
||
|
||
range.sort(Asc.c_oAscSortOptions.Descending, 0);
|
||
compareData(assert, range.bbox, expectedRes.reverse(), "Desc check_sort_18");
|
||
|
||
});
|
||
QUnit.test("Autofill - format Date, Date & Time and Time.", function (assert) {
|
||
function getAutofillCase(aFrom, aTo, nFillHandleArea, sDescription, expectedData) {
|
||
const [c1From, c2From, r1From, r2From] = aFrom;
|
||
const [c1To, c2To, r1To, r2To] = aTo;
|
||
const nHandleDirection = r1To === r2To ? 0 : 1; // 0 - Horizontal, 1 - Vertical
|
||
const autoFillAssert = nFillHandleArea === 3 ? autofillData : reverseAutofillData;
|
||
let autoFillRange;
|
||
|
||
if (nHandleDirection === 0) {
|
||
let autofillC1 = nFillHandleArea === 3 ? c2From + 1 : c1From - 1;
|
||
autoFillRange = getRange(autofillC1, r1To, c2To, r2To);
|
||
} else {
|
||
let autofillR1 = nFillHandleArea === 3 ? r2From + 1 : r1From - 1;
|
||
autoFillRange = getRange(c1To, autofillR1, c2To, r2To);
|
||
}
|
||
ws.selectionRange.ranges = [getRange(c1From, r1From, c2From, r2From)];
|
||
wsView = getAutoFillRange(wsView, c1To, r1To, c2To, r2To, nHandleDirection, nFillHandleArea);
|
||
let undoRes = nHandleDirection === 0 ? [undoData] : undoData;
|
||
let expectedRes = nHandleDirection === 0 ? [expectedData] : expectedData;
|
||
checkUndoRedo(function (_desc) {
|
||
autoFillAssert(assert, autoFillRange, undoRes, _desc);
|
||
}, function (_desc) {
|
||
autoFillAssert(assert, autoFillRange, expectedRes, _desc);
|
||
}, sDescription);
|
||
}
|
||
|
||
ws.getRange2('A1:Z100').cleanAll();
|
||
// Case #1: Format Date. Asc sequence. Vertical. Selected 2 cell
|
||
let testData = [
|
||
['12/12/2000', '12/12/2000'],
|
||
['12/13/2000', '12/14/2000']
|
||
];
|
||
let range = ws.getRange4(0,0);
|
||
range.fillData(testData);
|
||
let undoData = [[''], [''], [''], ['']];
|
||
|
||
// nFillHandleArea: 1 - Reverse, 3 - asc sequence, 2 - Reverse 1 elem.
|
||
// aFrom, aTo: [c1,c2,r1,r2]
|
||
getAutofillCase([0, 0, 0, 1], [0, 0, 2, 5], 3, 'Format Date. Asc sequence. Vertical. Selected 2 cell', [['36874'], ['36875'], ['36876'], ['36877']]);
|
||
getAutofillCase([1, 1, 0, 1], [1, 1, 2, 5], 3, 'Format Date. Asc sequence. Vertical. Selected 2 cell, even step.', [['36876'], ['36878'], ['36880'], ['36882']]);
|
||
// Case #2: Format Date. Reverse sequence. Vertical. Selected 2 cell
|
||
undoData = [[''],[''],['36873'], ['36872']];
|
||
range = ws.getRange4(4, 0);
|
||
range.fillData(testData);
|
||
|
||
getAutofillCase([0, 0, 4, 5], [0, 0, 3, 0], 1, 'Format Date. Reverse sequence. Vertical. Selected 2 cell', [['36871'], ['36870'], ['36869'], ['36868']]);
|
||
undoData = [[''],[''],['36874'], ['36872']];
|
||
getAutofillCase([1, 1, 4, 5], [1, 1, 3, 0], 1, 'Format Date. Reverse sequence. Vertical. Selected 2 cell, even step', [['36870'], ['36868'], ['36866'], ['36864']]);
|
||
// Case #3: Format Date. Asc sequence. Horizontal. Selected 1 cell
|
||
clearData(0, 0, 1, 5);
|
||
testData = [
|
||
['12/12/2000']
|
||
];
|
||
undoData = ['', '', '', ''];
|
||
range = ws.getRange4(0, 0);
|
||
range.fillData(testData);
|
||
|
||
getAutofillCase([0, 0, 0, 0], [1, 4, 0, 0], 3, 'Format Date. Asc sequence. Horizontal. Selected 1 cell', ['36873', '36874', '36875', '36876']);
|
||
// Case #4: Format Date. Reverse sequence. Horizontal. Selected 1 cell
|
||
undoData = ['', '', '', '36872'];
|
||
range = ws.getRange4(0, 4);
|
||
range.fillData(testData);
|
||
|
||
getAutofillCase([4, 4, 0, 0], [3, 0, 0, 0], 1, 'Format Date. Reverse sequence. Horizontal. Selected 1 cell', ['36871', '36870', '36869', '36868']);
|
||
// Case #5: Format Date. Asc sequence. Vertical. Selected 3 cells. Negative case - 12/12/2000, 12/13/2000, 12/12/2000.
|
||
testData = [
|
||
['12/12/2000'],
|
||
['12/13/2000'],
|
||
['12/12/2000']
|
||
];
|
||
undoData = [[''], [''], [''], ['']];
|
||
range = ws.getRange4(0, 0);
|
||
range.fillData(testData);
|
||
|
||
getAutofillCase([0, 0, 0, 2], [0, 0, 3, 6], 3, 'Format Date. Asc sequence. Vertical. Selected 3 cells. Negative case - 12/12/2000, 12/13/2000, 12/12/2000.', [['36872'], ['36873'], ['36872'], ['36872']]);
|
||
// Case #6: Format Date. Reverse sequence. Vertical. Selected 3 cells. Negative case - 12/12/2000, 12/13/2000, 12/12/2000.
|
||
undoData = [[''], ['36872'], ['36873'], ['36872']];
|
||
range = ws.getRange4(4, 0);
|
||
range.fillData(testData);
|
||
|
||
getAutofillCase([0, 0, 4, 6], [0, 0, 3, 0], 1, 'Format Date. Reverse sequence. Vertical. Selected 3 cells. Negative case - 12/12/2000, 12/13/2000, 12/12/2000.', [['36872'], ['36873'], ['36872'], ['36872']]);
|
||
// Case #7: Format Date. Asc sequence. Horizontal. Selected 4 cells. Negative case - 12/12/2000, 12/13/2000, 12/14/2000, 12/16/2000.
|
||
clearData(0, 0, 0, 6);
|
||
testData = [
|
||
['12/12/2000', '12/13/2000', '12/14/2000', '12/16/2000']
|
||
];
|
||
undoData = ['', '', '', '', ''];
|
||
range = ws.getRange4(0, 0);
|
||
range.fillData(testData);
|
||
|
||
getAutofillCase([0, 3, 0, 0], [4, 8, 0, 0], 3, 'Format Date. Asc sequence. Horizontal. Selected 4 cells. Negative case - 12/12/2000, 12/13/2000, 12/14/2000, 12/16/2000.', ['36872', '36873', '36874', '36876', '36872']);
|
||
// Case #8: Format Date. Reverse sequence. Horizontal. Selected 4 cells. Negative case - 12/12/2000, 12/13/2000, 12/14/2000, 12/16/2000.
|
||
undoData = ['', '36876', '36874', '36873', '36872'];
|
||
range = ws.getRange4(0, 5);
|
||
range.fillData(testData);
|
||
|
||
getAutofillCase([5, 8, 0, 0], [4, 0, 0, 0], 1, 'Format Date. Reverse sequence. Horizontal. Selected 4 cells. Negative case - 12/12/2000, 12/13/2000, 12/14/2000, 12/16/2000.', ['36876', '36874', '36873', '36872', '36876']);
|
||
// Case #9: Format Date. Asc sequence. Vertical. Selected 1 cell. Non integer value in Date format.
|
||
ws.getRange2('A1:I1').cleanAll();
|
||
ws.getRange2('A1').setValue('12/12/2000');
|
||
ws._getCell(0, 0,function(cell) {
|
||
cell.setValueNumberInternal(36872.5);
|
||
});
|
||
undoData = [[''], [''], [''], ['']];
|
||
|
||
getAutofillCase([0, 0, 0, 0], [0, 0, 1, 4], 3, 'Format Date. Asc sequence. Vertical. Selected 1 cell. Non integer value in Date format.', [['36873'], ['36874'], ['36875'], ['36876']]);
|
||
// Case #10: Format Date. Reverse sequence. Horizontal. Selected 2 cells. Non integer value in Date format.
|
||
ws.getRange2('E1').setValue('12/12/2000');
|
||
ws.getRange2('F1').setValue('12/13/2000');
|
||
ws._getCell(0, 4, function (cell) {
|
||
cell.setValueNumberInternal(36872.5);
|
||
});
|
||
ws._getCell(0, 5, function (cell) {
|
||
cell.setValueNumberInternal(36873.6);
|
||
});
|
||
undoData = ['', '', '', '36872.5'];
|
||
|
||
getAutofillCase([4, 5, 0, 0], [3, 0, 0, 0], 1, 'Format Date. Reverse sequence. Horizontal. Selected 2 cells. Non integer value in Date format.', ['36871', '36870', '36869', '36868']);
|
||
// Case #11: Format Date. Asc sequence. Vertical. Selected 2 cells. Step 0.
|
||
ws.getRange2('A1:F9').cleanAll();
|
||
testData = [
|
||
['12/12/2000'],
|
||
['12/12/2000']
|
||
];
|
||
range = ws.getRange4(0, 0);
|
||
range.fillData(testData);
|
||
undoData = [[''], [''], [''], ['']];
|
||
|
||
getAutofillCase([0, 0, 0, 1], [0, 0, 2, 5], 3, 'Format Date. Asc sequence. Vertical. Selected 2 cells. Step 0.', [['36872'], ['36872'], ['36872'], ['36872']]);
|
||
// Case #12: Format Date & Time. Asc sequence. Vertical. Selected 2 cells. Step - time.
|
||
ws.getRange2('A1:A6').cleanAll();
|
||
testData = [
|
||
['12/12/2000 12:00'],
|
||
['12/12/2000 13:00']
|
||
];
|
||
range = ws.getRange4(0, 0);
|
||
range.fillData(testData);
|
||
undoData = [[''], [''], [''], ['']];
|
||
|
||
getAutofillCase([0, 0, 0, 1], [0, 0, 2, 5], 3, 'Format Date & Time. Asc sequence. Vertical. Selected 2 cells. Step - time.', [['36872.583333333336'], ['36872.62500000001'], ['36872.66666666668'], ['36872.70833333335']]);
|
||
// Case #13: Format Date & Time. Reverse sequence. Vertical. Selected 2 cells. Step - time.
|
||
range = ws.getRange4(4, 0);
|
||
range.fillData(testData);
|
||
undoData = [[''], [''], ['36872.541666666664'], ['36872.5']];
|
||
|
||
getAutofillCase([0, 0, 4, 5], [0, 0, 3, 0], 1, 'Format Date & Time. Reverse sequence. Vertical. Selected 2 cells. Step - time.', [['36872.45833333334'], ['36872.416666666686'], ['36872.37500000003'], ['36872.33333333337']]);
|
||
// Case #14: Format Date & Time. Asc sequence. Horizontal. Selected 1 cell.
|
||
ws.getRange2('A1:A6').cleanAll();
|
||
testData = [
|
||
['12/12/2000 13:00']
|
||
];
|
||
range = ws.getRange4(0, 0);
|
||
range.fillData(testData);
|
||
undoData = ['', '', '', ''];
|
||
|
||
getAutofillCase([0, 0, 0, 0], [1, 4, 0, 0], 3, 'Format Date & Time. Asc sequence. Horizontal. Selected 1 cell.', ['36873.541666666664', '36874.541666666664', '36875.541666666664', '36876.541666666664']);
|
||
// Case #15: Format Date & Time. Reverse sequence. Horizontal. Selected 1 cell.
|
||
range = ws.getRange4(0, 4);
|
||
range.fillData(testData);
|
||
undoData = ['', '', '', '36872.541666666664'];
|
||
|
||
getAutofillCase([4, 4, 0, 0], [3, 0, 0, 0], 1, 'Format Date & Time. Reverse sequence. Horizontal. Selected 1 cell.', ['36871.541666666664', '36870.541666666664', '36869.541666666664', '36868.541666666664']);
|
||
// Case #16: Format Date & Time. Asc sequence. Vertical. Selected 2 cells. Diff days, same time.
|
||
ws.getRange2('A1:F1').cleanAll();
|
||
testData = [
|
||
['12/12/2000 14:00'],
|
||
['12/14/2000 14:00']
|
||
];
|
||
range = ws.getRange4(0, 0);
|
||
range.fillData(testData);
|
||
undoData = [[''], [''], [''], ['']];
|
||
|
||
getAutofillCase([0, 0, 0, 1], [0, 0, 2, 5], 3, 'Format Date & Time. Asc sequence. Vertical. Selected 2 cells. Diff days, same time.', [['36876.583333333336'], ['36878.583333333336'], ['36880.583333333336'], ['36882.583333333336']]);
|
||
// Case #17: Format Date & Time. Reverse sequence. Vertical. Selected 2 cells. Diff days, same time.
|
||
range = ws.getRange4(4, 0);
|
||
range.fillData(testData);
|
||
undoData = [[''], [''], ['36874.583333333336'], ['36872.583333333336']];
|
||
|
||
getAutofillCase([0, 0, 4, 5], [0, 0, 3, 0], 1, 'Format Date & Time. Reverse sequence. Vertical. Selected 2 cells. Diff days, same time.', [['36870.583333333336'], ['36868.583333333336'], ['36866.583333333336'], ['36864.583333333336']]);
|
||
// Case #18: Format Date & Time. Asc sequence. Vertical. Selected 2 cells. Step - time & day.
|
||
testData = [
|
||
['12/12/2000 12:00'],
|
||
['12/14/2000 13:00']
|
||
];
|
||
range = ws.getRange4(0, 0);
|
||
range.fillData(testData);
|
||
undoData = [[''], [''], ['36872.583333333336'], ['36874.583333333336']];
|
||
|
||
getAutofillCase([0, 0, 0, 1], [0, 0, 2, 5], 3, 'Format Date & Time. Asc sequence. Vertical. Selected 2 cells. Step - time & day.', [['36876.583333333336'], ['36878.62500000001'], ['36880.66666666668'], ['36882.70833333335']]);
|
||
// Case #19: Format Date & Time. Reverse sequence. Vertical. Selected 2 cells. Step - time & day.
|
||
range = ws.getRange4(4, 0);
|
||
range.fillData(testData);
|
||
undoData = [[''], [''], ['36874.541666666664'], ['36872.5']];
|
||
|
||
getAutofillCase([0, 0, 4, 5], [0, 0, 3, 0], 1, 'Format Date & Time. Reverse sequence. Vertical. Selected 2 cells. Step - time & day.', [['36870.45833333334'], ['36868.416666666686'], ['36866.37500000003'], ['36864.33333333337']]);
|
||
// Case #20: Format Date & Time. Asc sequence. Horizontal. Negative case. Same day, time - 12:00, 13:00, 12:00.
|
||
ws.getRange2('A1:A6').cleanAll();
|
||
testData = [
|
||
['12/12/2000 12:00', '12/12/2000 13:00', '12/12/2000 12:00']
|
||
];
|
||
range = ws.getRange4(0, 0);
|
||
range.fillData(testData);
|
||
undoData = ['', '', '', ''];
|
||
|
||
getAutofillCase([0, 2, 0, 0], [3, 6, 0, 0], 3, 'Format Date & Time. Asc sequence. Horizontal. Negative case: Same day, time - 12:00, 13:00, 12:00.', ['36872.5', '36872.5', '36872.5', '36872.5']);
|
||
// Case #21: Format Date & Time. Reverse sequence. Horizontal. Negative case. Same day, time - 12:00, 13:00, 12:00.
|
||
range = ws.getRange4(0, 4);
|
||
range.fillData(testData);
|
||
undoData = ['', '36872.5', '36872.541666666664', '36872.5'];
|
||
|
||
getAutofillCase([4, 6, 0, 0], [3, 0, 0, 0], 1, 'Format Date & Time. Reverse sequence. Horizontal. Negative case: Same day, time - 12:00, 13:00, 12:00.', ['36872.5', '36872.5', '36872.5', '36872.5']);
|
||
// Case #22: Format Date & Time. Asc sequence. Horizontal. Negative case. Same day, time - 13:00, 14:00, 16:00.
|
||
testData = [
|
||
['12/12/2000 13:00', '12/12/2000 14:00', '12/12/2000 16:00']
|
||
];
|
||
range = ws.getRange4(0, 0);
|
||
range.fillData(testData);
|
||
undoData = ['', '36872.5', '36872.541666666664', '36872.5'];
|
||
|
||
getAutofillCase([0, 2, 0, 0], [3, 6, 0, 0], 3, 'Format Date & Time. Asc sequence. Horizontal. Negative case: Same day, time - 13:00, 14:00, 16:00.', ['36872.541666666664', '36872.541666666664', '36872.541666666664', '36872.541666666664']);
|
||
// Case #23: Format Date & Time. Reverse sequence. Horizontal. Negative case. Same day, time - 13:00, 14:00, 16:00.
|
||
range = ws.getRange4(0, 4);
|
||
range.fillData(testData);
|
||
undoData = ['', '36872.666666666664', '36872.583333333336', '36872.541666666664'];
|
||
|
||
getAutofillCase([4, 6, 0, 0], [3, 0, 0, 0], 1, 'Format Date & Time. Reverse sequence. Horizontal. Negative case: Same day, time - 13:00, 14:00, 16:00.', ['36872.541666666664', '36872.541666666664', '36872.541666666664', '36872.541666666664']);
|
||
// Case #24: Format Date & Time. Asc sequence. Vertical. Negative case. Diff days, same time.
|
||
ws.getRange2('A1:F1').cleanAll();
|
||
testData = [
|
||
['12/12/2000 12:00'],
|
||
['12/13/2000 12:00'],
|
||
['12/12/2000 12:00']
|
||
];
|
||
range = ws.getRange4(0, 0);
|
||
range.fillData(testData);
|
||
undoData = [[''], [''], [''], ['']];
|
||
|
||
getAutofillCase([0, 0, 0, 2], [0, 0, 3, 6], 3, 'Format Date & Time. Asc sequence. Vertical. Negative case: Diff days, same time.', [['36872.5'], ['36873.5'], ['36872.5'], ['36872.5']]);
|
||
// Case #25: Format Date & Time. Reverse sequence. Vertical. Negative case. Diff days, same time.
|
||
range = ws.getRange4(4, 0);
|
||
range.fillData(testData);
|
||
undoData = [[''], ['36872.5'], ['36873.5'], ['36872.5']];
|
||
|
||
getAutofillCase([0, 0, 4, 6], [0, 0, 3, 0], 1, 'Format Date & Time. Reverse sequence. Vertical. Negative case: Diff days, same time.', [['36872.5'], ['36873.5'], ['36872.5'], ['36872.5']]);
|
||
// Case #26: Format Date & Time. Asc sequence. Vertical. Negative case. Diff days & time.
|
||
testData = [
|
||
['12/12/2000 12:00'],
|
||
['12/13/2000 13:00'],
|
||
['12/15/2000 14:00']
|
||
];
|
||
range = ws.getRange4(0, 0);
|
||
range.fillData(testData);
|
||
undoData = [[''], ['36872.5'], ['36873.5'], ['36872.5']];
|
||
|
||
getAutofillCase([0, 0, 0, 2], [0, 0, 3, 6], 3, 'Format Date & Time. Asc sequence. Vertical. Negative case: Diff days & time.', [['36872.5'], ['36873.541666666664'], ['36875.583333333336'], ['36872.5']]);
|
||
// Case #27: Format Date & Time. Reverse sequence. Vertical. Negative case. Diff days & time.
|
||
range = ws.getRange4(4, 0);
|
||
range.fillData(testData);
|
||
undoData = [[''], ['36875.583333333336'], ['36873.541666666664'], ['36872.5']];
|
||
|
||
getAutofillCase([0, 0, 4, 6], [0, 0, 3, 0], 1, 'Format Date & Time. Reverse sequence. Vertical. Negative case: Diff days & time.', [['36875.583333333336'], ['36873.541666666664'], ['36872.5'], ['36875.583333333336']]);
|
||
// Case #28: Mixed format. Asc sequence. Horizontal. Same day, diff time.
|
||
ws.getRange2('A1:G7').cleanAll();
|
||
testData = [
|
||
['12/12/2000', '12/12/2000 12:00', '12/12/2000 13:00']
|
||
];
|
||
range = ws.getRange4(0, 0);
|
||
range.fillData(testData);
|
||
undoData = ['', '', '', ''];
|
||
|
||
getAutofillCase([0, 2, 0, 0], [3, 6, 0, 0], 3, 'Mixed format. Asc sequence. Horizontal. Same day, diff time.', ['36872.5', '36872.5', '36872.5', '36872.5']);
|
||
// Case #29: Mixed format. Reverse sequence. Horizontal. Same day, diff time. First cell with Date format
|
||
range = ws.getRange4(0, 4);
|
||
range.fillData(testData);
|
||
undoData = ['', '36872.541666666664', '36872.5', '36872'];
|
||
|
||
getAutofillCase([4, 6, 0, 0], [3, 0, 0, 0], 1, 'Mixed format. Reverse sequence. Horizontal. Same day, diff time. First Date', ['36872.5', '36872.5', '36872.5', '36872.5']);
|
||
// Case #30: Mixed format. Asc sequence. Horizontal. Same day, diff time. First cell with Date & Time format
|
||
testData = [
|
||
['12/12/2000 12:00', '12/12/2000', '12/12/2000 13:00']
|
||
];
|
||
range = ws.getRange4(0, 0);
|
||
range.fillData(testData);
|
||
undoData = ['', '36872', '36872.5', '36872.541666666664'];
|
||
|
||
getAutofillCase([0, 2, 0, 0], [3, 6, 0, 0], 3, 'Mixed format. Asc sequence. Horizontal. Same day, diff time. First Date & Time', ['36872.5', '36872.5', '36872.5', '36872.5']);
|
||
// Case #31: Mixed format. Reverse sequence. Horizontal. Same day, diff time. First cell with Date & Time format
|
||
ws.getRange2('A1:F1').cleanAll();
|
||
range = ws.getRange4(0, 4);
|
||
range.fillData(testData);
|
||
undoData = ['', '', '', ''];
|
||
|
||
getAutofillCase([4, 6, 0, 0], [3, 0, 0, 0], 1, 'Mixed format. Reverse sequence. Horizontal. Same day, diff time. First Date & Time', ['36872.5', '36872.5', '36872.5', '36872.5']);
|
||
// Case #32: Mixed format. Asc sequence. Vertical. Diff day, same time. First Date format.
|
||
ws.getRange2('A1:F1').cleanAll();
|
||
testData = [
|
||
['12/12/2000'],
|
||
['12/13/2000 12:00'],
|
||
['12/14/2000 12:00']
|
||
];
|
||
range = ws.getRange4(0, 0);
|
||
range.fillData(testData);
|
||
undoData = [[''], [''], [''], ['']];
|
||
|
||
getAutofillCase([0, 0, 0, 2], [0, 0, 3, 6], 3, 'Mixed format. Asc sequence. Vertical. Diff day, same time. First Date', [['36875.5'], ['36876.5'], ['36877.5'], ['36878.5']]);
|
||
// Case #33: Mixed format. Reverse sequence. Vertical. Diff day, same time. First Date format.
|
||
range = ws.getRange4(4, 0);
|
||
range.fillData(testData);
|
||
undoData = [[''], ['36874.5'], ['36873.5'], ['36872']];
|
||
|
||
getAutofillCase([0, 0, 4, 6], [0, 0, 3, 0], 1, 'Mixed format. Reverse sequence. Vertical. Diff day, same time. First Date', [['36871.5'], ['36870.5'], ['36869.5'], ['36868.5']]);
|
||
// Case #34: Mixed format. Asc sequence. Vertical. Diff day, same time. First Date & Time format.
|
||
ws.getRange2('A1:A8').cleanAll();
|
||
testData = [
|
||
['12/12/2000 12:00'],
|
||
['12/14/2000 12:00'],
|
||
['12/16/2000']
|
||
];
|
||
range = ws.getRange4(0, 0);
|
||
range.fillData(testData);
|
||
undoData = [[''], [''], [''], ['']];
|
||
|
||
getAutofillCase([0, 0, 0, 2], [0, 0, 3, 6], 3, 'Mixed format. Asc sequence. Vertical. Diff day, same time. First Date & Time', [['36878.5'], ['36880.5'], ['36882.5'], ['36884.5']]);
|
||
// Case #35: Mixed format. Reverse sequence. Vertical. Diff day, same time. First Date & Time format.
|
||
ws.getRange2('A1:A8').cleanAll();
|
||
range = ws.getRange4(4, 0);
|
||
range.fillData(testData);
|
||
undoData = [[''], [''], [''], ['']];
|
||
|
||
getAutofillCase([0, 0, 4, 6], [0, 0, 3, 0], 1, 'Mixed format. Reverse sequence. Vertical. Diff day, same time. First Date & Time', [['36870.5'], ['36868.5'], ['36866.5'], ['36864.5']]);
|
||
// Case #36: Mixed format. Asc sequence. Vertical. Negative case: 12/12/2000, 12/13/2000, 12/12/2000 12:00. First Date format.
|
||
ws.getRange2('A1:A8').cleanAll();
|
||
testData = [
|
||
['12/12/2000'],
|
||
['12/13/2000 12:00'],
|
||
['12/12/2000 13:00']
|
||
];
|
||
range = ws.getRange4(0, 0);
|
||
range.fillData(testData);
|
||
undoData = [[''], [''], [''], ['']];
|
||
|
||
getAutofillCase([0, 0, 0, 2], [0, 0, 3, 6], 3, 'Mixed format. Asc sequence. Vertical. Negative case. First Date', [['36872'], ['36873.5'], ['36872.541666666664'], ['36872']]);
|
||
// Case #37: Mixed format. Reverse sequence. Vertical. Negative case: 12/12/2000, 12/13/2000 12:00, 12/12/2000 13:00. First Date format.
|
||
range = ws.getRange4(4, 0);
|
||
range.fillData(testData);
|
||
undoData = [[''], ['36872.541666666664'], ['36873.5'], ['36872']];
|
||
|
||
getAutofillCase([0, 0, 4, 6], [0, 0, 3, 0], 1, 'Mixed format. Reverse sequence. Vertical. Negative case. First Date', [['36872.541666666664'], ['36873.5'], ['36872'], ['36872.541666666664']]);
|
||
// Case #38: Mixed format. Asc sequence. Vertical. Negative case: 12/12/2000 12:00, 12/13/2000, 12/15/2000 13:00. First Date & Time format.
|
||
ws.getRange2('A1:A8').cleanAll();
|
||
testData = [
|
||
['12/12/2000 12:00'],
|
||
['12/13/2000'],
|
||
['12/15/2000 13:00']
|
||
];
|
||
range = ws.getRange4(0, 0);
|
||
range.fillData(testData);
|
||
undoData = [[''], [''], [''], ['']];
|
||
|
||
getAutofillCase([0, 0, 0, 2], [0, 0, 3, 6], 3, 'Mixed format. Asc sequence. Vertical. Negative case. First Date & Time', [['36872.5'], ['36873'], ['36875.541666666664'], ['36872.5']]);
|
||
// Case #39: Mixed format. Reverse sequence. Vertical. Negative case: 12/12/2000 12:00, 12/13/2000, 12/15/2000 13:00. First Date & Time format.
|
||
range = ws.getRange4(4, 0);
|
||
range.fillData(testData);
|
||
undoData = [[''], ['36875.541666666664'], ['36873'], ['36872.5']];
|
||
|
||
getAutofillCase([0, 0, 4, 6], [0, 0, 3, 0], 1, 'Mixed format. Reverse sequence. Vertical. Negative case. First Date & Time', [['36875.541666666664'], ['36873'], ['36872.5'], ['36875.541666666664']]);
|
||
// Case #40: 1900 year. Asc sequence. Horizontal. One selected cell. Date format.
|
||
ws.getRange2('A1:A8').cleanAll();
|
||
testData = [
|
||
['01/01/1900']
|
||
];
|
||
range = ws.getRange4(0, 0);
|
||
range.fillData(testData);
|
||
undoData = ['', '', '', ''];
|
||
|
||
getAutofillCase([0, 0, 0, 0], [1, 4, 0, 0], 3, '1900 year. Asc sequence. Horizontal. One selected cell. Date format', ['2', '3', '4', '5']);
|
||
// Case #41: 1900 year. Reverse sequence. Horizontal. One selected cell. Date format.
|
||
range = ws.getRange4(0, 4);
|
||
range.fillData(testData);
|
||
undoData = ['', '', '', '1'];
|
||
|
||
getAutofillCase([4, 4, 0, 0], [3, 0, 0, 0], 1, '1900 year. Reverse sequence. Horizontal. One selected cell. Date format', ['0', '1', '1', '1']);
|
||
// Case #42: 1900 year. Asc sequence. Horizontal. Date format.
|
||
testData = [
|
||
['01/01/1900', '01/03/1900']
|
||
];
|
||
range = ws.getRange4(0, 0);
|
||
range.fillData(testData);
|
||
undoData = ['', '', '1', ''];
|
||
|
||
getAutofillCase([0, 1, 0, 0], [2, 5, 0, 0], 3, '1900 year. Asc sequence. Horizontal. Date format', ['5', '7', '9', '11']);
|
||
// Case #43: 1900 year. Reverse sequence. Horizontal. Date format.
|
||
range = ws.getRange4(0, 4);
|
||
range.fillData(testData);
|
||
undoData = ['', '', '3', '1'];
|
||
|
||
getAutofillCase([4, 5, 0, 0], [3, 0, 0, 0], 1, '1900 year. Reverse sequence. Horizontal. Date format', ['3', '1', '3', '1']);
|
||
// Case #44: 1900 year. Asc sequence. Vertical. One selected cell. Date & Time format.
|
||
ws.getRange2('A1:F1').cleanAll();
|
||
testData = [
|
||
['01/01/1900 12:00']
|
||
];
|
||
range = ws.getRange4(0, 0);
|
||
range.fillData(testData);
|
||
undoData = [[''], [''], [''], ['']];
|
||
|
||
getAutofillCase([0, 0, 0, 0], [0, 0, 1, 4], 3, '1900 year. Asc sequence. Vertical. One selected cell. Date & Time format', [['2.5'], ['3.5'], ['4.5'], ['5.5']]);
|
||
// Case #45: 1900 year. Reverse sequence. Vertical. One selected cell. Date & Time format.
|
||
range = ws.getRange4(4, 0);
|
||
range.fillData(testData);
|
||
undoData = [[''], [''], [''], ['1.5']];
|
||
|
||
getAutofillCase([0, 0, 4, 4], [0, 0, 3, 0], 1, '1900 year. Reverse sequence. Vertical. One selected cell. Date & Time format', [['0.5'], ['1.5'], ['1.5'], ['1.5']]);
|
||
// Case #46: 1900 year. Asc sequence. Vertical. Date & Time format.
|
||
testData = [
|
||
['01/01/1900 1:00'],
|
||
['01/01/1900 12:00']
|
||
];
|
||
range = ws.getRange4(0, 0);
|
||
range.fillData(testData);
|
||
undoData = [[''], [''], ['1.5'], ['']];
|
||
|
||
getAutofillCase([0, 0, 0, 1], [0, 0, 2, 5], 3, '1900 year. Asc sequence. Vertical. Date & Time format', [['1.958333333333333'], ['2.416666666666666'], ['2.874999999999999'], ['3.333333333333332']]);
|
||
// Case #47: 1900 year. Reverse sequence. Vertical. Date & Time format.
|
||
range = ws.getRange4(4, 0);
|
||
range.fillData(testData);
|
||
undoData = [[''], [''], ['1.5'], ['1.0416666666666667']];
|
||
|
||
getAutofillCase([0, 0, 4, 5], [0, 0, 3, 0], 1, '1900 year. Reverse sequence. Vertical. Date & Time format', [['0.5833333333333333'], ['0.12499999999999978'], ['-0.3333333333333337'], ['-0.7916666666666672']]);
|
||
// Case #48: 1900 year. Asc sequence. Horizontal. Mixed format.
|
||
ws.getRange2('A1:A8').cleanAll();
|
||
testData = [
|
||
['01/01/1900', '01/02/1900 12:00']
|
||
];
|
||
range = ws.getRange4(0, 0);
|
||
range.fillData(testData);
|
||
undoData = ['', '', '', ''];
|
||
|
||
getAutofillCase([0, 1, 0, 0], [2, 5, 0, 0], 3, '1900 year. Asc sequence. Horizontal. Mixed format', ['3.5', '4.5', '5.5', '6.5']);
|
||
// Case #49: 1900 year. Reverse sequence. Horizontal. Mixed format.
|
||
range = ws.getRange4(0, 4);
|
||
range.fillData(testData);
|
||
undoData = ['', '', '2.5', '1'];
|
||
|
||
getAutofillCase([4, 5, 0, 0], [3, 0, 0, 0], 1, '1900 year. Reverse sequence. Horizontal. Mixed format', ['0.5', '1', '2.5', '1']);
|
||
// Case #50: Time format. Asc sequence. Vertical. One selected cell.
|
||
ws.getRange2('A1:F1').cleanAll();
|
||
testData = [
|
||
['12:00:00']
|
||
];
|
||
range = ws.getRange4(0, 0);
|
||
range.fillData(testData);
|
||
undoData = [[''], [''], [''], ['']];
|
||
|
||
getAutofillCase([0, 0, 0, 0], [0, 0, 1, 4], 3, 'Time format. Asc sequence. Vertical. One selected cell', [['0.5416666666666666'], ['0.5833333333333334'], ['0.625'], ['0.6666666666666666']]);
|
||
// Case #51: Time format. Reverse sequence. Vertical. One selected cell.
|
||
testData = [['0:00:00']]
|
||
range = ws.getRange4(24, 0);
|
||
range.fillData(testData);
|
||
undoData = [[''], [''], [''], [''], [''], [''], [''], [''], [''], [''], [''], [''], [''], [''], [''],
|
||
[''], [''], [''], [''], [''], [''], [''], [''], ['0.5']];
|
||
let expectedData = [['0.9583333333333334'], ['0.9166666666666666'], ['0.875'], ['0.8333333333333334'], ['0.7916666666666667'],
|
||
['0.75'], ['0.7083333333333334'], ['0.6666666666666667'], ['0.625'], ['0.5833333333333334'], ['0.5416666666666667'],
|
||
['0.5'], ['0.45833333333333337'], ['0.41666666666666674'], ['0.375'], ['0.33333333333333337'], ['0.29166666666666674'],
|
||
['0.25'], ['0.20833333333333337'], ['0.16666666666666674'], ['0.125'], ['0.08333333333333337'], ['0.04166666666666674'], ['0']];
|
||
|
||
getAutofillCase([0, 0, 24, 24], [0, 0, 23, 0], 1, 'Time format. Reverse sequence. Vertical. One selected cell', expectedData);
|
||
// Case #52: Time format. Asc sequence. Vertical. Multiple selected cells.
|
||
testData = [
|
||
['12:00:00'],
|
||
['14:00:00']
|
||
];
|
||
range = ws.getRange4(0, 0);
|
||
range.fillData(testData);
|
||
undoData = [[''], [''], [''], [''], [''], ['']];
|
||
|
||
getAutofillCase([0, 0, 0, 1], [0, 0, 2, 7], 3, 'Time format. Asc sequence. Vertical. Multiple selected cells', [['0.6666666666666666'], ['0.7499999999999999'], ['0.8333333333333331'], ['0.9166666666666664'], ['0.9999999999999997'], ['1.083333333333333']]);
|
||
// Case #53: Time format. Reverse sequence. Vertical. Multiple selected cells.
|
||
testData = [
|
||
['23:00:00'],
|
||
['0:00:00']
|
||
];
|
||
range = ws.getRange4(23, 0);
|
||
range.fillData(testData);
|
||
undoData = [[''], [''], [''], [''], [''], [''], [''], [''], [''], [''], [''], [''], [''], [''], [''], [''], [''],
|
||
[''], [''], [''], [''], ['0.5833333333333334'], ['0.5']];
|
||
expectedData = [
|
||
['1.9166666666666667'], ['2.875'], ['3.8333333333333335'], ['4.791666666666667'], ['5.75'],
|
||
['6.708333333333334'], ['7.666666666666667'], ['8.625'], ['9.583333333333334'], ['10.541666666666668'], ['11.5'],
|
||
['12.458333333333334'], ['13.416666666666668'], ['14.375'], ['15.333333333333334'], ['16.291666666666668'],
|
||
['17.25'], ['18.208333333333336'], ['19.166666666666668'], ['20.125'], ['21.083333333333336'], ['22.041666666666668'], ['23']
|
||
];
|
||
|
||
getAutofillCase([0, 0, 23, 24], [0, 0, 22, 0], 1, 'Time format. Reverse sequence. Vertical. Multiple selected cells', expectedData);
|
||
// Case #54: Time format. Asc sequence. Horizontal. Multiple selected cells. Start from 1.
|
||
ws.getRange2('A1').setValue('0:00:00');
|
||
ws.getRange2('B1').setValue('1:00:00');
|
||
ws._getCell(0, 0, function (cell) {
|
||
cell.setValueNumberInternal(1);
|
||
});
|
||
ws._getCell(0, 1, function (cell) {
|
||
cell.setValueNumberInternal(1.04166666666667);
|
||
});
|
||
undoData = ['', '', '', ''];
|
||
|
||
getAutofillCase([0, 1, 0, 0], [2, 5, 0, 0], 3, 'Time format. Asc sequence. Horizontal. Multiple selected cells. Start from 1.', ['1.0833333333333401', '1.1250000000000102', '1.1666666666666803', '1.2083333333333504']);
|
||
// Case #55: Time format. Reverse sequence. Horizontal. Multiple selected cells. Start from 1.
|
||
ws.getRange2('A1:Z30').cleanAll();
|
||
ws.getRange2('Y1').setValue('23:00:00');
|
||
ws.getRange2('Z1').setValue('00:00:00');
|
||
ws._getCell(0, 24, function (cell) {
|
||
cell.setValueNumberInternal(0.958333333333333);
|
||
});
|
||
ws._getCell(0, 25, function (cell) {
|
||
cell.setValueNumberInternal(1);
|
||
});
|
||
undoData = ['', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', ''];
|
||
expectedData = ['0.9166666666666661', '0.8749999999999991', '0.8333333333333321', '0.7916666666666652', '0.7499999999999982', '0.7083333333333313', '0.6666666666666643',
|
||
'0.6249999999999973', '0.5833333333333304', '0.5416666666666634', '0.49999999999999645', '0.4583333333333295', '0.4166666666666625', '0.37499999999999556', '0.3333333333333286',
|
||
'0.29166666666666163', '0.24999999999999467', '0.2083333333333277', '0.16666666666666075', '0.12499999999999378', '0.08333333333332682', '0.04166666666665986', '1', '0.958333333333333'];
|
||
|
||
getAutofillCase([24, 25, 0, 0], [23, 0, 0, 0], 1, 'Time format. Reverse sequence. Horizontal. Multiple selected cells. Start from 1.', expectedData);
|
||
// Case #56: Time format. Asc sequence. Vertical. Multiple selected cells. Start from 36872.5.
|
||
ws.getRange2('A1:Z1').cleanAll();
|
||
ws.getRange2('A1').setValue('12:00:00');
|
||
ws.getRange2('A2').setValue('13:00:00');
|
||
ws._getCell(0, 0, function (cell) {
|
||
cell.setValueNumberInternal(36872.5);
|
||
});
|
||
ws._getCell(1, 0, function (cell) {
|
||
cell.setValueNumberInternal(36873.5416666667);
|
||
});
|
||
undoData = [[''], [''], [''], [''], [''], [''], [''], [''], [''], [''], ['']];
|
||
expectedData = [['36872.5833333334'], ['36872.6250000001'], ['36872.6666666668'], ['36872.7083333335'], ['36872.750000000204'], ['36872.791666666904'], ['36872.833333333605'],
|
||
['36872.875000000306'], ['36872.916666667006'], ['36872.95833333371'], ['36873.00000000041']];
|
||
|
||
getAutofillCase([0, 0, 0, 1], [0, 0, 2, 12], 3, 'Time format. Asc sequence. Vertical. Multiple selected cells. Start from 36872.5.', expectedData);
|
||
// Case #57: Time format. Reverse sequence. Vertical. Multiple selected cells. Start from 36872.5.
|
||
ws.getRange2('A14').setValue('12:00:00');
|
||
ws.getRange2('A15').setValue('13:00:00');
|
||
ws._getCell(13, 0, function (cell) {
|
||
cell.setValueNumberInternal(36872.5);
|
||
});
|
||
ws._getCell(14, 0, function (cell) {
|
||
cell.setValueNumberInternal(36873.5416666667);
|
||
});
|
||
undoData = [[''], [''], [''], [''], [''], [''], [''], [''], [''], [''], [''], ['36873.5416666667'], ['36872.5']];
|
||
expectedData = [['36872.4583333333'], ['36872.4166666666'], ['36872.3749999999'], ['36872.3333333332'], ['36872.2916666665'],
|
||
['36872.249999999796'], ['36872.208333333096'], ['36872.166666666395'], ['36872.124999999694'], ['36872.083333332994'], ['36872.04166666629'],
|
||
['36871.99999999959'], ['36871.95833333289']];
|
||
|
||
getAutofillCase([0, 0, 13, 14], [0, 0, 12, 0], 1, 'Time format. Reverse sequence. Vertical. Multiple selected cells. Start from 36872.5.', expectedData);
|
||
ws.getRange2('A1:A20').cleanAll();
|
||
// Case #58: Date format. Asc sequence. Horizontal. Two selected cells. Step - month.
|
||
testData = [
|
||
['01/01/2000', '02/01/2000']
|
||
];
|
||
range = ws.getRange4(0, 0);
|
||
range.fillData(testData);
|
||
undoData = ['', '', '', '', '', ''];
|
||
expectedData = ['36586', '36617', '36647', '36678', '36708', '36739'];
|
||
getAutofillCase([0, 1, 0, 0], [2, 7, 0, 0], 3, 'Date format. Asc sequence. Horizontal. Two selected cells. Step - month.', expectedData);
|
||
// Case #59: Date format. Reverse sequence. Horizontal. Two selected cells. Step - month.
|
||
range = ws.getRange4(0, 6);
|
||
range.fillData(testData);
|
||
undoData = ['', '', '', '', '36557', '36526'];
|
||
expectedData = ['36495', '36465', '36434', '36404', '36373', '36342'];
|
||
getAutofillCase([6, 7, 0, 0], [5, 0, 0, 0], 1, 'Date format. Reverse sequence. Horizontal. Two selected cells. Step - month.', expectedData);
|
||
ws.getRange2('A1:Z20').cleanAll();
|
||
// Case #60: Date format. Asc sequence. Vertical. Three selected cells. Step - month.
|
||
testData = [
|
||
['01/01/2000'],
|
||
['03/01/2000'],
|
||
['05/01/2000']
|
||
];
|
||
range = ws.getRange4(0, 0);
|
||
range.fillData(testData);
|
||
undoData = [[''], [''], [''], [''], [''], [''], [''], ['']];
|
||
expectedData = [['36708'], ['36770'], ['36831'], ['36892'], ['36951']];
|
||
getAutofillCase([0, 0, 0, 2], [0, 0, 3, 7], 3, 'Date format. Asc sequence. Vertical. Three selected cells. Step - month.', expectedData);
|
||
// Case #61: Date format. Reverse sequence. Vertical. Three selected cells. Step - month.
|
||
range = ws.getRange4(5, 0);
|
||
range.fillData(testData);
|
||
undoData = [[''], [''], ['36647'], ['36586'], ['36526']];
|
||
expectedData = [['36465'], ['36404'], ['36342'], ['36281'], ['36220']];
|
||
getAutofillCase([0, 0, 5, 7], [0, 0, 4, 0], 1, 'Date format. Reverse sequence. Vertical. Three selected cells. Step - month.', expectedData);
|
||
ws.getRange2('A1:A20').cleanAll();
|
||
// Case #62: Date format. Asc sequence. Horizontal. Three selected cells. Step - month. Negative case - incorrect sequence.
|
||
testData = [
|
||
['01/01/2000', '03/01/2000', '04/01/2000']
|
||
];
|
||
range = ws.getRange4(0, 0);
|
||
range.fillData(testData);
|
||
undoData = ['', '', '', '', ''];
|
||
expectedData = ['36526', '36586', '36617', '36526', '36586'];
|
||
getAutofillCase([0, 2, 0, 0], [3, 7, 0, 0], 3, 'Date format. Asc sequence. Horizontal. Three selected cells. Step - month. Negative case - incorrect sequence.', expectedData);
|
||
// Case #63: Date format. Reverse sequence. Horizontal. Three selected cells. Step - month. Negative case - incorrect sequence.
|
||
range = ws.getRange4(0, 5);
|
||
range.fillData(testData);
|
||
undoData = ['', '', '36617', '36586', '36526'];
|
||
expectedData = ['36617', '36586', '36526', '36617', '36586'];
|
||
getAutofillCase([5, 7, 0, 0], [4, 0, 0, 0], 1, 'Date format. Reverse sequence. Horizontal. Three selected cells. Step - month. Negative case - incorrect sequence.', expectedData);
|
||
ws.getRange2('A1:Z20').cleanAll();
|
||
// Case #64: Date format. Asc sequence. Vertical. Two selected cells. Step - month. 1900 year.
|
||
testData = [
|
||
['01/01/1900'],
|
||
['02/01/1900']
|
||
];
|
||
range = ws.getRange4(0, 0);
|
||
range.fillData(testData);
|
||
undoData = [[''], [''], [''], [''], [''], ['']];
|
||
expectedData = [['61'], ['92'], ['122'], ['153'], ['183'], ['214']];
|
||
getAutofillCase([0, 0, 0, 1], [0, 0, 2, 7], 3, 'Date format. Asc sequence. Vertical. Two selected cells. Step - month. 1900 year.', expectedData);
|
||
// Case #65: Date format. Reverse sequence. Vertical. Two selected cells. Step - month. 1900 year.
|
||
testData = [
|
||
['04/01/1900'],
|
||
['06/01/1900']
|
||
];
|
||
range = ws.getRange4(6, 0);
|
||
range.fillData(testData);
|
||
undoData = [[''], [''], [''], [''], ['32'], ['1']];
|
||
expectedData = [['32'], ['92'], ['153'], ['92'], ['153'], ['92']];
|
||
getAutofillCase([0, 0, 6, 7], [0, 0, 5, 0], 1, 'Date format. Reverse sequence. Vertical. Two selected cells. Step - month. 1900 year.', expectedData);
|
||
ws.getRange2('A1:A20').cleanAll();
|
||
// Case #66: Date & Time format. Asc sequence. Horizontal. Two selected cells. Step - month.
|
||
testData = [
|
||
['01/01/2000 12:00', '02/01/2000 13:00']
|
||
];
|
||
range = ws.getRange4(0, 0);
|
||
range.fillData(testData);
|
||
undoData = ['', '', '', '', '', '', '', '', '', '', '', ''];
|
||
expectedData = ['36586.583333333336', '36617.62500000001', '36647.66666666668', '36678.70833333335', '36708.75000000002', '36739.79166666669', '36770.833333333365', '36800.87500000004', '36831.91666666671', '36861.95833333338', '36893.00000000005', '36924.04166666672'];
|
||
getAutofillCase([0, 1, 0, 0], [2, 13, 0, 0], 3, 'Date & Time format. Asc sequence. Horizontal. Two selected cells. Step - month.', expectedData);
|
||
// Case #67: Date & Time format. Reverse sequence. Horizontal. Two selected cells. Step - month.
|
||
range = ws.getRange4(0, 12);
|
||
range.fillData(testData);
|
||
undoData = ['', '', '', '', '', '', '', '', '', '', '36557.541666666664', '36526.5'];
|
||
expectedData = ['36495.45833333334', '36465.416666666686', '36434.37500000003', '36404.33333333337', '36373.291666666715', '36342.25000000006', '36312.2083333334', '36281.166666666744', '36251.12500000009', '36220.08333333343', '36192.04166666677', '36161.00000000012'];
|
||
getAutofillCase([12, 13, 0, 0], [11, 0, 0, 0], 1, 'Date & Time format. Reverse sequence. Horizontal. Two selected cells. Step - month.', expectedData);
|
||
ws.getRange2('A1:Z20').cleanAll();
|
||
// Case #68: Date & Time format. Asc sequence. Vertical. Three selected cells. Step - month.
|
||
testData = [
|
||
['02/01/2000 12:00'],
|
||
['04/01/2000 14:00'],
|
||
['06/01/2000 16:00']
|
||
];
|
||
range = ws.getRange4(0, 0);
|
||
range.fillData(testData);
|
||
undoData = [[''], [''], [''], [''], ['']];
|
||
expectedData = [['36739.5'], ['36800.5'], ['36861.5'], ['36923.5'], ['36982.5']];
|
||
getAutofillCase([0, 0, 0, 2], [0, 0, 3, 7], 3, 'Date & Time format. Asc sequence. Vertical. Three selected cells. Step - month.', expectedData);
|
||
// Case #69: Date & Time format. Reverse sequence. Vertical. Three selected cells. Step - month.
|
||
range = ws.getRange4(5, 0);
|
||
range.fillData(testData);
|
||
undoData = [[''], [''], ['36678.666666666664'], ['36617.583333333336'], ['36557.5']];
|
||
expectedData = [['36495.5'], ['36434.5'], ['36373.5'], ['36312.5'], ['36251.5']];
|
||
getAutofillCase([0, 0, 5, 7], [0, 0, 4, 0], 1, 'Date & Time format. Reverse sequence. Vertical. Three selected cells. Step - month.', expectedData);
|
||
ws.getRange2('A1:A20').cleanAll();
|
||
// Case #70: Date & Time format. Asc sequence. Horizontal. Three selected cells. Step - month. Negative case - incorrect sequence.
|
||
testData = [
|
||
['02/01/2000 12:00', '04/01/2000 14:00', '07/01/2000 16:00']
|
||
];
|
||
range = ws.getRange4(0, 0);
|
||
range.fillData(testData);
|
||
undoData = ['', '', '', '', ''];
|
||
expectedData = ['36557.5', '36617.583333333336', '36708.666666666664', '36557.5', '36617.583333333336'];
|
||
getAutofillCase([0, 2, 0, 0], [3, 7, 0, 0], 3, 'Date & Time format. Asc sequence. Horizontal. Three selected cells. Step - month. Negative case - incorrect sequence.', expectedData);
|
||
// Case #71: Date & Time format. Reverse sequence. Horizontal. Three selected cells. Step - month. Negative case - incorrect sequence.
|
||
range = ws.getRange4(0, 5);
|
||
range.fillData(testData);
|
||
undoData = ['', '', '36708.666666666664', '36617.583333333336', '36557.5'];
|
||
expectedData = ['36708.666666666664', '36617.583333333336', '36557.5', '36708.666666666664', '36617.583333333336'];
|
||
getAutofillCase([5, 7, 0, 0], [4, 0, 0, 0], 1, 'Date & Time format. Reverse sequence. Horizontal. Three selected cells. Step - month. Negative case - incorrect sequence.', expectedData);
|
||
ws.getRange2('A1:Z20').cleanAll();
|
||
// Case #72: Date & Time format. Asc sequence. Vertical. Two selected cells. Step - month. 1900 year.
|
||
testData = [
|
||
['02/01/1900 12:00'],
|
||
['04/01/1900 14:00']
|
||
];
|
||
range = ws.getRange4(0, 0);
|
||
range.fillData(testData);
|
||
undoData = [[''], [''], [''], [''], [''], ['']];
|
||
expectedData = [['153.66666666666666'], ['214.75'], ['275.8333333333333'], ['336.91666666666663'], ['398.99999999999994'], ['458.08333333333326']];
|
||
getAutofillCase([0, 0, 0, 1], [0, 0, 2, 7], 3, 'Date & Time format. Asc sequence. Vertical. Two selected cells. Step - month. 1900 year.', expectedData);
|
||
// Case #73: Date & Time format. Reverse sequence. Vertical. Two selected cells. Step - month. 1900 year.
|
||
range = ws.getRange4(6, 0);
|
||
range.fillData(testData);
|
||
undoData = [[''], [''], [''], [''], ['92.58333333333333'], ['32.5']];
|
||
expectedData = [['92.58333333333333'], ['32.5'], ['92.58333333333333'], ['32.5'], ['92.58333333333333'], ['32.5']];
|
||
getAutofillCase([0, 0, 6, 7], [0, 0, 5, 0], 1, 'Date & Time format. Reverse sequence. Vertical. Two selected cells. Step - month. 1900 year.', expectedData);
|
||
ws.getRange2('A1:A20').cleanAll();
|
||
// Case #74: Date & Time format. Asc sequence. Horizontal. Two selected cells. Step - month. Asc month seq, but time sequence is reverse.
|
||
testData = [
|
||
['02/01/2000 12:00', '04/01/2000 5:00']
|
||
];
|
||
range = ws.getRange4(0, 0);
|
||
range.fillData(testData);
|
||
undoData = ['', '', '', '', '', ''];
|
||
expectedData = ['36677.916666666664', '36738.62499999999', '36799.33333333332', '36860.04166666665', '36921.74999999998', '36980.45833333331'];
|
||
getAutofillCase([0, 1, 0, 0], [2, 7, 0, 0], 3, 'Date & Time format. Asc sequence. Horizontal. Two selected cells. Step - month. Asc month seq, but time sequence is reverse.', expectedData);
|
||
ws.getRange2('A1:Z20').cleanAll();
|
||
// Case #75: Mixed date format. Asc sequence. Vertical. Two selected cells. Step - month.
|
||
testData = [
|
||
['01/01/2000 12:00'],
|
||
['02/01/2000']
|
||
];
|
||
range = ws.getRange4(0, 0);
|
||
range.fillData(testData);
|
||
undoData = [[''], [''], [''], [''], [''], ['']];
|
||
expectedData = [['36586.5'], ['36617.5'], ['36647.5'], ['36678.5'], ['36708.5'], ['36739.5']];
|
||
getAutofillCase([0, 0, 0, 1], [0, 0, 2, 7], 3, 'Mixed date format. Asc sequence. Vertical. Two selected cells. Step - month.', expectedData);
|
||
// Case #76: Mixed date format. Reverse sequence. Vertical. Two selected cells. Step - month.
|
||
range = ws.getRange4(6, 0);
|
||
range.fillData(testData);
|
||
undoData = [[''], [''], [''], [''], ['36557'], ['36526.5']];
|
||
expectedData = [['36495.5'], ['36465.5'], ['36434.5'], ['36404.5'], ['36373.5'], ['36342.5']];
|
||
getAutofillCase([0, 0, 6, 7], [0, 0, 5, 0], 1, 'Mixed date format. Reverse sequence. Vertical. Two selected cells. Step - month.', expectedData);
|
||
ws.getRange2('A1:A20').cleanAll();
|
||
// Case #77: Mixed date format. Asc sequence. Horizontal. Three selected cells. Step - month.
|
||
testData = [
|
||
['01/01/2000 12:00', '04/01/2000', '07/01/2000 14:00']
|
||
];
|
||
range = ws.getRange4(0, 0);
|
||
range.fillData(testData);
|
||
undoData = ['', '', '', '', ''];
|
||
expectedData = ['36800.5', '36892.5', '36982.5', '37073.5', '37165.5'];
|
||
getAutofillCase([0, 2, 0, 0], [3, 7, 0, 0], 3, 'Mixed date format. Asc sequence. Horizontal. Three selected cells. Step - month.', expectedData);
|
||
// Case #78: Mixed date format. Reverse sequence. Horizontal. Three selected cells. Step - month.
|
||
range = ws.getRange4(0, 5);
|
||
range.fillData(testData);
|
||
undoData = ['', '', '36708.583333333336', '36617', '36526.5'];
|
||
expectedData = ['36434.5', '36342.5', '36251.5', '36161.5', '36069.5'];
|
||
getAutofillCase([5, 7, 0, 0], [4, 0, 0, 0], 1, 'Mixed date format. Reverse sequence. Horizontal. Three selected cells. Step - month.', expectedData);
|
||
ws.getRange2('A1:Z20').cleanAll();
|
||
// Case #79: Mixed date format. Asc sequence. Vertical. Three selected cells. Step - month. Negative case - incorrect sequence.
|
||
testData = [
|
||
['01/01/2000 12:00'],
|
||
['03/01/2000'],
|
||
['04/01/2000 14:00']
|
||
];
|
||
range = ws.getRange4(0, 0);
|
||
range.fillData(testData);
|
||
undoData = [[''], [''], [''], [''], ['']];
|
||
expectedData = [['36526.5'], ['36586'], ['36617.583333333336'], ['36526.5'], ['36586']];
|
||
getAutofillCase([0, 0, 0, 2], [0, 0, 3, 7], 3, 'Mixed date format. Asc sequence. Vertical. Three selected cells. Step - month. Negative case - incorrect sequence.', expectedData);
|
||
// Case #80: Mixed date format. Reverse sequence. Vertical. Three selected cells. Step - month. Negative case - incorrect sequence.
|
||
range = ws.getRange4(5, 0);
|
||
range.fillData(testData);
|
||
undoData = [[''], [''], ['36617.583333333336'], ['36586'], ['36526.5']];
|
||
expectedData = [['36617.583333333336'], ['36586'], ['36526.5'], ['36617.583333333336'], ['36586']];
|
||
getAutofillCase([0, 0, 5, 7], [0, 0, 4, 0], 1, 'Mixed date format. Reverse sequence. Vertical. Three selected cells. Step - month. Negative case - incorrect sequence.', expectedData);
|
||
ws.getRange2('A1:A20').cleanAll();
|
||
// Case #81: Mixed date format. Asc sequence. Horizontal. Two selected cells. Step - month. 1900 year.
|
||
testData = [
|
||
['01/01/1900', '02/01/1900 12:00']
|
||
];
|
||
range = ws.getRange4(0, 0);
|
||
range.fillData(testData);
|
||
undoData = ['', '', '', '', '', ''];
|
||
expectedData = ['61.5', '92.5', '122.5', '153.5', '183.5', '214.5'];
|
||
getAutofillCase([0, 1, 0, 0], [2, 7, 0, 0], 3, 'Mixed date format. Asc sequence. Horizontal. Two selected cells. Step - month. 1900 year.', expectedData);
|
||
// Case #82: Mixed date format. Reverse sequence. Horizontal. Two selected cells. Step - month. 1900 year.
|
||
range = ws.getRange4(0, 6);
|
||
range.fillData(testData);
|
||
undoData = ['', '', '', '', '32.5', '1'];
|
||
expectedData = ['32.5', '1', '32.5', '1', '32.5', '1'];
|
||
getAutofillCase([6, 7, 0, 0], [5, 0, 0, 0], 1, 'Mixed date format. Reverse sequence. Horizontal. Two selected cells. Step - month. 1900 year.', expectedData);
|
||
ws.getRange2('A1:Z20').cleanAll();
|
||
// Case #83: Date format. Asc sequence. Vertical. Two selected cells. Step - year.
|
||
testData = [
|
||
['01/01/2000'],
|
||
['01/01/2001']
|
||
];
|
||
range = ws.getRange4(0, 0);
|
||
range.fillData(testData);
|
||
undoData = [[''], [''], [''], [''], [''], ['']];
|
||
expectedData = [['37257'], ['37622'], ['37987'], ['38353'], ['38718'], ['39083']];
|
||
getAutofillCase([0, 0, 0, 1], [0, 0, 2, 7], 3, 'Date format. Asc sequence. Vertical. Two selected cells. Step - year.', expectedData);
|
||
// Case #84: Date format. Reverse sequence. Vertical. Two selected cells. Step - year.
|
||
range = ws.getRange4(6, 0);
|
||
range.fillData(testData);
|
||
undoData = [[''], [''], [''], [''], ['36892'], ['36526']];
|
||
expectedData = [['36161'], ['35796'], ['35431'], ['35065'], ['34700'], ['34335']];
|
||
getAutofillCase([0, 0, 6, 7], [0, 0, 5, 0], 1, 'Date format. Reverse sequence. Vertical. Two selected cells. Step - year.', expectedData);
|
||
ws.getRange2('A1:A20').cleanAll();
|
||
// Case #85: Date format. Asc sequence. Horizontal. Three selected cells. Step - year.
|
||
testData = [
|
||
['01/01/2000', '01/01/2025', '01/01/2050']
|
||
];
|
||
range = ws.getRange4(0, 0);
|
||
range.fillData(testData);
|
||
undoData = ['', '', '', '', ''];
|
||
expectedData = ['63920', '73051', '82182', '91313', '100444'];
|
||
getAutofillCase([0, 2, 0, 0], [3, 7, 0, 0], 3, 'Date format. Asc sequence. Horizontal. Three selected cells. Step - year.', expectedData);
|
||
// Case #86: Date format. Reverse sequence. Horizontal. Three selected cells. Step - year.
|
||
range = ws.getRange4(0, 5);
|
||
range.fillData(testData);
|
||
undoData = ['', '', '54789', '45658', '36526'];
|
||
expectedData = ['27395', '18264', '9133', '1', '45658'];
|
||
getAutofillCase([5, 7, 0, 0], [4, 0, 0, 0], 1, 'Date format. Reverse sequence. Horizontal. Three selected cells. Step - year.', expectedData);
|
||
ws.getRange2('A1:Z20').cleanAll();
|
||
// Case #87: Date format. Asc sequence. Vertical. Three selected cells. Step - year. Negative case - incorrect sequence.
|
||
testData = [
|
||
['01/01/2000'],
|
||
['01/01/2002'],
|
||
['01/01/2005']
|
||
];
|
||
range = ws.getRange4(0, 0);
|
||
range.fillData(testData);
|
||
undoData = [[''], [''], [''], [''], ['']];
|
||
expectedData = [['36526'], ['37257'], ['38353'], ['36526'], ['37257']];
|
||
getAutofillCase([0, 0, 0, 2], [0, 0, 3, 7], 3, 'Date format. Asc sequence. Vertical. Three selected cells. Step - year. Negative case - incorrect sequence.', expectedData);
|
||
// Case #88: Date format. Reverse sequence. Vertical. Three selected cells. Step - year. Negative case - incorrect sequence.
|
||
range = ws.getRange4(5, 0);
|
||
range.fillData(testData);
|
||
undoData = [[''], [''], ['38353'], ['37257'], ['36526']];
|
||
expectedData = [['38353'], ['37257'], ['36526'], ['38353'], ['37257']];
|
||
getAutofillCase([0, 0, 5, 7], [0, 0, 4, 0], 1, 'Date format. Reverse sequence. Vertical. Three selected cells. Step - year. Negative case - incorrect sequence.', expectedData);
|
||
ws.getRange2('A1:A20').cleanAll();
|
||
// Case #89: Date format. Asc sequence. Horizontal. Two selected cells. Step - year. 1900 year.
|
||
testData = [
|
||
['01/01/1900', '01/01/1910']
|
||
];
|
||
range = ws.getRange4(0, 0);
|
||
range.fillData(testData);
|
||
undoData = ['', '', '', '', '', ''];
|
||
expectedData = ['7306', '10959', '14611', '18264', '21916', '25569'];
|
||
getAutofillCase([0, 1, 0, 0], [2, 7, 0, 0], 3, 'Date format. Asc sequence. Horizontal. Two selected cells. Step - year. 1900 year.', expectedData);
|
||
// Case #90: Date format. Reverse sequence. Horizontal. Two selected cells. Step - year. 1900 year.
|
||
range = ws.getRange4(0, 6);
|
||
range.fillData(testData);
|
||
undoData = ['', '', '', '', '3654', '1'];
|
||
expectedData = ['3654', '1', '3654', '1', '3654', '1'];
|
||
getAutofillCase([6, 7, 0, 0], [5, 0, 0, 0], 1, 'Date format. Reverse sequence. Horizontal. Two selected cells. Step - year. 1900 year.', expectedData);
|
||
ws.getRange2('A1:Z20').cleanAll();
|
||
// Case #91: Date & Time format. Asc sequence. Vertical. Two selected cells. Step - year.
|
||
testData = [
|
||
['01/01/2000 12:00'],
|
||
['01/01/2100 14:00']
|
||
];
|
||
range = ws.getRange4(0, 0);
|
||
range.fillData(testData);
|
||
undoData = [[''], [''], [''], [''], [''], ['']];
|
||
expectedData = [['109575.66666666666'], ['146099.75'], ['182623.8333333333'], ['219148.91666666663'], ['255672.99999999994'], ['292197.08333333326']];
|
||
getAutofillCase([0, 0, 0, 1], [0, 0, 2, 7], 3, 'Date & Time format. Asc sequence. Vertical. Two selected cells. Step - year.', expectedData);
|
||
// Case #92: Date & Time format. Reverse sequence. Vertical. Two selected cells. Step - year.
|
||
range = ws.getRange4(6, 0);
|
||
range.fillData(testData);
|
||
undoData = [[''], [''], [''], [''], ['73051.58333333333'], ['36526.5']];
|
||
expectedData = [['1.4166666666715173'], ['36526.5'], ['73051.58333333333'], ['36526.5'], ['73051.58333333333'], ['36526.5']];
|
||
getAutofillCase([0, 0, 6, 7], [0, 0, 5, 0], 1, 'Date & Time format. Reverse sequence. Vertical. Two selected cells. Step - year.', expectedData);
|
||
ws.getRange2('A1:A20').cleanAll();
|
||
// Case #93: Date & Time format. Asc sequence. Horizontal. Three selected cells. Step - year.
|
||
testData = [
|
||
['01/01/2000 12:00', '01/01/2005 13:00', '01/01/2010 14:00']
|
||
];
|
||
range = ws.getRange4(0, 0);
|
||
range.fillData(testData);
|
||
undoData = ['', '', '', '', '', ''];
|
||
expectedData = ['42005.5', '43831.5', '45658.5', '47484.5', '49310.5'];
|
||
getAutofillCase([0, 2, 0, 0], [3, 7, 0, 0], 3, 'Date & Time format. Asc sequence. Horizontal. Three selected cells. Step - year.', expectedData);
|
||
// Case #94: Date & Time format. Reverse sequence. Horizontal. Three selected cells. Step - year.
|
||
range = ws.getRange4(0, 5);
|
||
range.fillData(testData);
|
||
undoData = ['', '', '40179.583333333336', '38353.541666666664', '36526.5'];
|
||
expectedData = ['34700.5', '32874.5', '31048.5', '29221.5', '27395.5'];
|
||
getAutofillCase([5, 7, 0, 0], [4, 0, 0, 0], 1, 'Date & Time format. Reverse sequence. Horizontal. Three selected cells. Step - year.', expectedData);
|
||
ws.getRange2('A1:Z20').cleanAll();
|
||
// Case #95: Date & Time format. Asc sequence. Vertical. Three selected cells. Step - year. Negative case - incorrect sequence.
|
||
testData = [
|
||
['01/01/2000 12:00'],
|
||
['01/01/2002 12:00'],
|
||
['01/01/2005 12:00']
|
||
];
|
||
range = ws.getRange4(0, 0);
|
||
range.fillData(testData);
|
||
undoData = [[''], [''], [''], [''], ['']];
|
||
expectedData =[['36526.5'], ['37257.5'], ['38353.5'], ['36526.5'], ['37257.5']];
|
||
getAutofillCase([0, 0, 0, 2], [0, 0, 3, 7], 3, 'Date & Time format. Asc sequence. Vertical. Three selected cells. Step - year. Negative case - incorrect sequence.', expectedData);
|
||
// Case #96: Date & Time format. Reverse sequence. Vertical. Three selected cells. Step - year. Negative case - incorrect sequence.
|
||
range = ws.getRange4(5, 0);
|
||
range.fillData(testData);
|
||
undoData = [[''], [''], ['38353.5'], ['37257.5'], ['36526.5']];
|
||
expectedData = [['38353.5'], ['37257.5'], ['36526.5'], ['38353.5'], ['37257.5']];
|
||
getAutofillCase([0, 0, 5, 7], [0, 0, 4, 0], 1, 'Date & Time format. Reverse sequence. Vertical. Three selected cells. Step - year. Negative case - incorrect sequence.', expectedData);
|
||
ws.getRange2('A1:A20').cleanAll();
|
||
// Case #97: Mixed date format. Asc sequence. Horizontal. Two selected cells. Step - year.
|
||
testData = [
|
||
['01/01/2000', '01/01/2001 12:00']
|
||
];
|
||
range = ws.getRange4(0, 0);
|
||
range.fillData(testData);
|
||
undoData = ['', '', '', '', '', ''];
|
||
expectedData = ['37257.5', '37622.5', '37987.5', '38353.5', '38718.5', '39083.5'];
|
||
getAutofillCase([0, 1, 0, 0], [2, 7, 0, 0], 3, 'Mixed date format. Asc sequence. Horizontal. Two selected cells. Step - year.', expectedData);
|
||
// Case #98: Mixed date format. Reverse sequence. Horizontal. Two selected cells. Step - year.
|
||
range = ws.getRange4(0, 6);
|
||
range.fillData(testData);
|
||
undoData = ['', '', '', '', '36892.5', '36526'];
|
||
expectedData = ['36161.5', '35796.5', '35431.5', '35065.5', '34700.5', '34335.5'];
|
||
getAutofillCase([6, 7, 0, 0], [5, 0, 0, 0], 1, 'Mixed date format. Reverse sequence. Horizontal. Two selected cells. Step - year.', expectedData);
|
||
ws.getRange2('A1:Z20').cleanAll();
|
||
// Case #99: Mixed date format. Asc sequence. Vertical. Three selected cells. Step - year.
|
||
testData = [
|
||
['01/01/2000 12:00'],
|
||
['01/01/2002 12:00'],
|
||
['01/01/2004']
|
||
];
|
||
range = ws.getRange4(0, 0);
|
||
range.fillData(testData);
|
||
undoData = [[''], [''], [''], [''], ['']];
|
||
expectedData = [['38718.5'], ['39448.5'], ['40179.5'], ['40909.5'], ['41640.5']];
|
||
getAutofillCase([0, 0, 0, 2], [0, 0, 3, 7], 3, 'Mixed date format. Asc sequence. Vertical. Three selected cells. Step - year.', expectedData);
|
||
// Case #100: Mixed date format. Reverse sequence. Vertical. Three selected cells. Step - year.
|
||
range = ws.getRange4(5, 0);
|
||
range.fillData(testData);
|
||
undoData = [[''], [''], ['37987'], ['37257.5'], ['36526.5']];
|
||
expectedData = [['35796.5'], ['35065.5'], ['34335.5'], ['33604.5'], ['32874.5']];
|
||
getAutofillCase([0, 0, 5, 7], [0, 0, 4, 0], 1, 'Mixed date format. Reverse sequence. Vertical. Three selected cells. Step - year.', expectedData);
|
||
ws.getRange2('A1:A20').cleanAll();
|
||
// Case #101: Date & Time format. Asc sequence. Horizontal. Two selected cells. Step - year. Asc month seq, but time sequence is reverse.
|
||
testData = [
|
||
['01/01/2000 12:00', '01/01/2002 5:00']
|
||
];
|
||
range = ws.getRange4(0, 0);
|
||
range.fillData(testData);
|
||
undoData = ['', '', '', '', '', ''];
|
||
expectedData = ['37986.916666666664', '38717.62499999999', '39447.33333333332', '40178.04166666665', '40907.74999999998', '41638.45833333331'];
|
||
getAutofillCase([0, 1, 0, 0], [2, 7, 0, 0], 3, 'Date & Time format. Asc sequence. Horizontal. Two selected cells. Step - year. Asc month seq, but time sequence is reverse.', expectedData);
|
||
// Case #102: Date & Time format. Reverse sequence. Horizontal. Two selected cells. Step - year. Asc month seq, but time sequence is reverse.
|
||
range = ws.getRange4(0, 6);
|
||
range.fillData(testData);
|
||
undoData = ['', '', '', '', '37257.208333333336', '36526.5'];
|
||
expectedData = ['35796.79166666666', '35066.083333333314', '34336.37499999997', '33605.66666666663', '32875.958333333285', '32145.24999999994'];
|
||
getAutofillCase([6, 7, 0, 0], [5, 0, 0, 0], 1, 'Date & Time format. Reverse sequence. Horizontal. Two selected cells. Step - year. Asc month seq, but time sequence is reverse.', expectedData);
|
||
ws.getRange2('A1:Z20').cleanAll();
|
||
// Case #103: Date format. Asc sequence. Vertical. Two selected cells. Step - month. Next month is February, and the day is more than the last day of the month.
|
||
testData = [
|
||
['12/30/2002'],
|
||
['01/30/2003']
|
||
];
|
||
range = ws.getRange4(0, 0);
|
||
range.fillData(testData);
|
||
undoData = [[''], [''], [''], [''], [''], ['']];
|
||
expectedData = [['37680'], ['37710'], ['37741'], ['37771'], ['37802'], ['37832']];
|
||
getAutofillCase([0, 0, 0, 1], [0, 0, 2, 7], 3, 'Date format. Asc sequence. Vertical. Two selected cells. Step - month. Next month is February, and the day is more than the last day of the month.', expectedData);
|
||
// Case #104: Date format. Reverse sequence. Vertical. Two selected cells. Step - month. Next month is February, and the day is more than the last day of the month.
|
||
testData = [
|
||
['03/30/2003'],
|
||
['04/30/2003']
|
||
]
|
||
range = ws.getRange4(6, 0);
|
||
range.fillData(testData);
|
||
undoData = [[''], [''], [''], [''], ['37651'], ['37620']];
|
||
expectedData = [['37680'], ['37651'], ['37620'], ['37590'], ['37559'], ['37529']];
|
||
getAutofillCase([0, 0, 6, 7], [0, 0, 5, 0], 1, 'Date format. Reverse sequence. Vertical. Two selected cells. Step - month. Next month is February, and the day is more than the last day of the month.', expectedData);
|
||
ws.getRange2('A1:A20').cleanAll();
|
||
});
|
||
|
||
QUnit.test('Cells merge test', function (assert) {
|
||
|
||
ws.getRange2("A1:Z100").cleanAll();
|
||
ws.getRange2("A10").setValue("1");
|
||
ws.getRange2("A11").setValue("2");
|
||
ws.getRange2("B10").setValue("3");
|
||
ws.getRange2("B11").setValue("4");
|
||
|
||
// If the range is not merged, null is returned, otherwise a Range.bbox object
|
||
assert.ok(ws.getRange2("A10:B11").hasMerged() === null, 'Range A10:B11 is not merged');
|
||
assert.strictEqual(ws.getRange2("A10").getValueWithoutFormat(), "1", 'Value in A10 before merge in A10:B11');
|
||
assert.strictEqual(ws.getRange2("A11").getValueWithoutFormat(), "2", 'Value in A11 before merge in A10:B11');
|
||
assert.strictEqual(ws.getRange2("B10").getValueWithoutFormat(), "3", 'Value in B10 before merge in A10:B11');
|
||
assert.strictEqual(ws.getRange2("B11").getValueWithoutFormat(), "4", 'Value in B11 before merge in A10:B11');
|
||
|
||
// A10:B11 merge & center
|
||
ws.getRange2("A10:B11").merge(Asc.c_oAscMergeOptions.MergeCenter);
|
||
|
||
assert.ok(ws.getRange2("A10:B11").hasMerged(), 'Range A10:B11 is merged');
|
||
assert.strictEqual(ws.getRange2("A10").getValueWithoutFormat(), "1", 'Value in A10 after merge in A10:B11');
|
||
assert.strictEqual(ws.getRange2("A11").getValueWithoutFormat(), "", 'Value in A11 after merge in A10:B11');
|
||
assert.strictEqual(ws.getRange2("B10").getValueWithoutFormat(), "", 'Value in B10 after merge in A10:B11');
|
||
assert.strictEqual(ws.getRange2("B11").getValueWithoutFormat(), "", 'Value in B11 after merge in A10:B11');
|
||
|
||
// A10:B11 unmerge
|
||
ws.getRange2("A10:B11").merge(Asc.c_oAscMergeOptions.MergeCenter);
|
||
|
||
ws.getRange2("A10:B11").cleanAll();
|
||
ws.getRange2("A10").setValue("1");
|
||
ws.getRange2("A11").setValue("2");
|
||
ws.getRange2("B10").setValue("3");
|
||
ws.getRange2("B11").setValue("4");
|
||
|
||
assert.ok(ws.getRange2("A9:B11").hasMerged() === null, 'Range A9:B11 is not merged');
|
||
ws.getRange2("A9:B11").merge(Asc.c_oAscMergeOptions.MergeCenter);
|
||
assert.ok(ws.getRange2("A9:B11").hasMerged(), 'Range A9:B11 is merged');
|
||
assert.strictEqual(ws.getRange2("A9").getValueWithoutFormat(), "1", 'Value in A9 after merge in A9:B11');
|
||
assert.strictEqual(ws.getRange2("A10").getValueWithoutFormat(), "", 'Value in A10 after merge in A9:B11');
|
||
assert.strictEqual(ws.getRange2("A11").getValueWithoutFormat(), "", 'Value in A11 after merge in A9:B11');
|
||
assert.strictEqual(ws.getRange2("B9").getValueWithoutFormat(), "", 'Value in B9 after merge in A9:B11');
|
||
assert.strictEqual(ws.getRange2("B10").getValueWithoutFormat(), "", 'Value in B10 after merge in A9:B11');
|
||
assert.strictEqual(ws.getRange2("B11").getValueWithoutFormat(), "", 'Value in B11 after merge in A9:B11');
|
||
|
||
// A9:B11 unmerge
|
||
ws.getRange2("A9:B11").merge(Asc.c_oAscMergeOptions.MergeCenter);
|
||
ws.getRange2("A9:B11").cleanAll();
|
||
|
||
let bbox = ws.getRange2("A11").bbox;
|
||
ws.getRange2("A11").setValue("={2,4}", undefined, undefined, bbox);
|
||
// cellWithFormula = new window['AscCommonExcel'].CCellWithFormula(ws, bbox.r1, bbox.c1);
|
||
assert.ok(ws.getRange2("A10:A11").hasMerged() === null, 'Range A10:A11 is not merged');
|
||
ws.getRange2("A10:A11").merge(Asc.c_oAscMergeOptions.MergeCenter);
|
||
assert.ok(ws.getRange2("A10:A11").hasMerged(), 'Range A10:A11 is merged');
|
||
assert.strictEqual(ws.getRange2("A10").getValueWithoutFormat(), "2", 'Value in A10 after merge in A10:A11 with one cell array');
|
||
|
||
// A10:A11 unmerge
|
||
ws.getRange2("A10:A11").merge(Asc.c_oAscMergeOptions.MergeCenter);
|
||
ws.getRange2("A10:A12").cleanAll();
|
||
|
||
bbox = ws.getRange2("A11:A12").bbox;
|
||
ws.getRange2("A11").setValue("={2,4}", undefined, undefined, bbox);
|
||
assert.ok(ws.getRange2("A10:A12").hasMerged() === null, 'Range A10:A12 is not merged');
|
||
ws.getRange2("A10:A12").merge(Asc.c_oAscMergeOptions.MergeCenter);
|
||
assert.ok(ws.getRange2("A10:A12").hasMerged(), 'Range A10:A12 is merged');
|
||
assert.strictEqual(ws.getRange2("A10").getValueWithoutFormat(), "", 'Value in A10 after merge in A10:A12 with two cells array');
|
||
assert.strictEqual(ws.getRange2("A11").getValueWithoutFormat(), "", 'Value in A11 after merge in A10:A12 with two cells array');
|
||
assert.strictEqual(ws.getRange2("A12").getValueWithoutFormat(), "", 'Value in A12 after merge in A10:A12 with two cells array');
|
||
|
||
// A10:A12 unmerge
|
||
ws.getRange2("A10:A12").merge(Asc.c_oAscMergeOptions.MergeCenter);
|
||
ws.getRange2("A10:A12").cleanAll();
|
||
|
||
ws.getRange2("A10").setValue("1");
|
||
|
||
bbox = ws.getRange2("A11").bbox;
|
||
ws.getRange2("A11").setValue("={2,4}", undefined, undefined, bbox);
|
||
assert.ok(ws.getRange2("A10:A12").hasMerged() === null, 'Range A10:A12 is not merged');
|
||
ws.getRange2("A10:A12").merge(Asc.c_oAscMergeOptions.MergeCenter);
|
||
assert.ok(ws.getRange2("A10:A12").hasMerged(), 'Range A10:A12 is merged');
|
||
assert.strictEqual(ws.getRange2("A10").getValueWithoutFormat(), "1", 'Value in A10 after merge in A10:A12 with one cell value before one cell array');
|
||
assert.strictEqual(ws.getRange2("A11").getValueWithoutFormat(), "", 'Value in A11 after merge in A10:A12 with one cell value before one cell array');
|
||
assert.strictEqual(ws.getRange2("A12").getValueWithoutFormat(), "", 'Value in A12 after merge in A10:A12 with one cell value before one cell array');
|
||
|
||
// A10:A12 unmerge
|
||
ws.getRange2("A10:A12").merge(Asc.c_oAscMergeOptions.MergeCenter);
|
||
ws.getRange2("A10:B12").cleanAll();
|
||
|
||
ws.getRange2("A10").setValue("1");
|
||
ws.getRange2("B10").setValue("1");
|
||
|
||
bbox = ws.getRange2("A11:B11").bbox;
|
||
ws.getRange2("A11:B11").setValue("={2,4}", undefined, undefined, bbox);
|
||
assert.ok(ws.getRange2("A10:B12").hasMerged() === null, 'Range A10:B12 is not merged');
|
||
ws.getRange2("A10:B12").merge(Asc.c_oAscMergeOptions.MergeCenter);
|
||
assert.ok(ws.getRange2("A10:B12").hasMerged(), 'Range A10:B12 is merged');
|
||
assert.strictEqual(ws.getRange2("A10").getValueWithoutFormat(), "1", 'Value in A10 after merge in A10:B12 with two cells value before two cells array');
|
||
assert.strictEqual(ws.getRange2("A11").getValueWithoutFormat(), "", 'Value in A11 after merge in A10:B12 with two cells value before two cells array');
|
||
assert.strictEqual(ws.getRange2("A12").getValueWithoutFormat(), "", 'Value in A12 after merge in A10:B12 with two cells value before two cells array');
|
||
assert.strictEqual(ws.getRange2("B10").getValueWithoutFormat(), "", 'Value in B10 after merge in A10:B12 with two cells value before two cells array');
|
||
assert.strictEqual(ws.getRange2("B11").getValueWithoutFormat(), "", 'Value in B11 after merge in A10:B12 with two cells value before two cells array');
|
||
assert.strictEqual(ws.getRange2("B12").getValueWithoutFormat(), "", 'Value in B12 after merge in A10:B12 with two cells value before two cells array');
|
||
|
||
// A10:B12 unmerge
|
||
ws.getRange2("A10:B12").merge(Asc.c_oAscMergeOptions.MergeCenter);
|
||
ws.getRange2("A10:B12").cleanAll();
|
||
|
||
/* merge across tests */
|
||
let mergeRes;
|
||
ws.getRange2("A1:Z100").cleanAll();
|
||
ws.getRange2("A10").setValue("1");
|
||
ws.getRange2("B10").setValue("2");
|
||
ws.getRange2("C10").setValue("3");
|
||
|
||
assert.ok(ws.getRange2("A10:C10").hasMerged() === null, 'Range A10:C10 is not merged');
|
||
assert.strictEqual(ws.getRange2("A10").getValueWithoutFormat(), "1", 'Value in A10 before across merge in A10:C10');
|
||
assert.strictEqual(ws.getRange2("B10").getValueWithoutFormat(), "2", 'Value in B10 before across merge in A10:C10');
|
||
assert.strictEqual(ws.getRange2("C10").getValueWithoutFormat(), "3", 'Value in C10 before across merge in A10:C10');
|
||
|
||
// A10:C10 merge across
|
||
ws.getRange2("A10:C10").merge(Asc.c_oAscMergeOptions.MergeAcross);
|
||
|
||
assert.ok(ws.getRange2("A10:C10").hasMerged(), 'Range A10:C10 is merged');
|
||
assert.strictEqual(ws.getRange2("A10").getValueWithoutFormat(), "1", 'Value in A10 after across merge in A10:C10');
|
||
assert.strictEqual(ws.getRange2("B10").getValueWithoutFormat(), "", 'Value in B10 after across merge in A10:C10');
|
||
assert.strictEqual(ws.getRange2("C10").getValueWithoutFormat(), "", 'Value in C10 after across merge in A10:C10');
|
||
|
||
// A10:C10 unmerge
|
||
ws.getRange2("A10:C10").merge(Asc.c_oAscMergeOptions.MergeAcross);
|
||
ws.getRange2("A10:C10").cleanAll();
|
||
|
||
|
||
ws.getRange2("A10").setValue("");
|
||
ws.getRange2("B10").setValue("2");
|
||
ws.getRange2("C10").setValue("3");
|
||
|
||
assert.ok(ws.getRange2("A10:C10").hasMerged() === null, 'Range A10:C10 is not merged');
|
||
assert.strictEqual(ws.getRange2("A10").getValueWithoutFormat(), "", 'Value in A10 before across merge in A10:C10');
|
||
assert.strictEqual(ws.getRange2("B10").getValueWithoutFormat(), "2", 'Value in B10 before across merge in A10:C10');
|
||
assert.strictEqual(ws.getRange2("C10").getValueWithoutFormat(), "3", 'Value in C10 before across merge in A10:C10');
|
||
|
||
// A10:C10 merge across
|
||
ws.getRange2("A10:C10").merge(Asc.c_oAscMergeOptions.MergeAcross);
|
||
|
||
assert.ok(ws.getRange2("A10:C10").hasMerged(), 'Range A10:C10 is merged');
|
||
assert.strictEqual(ws.getRange2("A10").getValueWithoutFormat(), "2", 'Value in A10 after across merge in A10:C10');
|
||
assert.strictEqual(ws.getRange2("B10").getValueWithoutFormat(), "", 'Value in B10 after across merge in A10:C10');
|
||
assert.strictEqual(ws.getRange2("C10").getValueWithoutFormat(), "", 'Value in C10 after across merge in A10:C10');
|
||
|
||
// A10:C10 unmerge
|
||
ws.getRange2("A10:C10").merge(Asc.c_oAscMergeOptions.MergeAcross);
|
||
ws.getRange2("A10:C10").cleanAll();
|
||
|
||
|
||
bbox = ws.getRange2("A10").bbox;
|
||
ws.getRange2("A10").setValue("={4,6}", undefined, undefined, bbox);
|
||
ws.getRange2("B10").setValue("2");
|
||
ws.getRange2("C10").setValue("3");
|
||
|
||
assert.ok(ws.getRange2("A10:C10").hasMerged() === null, 'Range A10:C10 is not merged');
|
||
assert.strictEqual(ws.getRange2("A10").getValueWithoutFormat(), "4", 'Value in A10 before across merge in A10:C10');
|
||
assert.strictEqual(ws.getRange2("B10").getValueWithoutFormat(), "2", 'Value in B10 before across merge in A10:C10');
|
||
assert.strictEqual(ws.getRange2("C10").getValueWithoutFormat(), "3", 'Value in C10 before across merge in A10:C10');
|
||
|
||
// A10:C10 merge across
|
||
ws.getRange2("A10:C10").merge(Asc.c_oAscMergeOptions.MergeAcross);
|
||
|
||
assert.ok(ws.getRange2("A10:C10").hasMerged(), 'Range A10:C10 is merged');
|
||
assert.strictEqual(ws.getRange2("A10").getValueWithoutFormat(), "4", 'Value in A10 after across merge in A10:C10');
|
||
assert.strictEqual(ws.getRange2("B10").getValueWithoutFormat(), "", 'Value in B10 after across merge in A10:C10');
|
||
assert.strictEqual(ws.getRange2("C10").getValueWithoutFormat(), "", 'Value in C10 after across merge in A10:C10');
|
||
|
||
// A10:C10 unmerge
|
||
ws.getRange2("A10:C10").merge(Asc.c_oAscMergeOptions.MergeAcross);
|
||
ws.getRange2("A10:C10").cleanAll();
|
||
|
||
|
||
bbox = ws.getRange2("B10").bbox;
|
||
ws.getRange2("A10").setValue("2");
|
||
ws.getRange2("B10").setValue("={4,6}", undefined, undefined, bbox);
|
||
ws.getRange2("C10").setValue("3");
|
||
|
||
assert.ok(ws.getRange2("A10:C10").hasMerged() === null, 'Range A10:C10 is not merged');
|
||
assert.strictEqual(ws.getRange2("A10").getValueWithoutFormat(), "2", 'Value in A10 before across merge in A10:C10');
|
||
assert.strictEqual(ws.getRange2("B10").getValueWithoutFormat(), "4", 'Value in B10 before across merge in A10:C10');
|
||
assert.strictEqual(ws.getRange2("C10").getValueWithoutFormat(), "3", 'Value in C10 before across merge in A10:C10');
|
||
|
||
// A10:C10 merge across
|
||
ws.getRange2("A10:C10").merge(Asc.c_oAscMergeOptions.MergeAcross);
|
||
|
||
assert.ok(ws.getRange2("A10:C10").hasMerged(), 'Range A10:C10 is merged');
|
||
assert.strictEqual(ws.getRange2("A10").getValueWithoutFormat(), "2", 'Value in A10 after across merge in A10:C10');
|
||
assert.strictEqual(ws.getRange2("B10").getValueWithoutFormat(), "", 'Value in B10 after across merge in A10:C10');
|
||
assert.strictEqual(ws.getRange2("C10").getValueWithoutFormat(), "", 'Value in C10 after across merge in A10:C10');
|
||
|
||
// A10:C10 unmerge
|
||
ws.getRange2("A10:C10").merge(Asc.c_oAscMergeOptions.MergeAcross);
|
||
ws.getRange2("A10:C10").cleanAll();
|
||
|
||
|
||
bbox = ws.getRange2("A10:B10").bbox;
|
||
ws.getRange2("A10:B10").setValue("={4,6}", undefined, undefined, bbox);
|
||
ws.getRange2("C10").setValue("3");
|
||
|
||
assert.ok(ws.getRange2("A10:C10").hasMerged() === null, 'Range A10:C10 is not merged');
|
||
assert.strictEqual(ws.getRange2("A10").getValueWithoutFormat(), "4", 'Value in A10 before across merge in A10:C10');
|
||
assert.strictEqual(ws.getRange2("B10").getValueWithoutFormat(), "6", 'Value in B10 before across merge in A10:C10');
|
||
assert.strictEqual(ws.getRange2("C10").getValueWithoutFormat(), "3", 'Value in C10 before across merge in A10:C10');
|
||
|
||
// A10:C10 merge across with expected error
|
||
mergeRes = ws.getRange2("A10:C10").merge(Asc.c_oAscMergeOptions.MergeAcross);
|
||
|
||
assert.strictEqual(mergeRes && mergeRes.errorType, Asc.c_oAscError.ID.CannotChangeFormulaArray);
|
||
assert.ok(ws.getRange2("A10:C10").hasMerged() === null, 'Range A10:C10 is not merged');
|
||
assert.strictEqual(ws.getRange2("A10").getValueWithoutFormat(), "4", 'Value in A10 after across merge in A10:C10');
|
||
assert.strictEqual(ws.getRange2("B10").getValueWithoutFormat(), "6", 'Value in B10 after across merge in A10:C10');
|
||
assert.strictEqual(ws.getRange2("C10").getValueWithoutFormat(), "3", 'Value in C10 after across merge in A10:C10');
|
||
|
||
// A10:C10 unmerge
|
||
ws.getRange2("A10:C10").merge(Asc.c_oAscMergeOptions.MergeAcross);
|
||
ws.getRange2("A10:C10").cleanAll();
|
||
|
||
|
||
bbox = ws.getRange2("B10:C10").bbox;
|
||
ws.getRange2("A10").setValue("3");
|
||
ws.getRange2("B10:C10").setValue("={4,6}", undefined, undefined, bbox);
|
||
|
||
assert.ok(ws.getRange2("A10:C10").hasMerged() === null, 'Range A10:C10 is not merged');
|
||
assert.strictEqual(ws.getRange2("A10").getValueWithoutFormat(), "3", 'Value in A10 before across merge in A10:C10');
|
||
assert.strictEqual(ws.getRange2("B10").getValueWithoutFormat(), "4", 'Value in B10 before across merge in A10:C10');
|
||
assert.strictEqual(ws.getRange2("C10").getValueWithoutFormat(), "6", 'Value in C10 before across merge in A10:C10');
|
||
|
||
// A10:C10 merge across
|
||
mergeRes = ws.getRange2("A10:C10").merge(Asc.c_oAscMergeOptions.MergeAcross);
|
||
|
||
assert.strictEqual(mergeRes, undefined);
|
||
assert.ok(ws.getRange2("A10:C10").hasMerged(), 'Range A10:C10 is merged');
|
||
assert.strictEqual(ws.getRange2("A10").getValueWithoutFormat(), "3", 'Value in A10 after across merge in A10:C10');
|
||
assert.strictEqual(ws.getRange2("B10").getValueWithoutFormat(), "", 'Value in B10 after across merge in A10:C10');
|
||
assert.strictEqual(ws.getRange2("C10").getValueWithoutFormat(), "", 'Value in C10 after across merge in A10:C10');
|
||
|
||
// A10:C10 unmerge
|
||
ws.getRange2("A10:C10").merge(Asc.c_oAscMergeOptions.MergeAcross);
|
||
ws.getRange2("A10:C10").cleanAll();
|
||
|
||
|
||
bbox = ws.getRange2("B10:C10").bbox;
|
||
ws.getRange2("A10").setValue("");
|
||
ws.getRange2("B10:C10").setValue("={4,6}", undefined, undefined, bbox);
|
||
|
||
assert.ok(ws.getRange2("A10:C10").hasMerged() === null, 'Range A10:C10 is not merged');
|
||
assert.strictEqual(ws.getRange2("A10").getValueWithoutFormat(), "", 'Value in A10 before across merge in A10:C10');
|
||
assert.strictEqual(ws.getRange2("B10").getValueWithoutFormat(), "4", 'Value in B10 before across merge in A10:C10');
|
||
assert.strictEqual(ws.getRange2("C10").getValueWithoutFormat(), "6", 'Value in C10 before across merge in A10:C10');
|
||
|
||
// A10:C10 merge across
|
||
mergeRes = ws.getRange2("A10:C10").merge(Asc.c_oAscMergeOptions.MergeAcross);
|
||
|
||
assert.strictEqual(mergeRes, undefined);
|
||
assert.ok(ws.getRange2("A10:C10").hasMerged(), 'Range A10:C10 is merged');
|
||
assert.strictEqual(ws.getRange2("A10").getValueWithoutFormat(), "", 'Value in A10 after across merge in A10:C10');
|
||
assert.strictEqual(ws.getRange2("B10").getValueWithoutFormat(), "", 'Value in B10 after across merge in A10:C10');
|
||
assert.strictEqual(ws.getRange2("C10").getValueWithoutFormat(), "", 'Value in C10 after across merge in A10:C10');
|
||
|
||
// A10:C10 unmerge
|
||
ws.getRange2("A10:C10").merge(Asc.c_oAscMergeOptions.MergeAcross);
|
||
ws.getRange2("A10:C10").cleanAll();
|
||
|
||
});
|
||
|
||
QUnit.test("Test: \"Text to formula tests\"", function (assert) {
|
||
let cellWithFormula, fillRange, array;
|
||
|
||
// wb.dependencyFormulas.unlockRecal();
|
||
|
||
ws.getRange2("A1:F10").cleanAll();
|
||
ws.getRange2("A1").setValue("1");
|
||
ws.getRange2("A2").setValue("2");
|
||
ws.getRange2("A3").setValue("3");
|
||
ws.getRange2("B1").setValue("+5");
|
||
ws.getRange2("B2").setValue("+5+5");
|
||
ws.getRange2("B3").setValue("-5");
|
||
ws.getRange2("B4").setValue("-5-5");
|
||
|
||
// set flags for CSE formula call
|
||
let flags = wsView._getCellFlags(0, 2);
|
||
flags.ctrlKey = false;
|
||
flags.shiftKey = false;
|
||
|
||
// set selection C1
|
||
fillRange = ws.getRange2("C1");
|
||
wsView.setSelection(fillRange.bbox);
|
||
wsView._initRowsCount();
|
||
wsView._initColsCount();
|
||
|
||
let fragment = ws.getRange2("C1").getValueForEdit2();
|
||
fragment[0].setFragmentText("+5+5");
|
||
resCell = ws.getRange2("C1");
|
||
|
||
wsView._saveCellValueAfterEdit(fillRange, fragment, flags, null, null);
|
||
// assert.strictEqual(wsView.model.selectionRange.getLast().getName(), "C1", "Selection after +5+5 non-cse formula call");
|
||
assert.strictEqual(resCell.getValueWithFormat(), "10", "Value in C1 after +5+5 calculate");
|
||
assert.strictEqual(resCell.getValueForEdit(), "=5+5", "Formula in C1 after +5+5 calculate");
|
||
|
||
fragment[0].setFragmentText("-5-5");
|
||
wsView._saveCellValueAfterEdit(fillRange, fragment, flags, null, null);
|
||
assert.strictEqual(resCell.getValueWithFormat(), "-10", "Value in C1 after -5-5 calculate");
|
||
assert.strictEqual(resCell.getValueForEdit(), "=-5-5", "Formula in C1 after -5-5 calculate");
|
||
|
||
fragment[0].setFragmentText("-5-5");
|
||
wsView._saveCellValueAfterEdit(fillRange, fragment, flags, null, null);
|
||
assert.strictEqual(resCell.getValueWithFormat(), "-10", "Value in C1 after -5-5 calculate");
|
||
assert.strictEqual(resCell.getValueForEdit(), "=-5-5", "Formula in C1 after -5-5 calculate");
|
||
|
||
fragment[0].setFragmentText("*5-5");
|
||
wsView._saveCellValueAfterEdit(fillRange, fragment, flags, null, null);
|
||
assert.strictEqual(resCell.getValueWithFormat(), "*5-5", "Value in C1 after *5-5 calculate");
|
||
assert.strictEqual(resCell.getValueForEdit(), "*5-5", "Formula in C1 after *5-5 calculate");
|
||
|
||
fragment[0].setFragmentText("/5-5");
|
||
wsView._saveCellValueAfterEdit(fillRange, fragment, flags, null, null);
|
||
assert.strictEqual(resCell.getValueWithFormat(), "/5-5", "Value in C1 after /5-5 calculate");
|
||
assert.strictEqual(resCell.getValueForEdit(), "/5-5", "Formula in C1 after /5-5 calculate");
|
||
|
||
fragment[0].setFragmentText("^5-5");
|
||
wsView._saveCellValueAfterEdit(fillRange, fragment, flags, null, null);
|
||
assert.strictEqual(resCell.getValueWithFormat(), "^5-5", "Value in C1 after ^5-5 calculate");
|
||
assert.strictEqual(resCell.getValueForEdit(), "^5-5", "Formula in C1 after ^5-5 calculate");
|
||
|
||
fragment[0].setFragmentText("+A1-5");
|
||
wsView._saveCellValueAfterEdit(fillRange, fragment, flags, null, null);
|
||
assert.strictEqual(resCell.getValueWithFormat(), "-4", "Value in C1 after +A1-5 calculate");
|
||
assert.strictEqual(resCell.getValueForEdit(), "=+A1-5", "Formula in C1 after +A1-5 calculate");
|
||
|
||
fragment[0].setFragmentText("-A1-5");
|
||
wsView._saveCellValueAfterEdit(fillRange, fragment, flags, null, null);
|
||
assert.strictEqual(resCell.getValueWithFormat(), "-6", "Value in C1 after -A1-5 calculate");
|
||
assert.strictEqual(resCell.getValueForEdit(), "=-A1-5", "Formula in C1 after -A1-5 calculate");
|
||
|
||
fragment[0].setFragmentText("+5-A1");
|
||
wsView._saveCellValueAfterEdit(fillRange, fragment, flags, null, null);
|
||
assert.strictEqual(resCell.getValueWithFormat(), "4", "Value in C1 after +5-A1 calculate");
|
||
assert.strictEqual(resCell.getValueForEdit(), "=5-A1", "Formula in C1 after +5-A1 calculate");
|
||
|
||
fragment[0].setFragmentText("-5-A1");
|
||
wsView._saveCellValueAfterEdit(fillRange, fragment, flags, null, null);
|
||
assert.strictEqual(resCell.getValueWithFormat(), "-6", "Value in C1 after -5-A1 calculate");
|
||
assert.strictEqual(resCell.getValueForEdit(), "=-5-A1", "Formula in C1 after -5-A1 calculate");
|
||
|
||
fragment[0].setFragmentText("+5-A1:A2");
|
||
wsView._saveCellValueAfterEdit(fillRange, fragment, flags, null, null);
|
||
assert.strictEqual(resCell.getValueWithFormat(), "4", "Value in C1 after +5-A1:A2 calculate");
|
||
assert.strictEqual(resCell.getValueForEdit(), "=5-A1:A2", "Formula in C1 after +5-A1:A2 calculate");
|
||
resCell = ws.getRange2("C2");
|
||
assert.strictEqual(resCell.getValueWithFormat(), "3", "Value in C2 after +5-A1:A2 calculate");
|
||
assert.strictEqual(resCell.getValueForEdit(), "=5-A1:A2", "Formula in C2 after +5-A1:A2 calculate");
|
||
|
||
fragment[0].setFragmentText("-5-A1:A2");
|
||
resCell = ws.getRange2("C1");
|
||
wsView._saveCellValueAfterEdit(fillRange, fragment, flags, null, null);
|
||
assert.strictEqual(resCell.getValueWithFormat(), "-6", "Value in C1 after -5-A1:A2 calculate");
|
||
assert.strictEqual(resCell.getValueForEdit(), "=-5-A1:A2", "Formula in C1 after -5-A1:A2 calculate");
|
||
resCell = ws.getRange2("C2");
|
||
assert.strictEqual(resCell.getValueWithFormat(), "-7", "Value in C2 after -5-A1:A2 calculate");
|
||
assert.strictEqual(resCell.getValueForEdit(), "=-5-A1:A2", "Formula in C2 after -5-A1:A2 calculate");
|
||
|
||
// todo unar operator should convert area to array?
|
||
// fragment[0].setFragmentText("+A1:A2+5");
|
||
// resCell = ws.getRange2("C1");
|
||
// wsView._saveCellValueAfterEdit(fillRange, fragment, flags, null, null);
|
||
// assert.strictEqual(resCell.getValueWithFormat(), "6", "Value in C1 after +A1:A2+5 calculate");
|
||
// assert.strictEqual(resCell.getValueForEdit(), "=+A1:A2+5", "Formula in C1 after +A1:A2+5 calculate");
|
||
// resCell = ws.getRange2("C2");
|
||
// assert.strictEqual(resCell.getValueWithFormat(), "", "Value in C2 after +A1:A2+5 calculate");
|
||
// assert.strictEqual(resCell.getValueForEdit(), "=+A1:A2+5", "Formula in C2 after +A1:A2+5 calculate");
|
||
|
||
fragment[0].setFragmentText("+#N/A");
|
||
resCell = ws.getRange2("C1");
|
||
wsView._saveCellValueAfterEdit(fillRange, fragment, flags, null, null);
|
||
assert.strictEqual(resCell.getValueWithFormat(), "#N/A", "Value in C1 after +#N/A calculate");
|
||
assert.strictEqual(resCell.getValueForEdit(), "=+#N/A", "Formula in C1 after +#N/A calculate");
|
||
|
||
fragment[0].setFragmentText("-#DIV/0!");
|
||
resCell = ws.getRange2("C1");
|
||
wsView._saveCellValueAfterEdit(fillRange, fragment, flags, null, null);
|
||
assert.strictEqual(resCell.getValueWithFormat(), "#DIV/0!", "Value in C1 after -#DIV/0! calculate");
|
||
assert.strictEqual(resCell.getValueForEdit(), "=-#DIV/0!", "Formula in C1 after -#DIV/0! calculate");
|
||
|
||
fragment[0].setFragmentText("+dsdsd");
|
||
resCell = ws.getRange2("C1");
|
||
wsView._saveCellValueAfterEdit(fillRange, fragment, flags, null, null);
|
||
assert.strictEqual(resCell.getValueWithFormat(), "#NAME?", "Value in C1 after +dsdsd calculate");
|
||
assert.strictEqual(resCell.getValueForEdit(), "=+dsdsd", "Formula in C1 after +dsdsd calculate");
|
||
|
||
fragment[0].setFragmentText("-dsdsd");
|
||
wsView._saveCellValueAfterEdit(fillRange, fragment, flags, null, null);
|
||
assert.strictEqual(resCell.getValueWithFormat(), "#NAME?", "Value in C1 after -dsdsd calculate");
|
||
assert.strictEqual(resCell.getValueForEdit(), "=-dsdsd", "Formula in C1 after -dsdsd calculate");
|
||
|
||
// add defname
|
||
let sheetName = ws.getName();
|
||
wb.dependencyFormulas.addDefName("dName", sheetName + "!A3");
|
||
|
||
fragment[0].setFragmentText("+dName");
|
||
wsView._saveCellValueAfterEdit(fillRange, fragment, flags, null, null);
|
||
assert.strictEqual(resCell.getValueWithFormat(), "0", "Value in C1 after -dsdsd calculate");
|
||
assert.strictEqual(resCell.getValueForEdit(), "=+dName", "Formula in C1 after -dsdsd calculate");
|
||
|
||
// array
|
||
fragment[0].setFragmentText("+{1,2}");
|
||
resCell = ws.getRange2("C1");
|
||
wsView._saveCellValueAfterEdit(fillRange, fragment, flags, null, null);
|
||
assert.strictEqual(resCell.getValueWithFormat(), "1", "Value in C1 after +{1,2} calculate");
|
||
assert.strictEqual(resCell.getValueForEdit(), "=+{1,2}", "Formula in C1 after +{1,2} calculate");
|
||
resCell = ws.getRange2("D1");
|
||
assert.strictEqual(resCell.getValueWithFormat(), "2", "Value in D1 after +{1,2} calculate");
|
||
assert.strictEqual(resCell.getValueForEdit(), "=+{1,2}", "Formula in D1 after +{1,2} calculate");
|
||
|
||
fragment[0].setFragmentText("-{1,2}");
|
||
resCell = ws.getRange2("C1");
|
||
wsView._saveCellValueAfterEdit(fillRange, fragment, flags, null, null);
|
||
assert.strictEqual(resCell.getValueWithFormat(), "-1", "Value in C1 after -{1,2} calculate");
|
||
assert.strictEqual(resCell.getValueForEdit(), "=-{-1,-2}", "Formula in C1 after -{1,2} calculate");
|
||
resCell = ws.getRange2("D1");
|
||
assert.strictEqual(resCell.getValueWithFormat(), "-2", "Value in D1 after -{1,2} calculate");
|
||
assert.strictEqual(resCell.getValueForEdit(), "=-{-1,-2}", "Formula in D1 after -{1,2} calculate");
|
||
|
||
fragment[0].setFragmentText("-1*(1)");
|
||
resCell = ws.getRange2("C1");
|
||
wsView._saveCellValueAfterEdit(fillRange, fragment, flags, null, null);
|
||
assert.strictEqual(resCell.getValueWithFormat(), "-1", "Value in C1 after -1*(1) calculate");
|
||
assert.strictEqual(resCell.getValueForEdit(), "=-1*(1)", "Formula in C1 after -1*(1) calculate");
|
||
|
||
fragment[0].setFragmentText("+1*(1)");
|
||
resCell = ws.getRange2("C1");
|
||
wsView._saveCellValueAfterEdit(fillRange, fragment, flags, null, null);
|
||
assert.strictEqual(resCell.getValueWithFormat(), "1", "Value in C1 after +1*(1) calculate");
|
||
assert.strictEqual(resCell.getValueForEdit(), "=1*(1)", "Formula in C1 after +1*(1) calculate");
|
||
|
||
// formulas
|
||
fragment[0].setFragmentText("+SIN({1,2})");
|
||
resCell = ws.getRange2("C1");
|
||
wsView._saveCellValueAfterEdit(fillRange, fragment, flags, null, null);
|
||
assert.strictEqual(resCell.getValueWithFormat(), "0.841470985", "Value in C1 after +SIN({1,2}) calculate");
|
||
assert.strictEqual(resCell.getValueForEdit(), "=+SIN({1,2})", "Formula in C1 after +SIN({1,2}) calculate");
|
||
resCell = ws.getRange2("D1");
|
||
assert.strictEqual(resCell.getValueWithFormat(), "0.909297427", "Value in D1 after +SIN({1,2}) calculate");
|
||
assert.strictEqual(resCell.getValueForEdit(), "=+SIN({1,2})", "Formula in D1 after +SIN({1,2}) calculate");
|
||
|
||
fragment[0].setFragmentText("+SIN({1,2}");
|
||
resCell = ws.getRange2("C1");
|
||
wsView._saveCellValueAfterEdit(fillRange, fragment, flags, null, null);
|
||
assert.strictEqual(resCell.getValueWithFormat(), "0.841470985", "Value in C1 after +SIN({1,2} calculate (without close bracket)");
|
||
assert.strictEqual(resCell.getValueForEdit(), "=+SIN({1,2})", "Formula in C1 after +SIN({1,2} calculate (without close bracket)");
|
||
resCell = ws.getRange2("D1");
|
||
assert.strictEqual(resCell.getValueWithFormat(), "0.909297427", "Value in D1 after +SIN({1,2} calculate (without close bracket)");
|
||
assert.strictEqual(resCell.getValueForEdit(), "=+SIN({1,2})", "Formula in D1 after +SIN({1,2} calculate (without close bracket)");
|
||
|
||
fragment[0].setFragmentText("-SUM(1,1,1");
|
||
resCell = ws.getRange2("C1");
|
||
wsView._saveCellValueAfterEdit(fillRange, fragment, flags, null, null);
|
||
assert.strictEqual(resCell.getValueWithFormat(), "-3", "Value in C1 after -SUM(1,1,1 calculate (without close bracket)");
|
||
assert.strictEqual(resCell.getValueForEdit(), "=-SUM(1,1,1)", "Formula in C1 after -SUM(1,1,1 calculate (without close bracket)");
|
||
|
||
});
|
||
|
||
QUnit.test("Test: \"Unar operator removing tests\"", function (assert) {
|
||
|
||
let fillRange, resCell;
|
||
|
||
// wb.dependencyFormulas.unlockRecal();
|
||
|
||
ws.getRange2("A1:F10").cleanAll();
|
||
ws.getRange2("A1").setValue("1");
|
||
ws.getRange2("A2").setValue("3");
|
||
ws.getRange2("A3").setValue("#N/A");
|
||
ws.getRange2("B1").setValue("+5");
|
||
ws.getRange2("B2").setValue("+5+5");
|
||
ws.getRange2("B3").setValue("-5");
|
||
ws.getRange2("B4").setValue("-5-5");
|
||
|
||
// set flags for CSE formula call
|
||
let flags = wsView._getCellFlags(0, 2);
|
||
flags.ctrlKey = false;
|
||
flags.shiftKey = false;
|
||
|
||
// set selection C1
|
||
fillRange = ws.getRange2("C1");
|
||
wsView.setSelection(fillRange.bbox);
|
||
wsView._initRowsCount();
|
||
wsView._initColsCount();
|
||
|
||
let fragment = ws.getRange2("C1").getValueForEdit2();
|
||
|
||
// single values(types)
|
||
fragment[0].setFragmentText("++1");
|
||
resCell = ws.getRange2("C1");
|
||
wsView._saveCellValueAfterEdit(fillRange, fragment, flags, null, null);
|
||
assert.strictEqual(resCell.getValueWithFormat(), "1", "Value in C1 after ++1 calculate");
|
||
assert.strictEqual(resCell.getValueForEdit(), "=+1", "Formula in C1 after ++1 calculate");
|
||
|
||
fragment[0].setFragmentText("++-+1");
|
||
resCell = ws.getRange2("C1");
|
||
wsView._saveCellValueAfterEdit(fillRange, fragment, flags, null, null);
|
||
assert.strictEqual(resCell.getValueWithFormat(), "-1", "Value in C1 after ++-+1 calculate");
|
||
assert.strictEqual(resCell.getValueForEdit(), "=++-1", "Formula in C1 after ++-+1 calculate");
|
||
|
||
fragment[0].setFragmentText("++-+-+-1");
|
||
resCell = ws.getRange2("C1");
|
||
wsView._saveCellValueAfterEdit(fillRange, fragment, flags, null, null);
|
||
assert.strictEqual(resCell.getValueWithFormat(), "-1", "Value in C1 after ++-+-+-1 calculate");
|
||
assert.strictEqual(resCell.getValueForEdit(), "=++-+-+-1", "Formula in C1 after ++-+-+-1 calculate");
|
||
|
||
fragment[0].setFragmentText("++1++1");
|
||
resCell = ws.getRange2("C1");
|
||
wsView._saveCellValueAfterEdit(fillRange, fragment, flags, null, null);
|
||
assert.strictEqual(resCell.getValueWithFormat(), "2", "Value in C1 after ++1++1 calculate");
|
||
assert.strictEqual(resCell.getValueForEdit(), "=+1+1", "Formula in C1 after ++1++1 calculate");
|
||
|
||
fragment[0].setFragmentText("+++1+++1++1");
|
||
resCell = ws.getRange2("C1");
|
||
wsView._saveCellValueAfterEdit(fillRange, fragment, flags, null, null);
|
||
assert.strictEqual(resCell.getValueWithFormat(), "3", "Value in C1 after +++1+++1++1 calculate");
|
||
assert.strictEqual(resCell.getValueForEdit(), "=++1++1+1", "Formula in C1 after +++1+++1++1 calculate");
|
||
|
||
fragment[0].setFragmentText("=1++-+2/3");
|
||
resCell = ws.getRange2("C1");
|
||
wsView._saveCellValueAfterEdit(fillRange, fragment, flags, null, null);
|
||
assert.strictEqual(resCell.getValueWithFormat(), "0.333333333", "Value in C1 after =1++-+2/3 calculate");
|
||
assert.strictEqual(resCell.getValueForEdit(), "=1++-2/3", "Formula in C1 after =1++-+2/3 calculate");
|
||
|
||
fragment[0].setFragmentText('=+++"STR"');
|
||
resCell = ws.getRange2("C1");
|
||
wsView._saveCellValueAfterEdit(fillRange, fragment, flags, null, null);
|
||
assert.strictEqual(resCell.getValueWithFormat(), "STR", 'Value in C1 after =+++"STR" calculate');
|
||
assert.strictEqual(resCell.getValueForEdit(), '=+++"STR"', 'Formula in C1 after =+++"STR" calculate');
|
||
|
||
fragment[0].setFragmentText('=+++TRUE');
|
||
resCell = ws.getRange2("C1");
|
||
wsView._saveCellValueAfterEdit(fillRange, fragment, flags, null, null);
|
||
assert.strictEqual(resCell.getValueWithFormat(), "TRUE", 'Value in C1 after =+++TRUE calculate');
|
||
assert.strictEqual(resCell.getValueForEdit(), '=+++TRUE', 'Formula in C1 after =+++TRUE calculate');
|
||
|
||
fragment[0].setFragmentText('=+++FALSE');
|
||
resCell = ws.getRange2("C1");
|
||
wsView._saveCellValueAfterEdit(fillRange, fragment, flags, null, null);
|
||
assert.strictEqual(resCell.getValueWithFormat(), "FALSE", 'Value in C1 after =+++FALSE calculate');
|
||
assert.strictEqual(resCell.getValueForEdit(), '=+++FALSE', 'Formula in C1 after =+++FALSE calculate');
|
||
|
||
fragment[0].setFragmentText('=+++A3');
|
||
resCell = ws.getRange2("C1");
|
||
wsView._saveCellValueAfterEdit(fillRange, fragment, flags, null, null);
|
||
assert.strictEqual(resCell.getValueWithFormat(), "#N/A", 'Value in C1 after =+++A3 (error in cell check) calculate');
|
||
assert.strictEqual(resCell.getValueForEdit(), '=+++A3', 'Formula in C1 after =+++A3 (error in cell check) calculate');
|
||
|
||
fragment[0].setFragmentText('=+++A1:A2');
|
||
resCell = ws.getRange2("C1");
|
||
wsView._saveCellValueAfterEdit(fillRange, fragment, flags, null, null);
|
||
assert.strictEqual(resCell.getValueWithFormat(), "1", 'Value in C1 after =+++A1:A2 calculate');
|
||
assert.strictEqual(resCell.getValueForEdit(), '=+++A1:A2', 'Formula in C1 after =+++A1:A2 calculate');
|
||
|
||
fragment[0].setFragmentText('=+++{1,2}');
|
||
resCell = ws.getRange2("C1");
|
||
wsView._saveCellValueAfterEdit(fillRange, fragment, flags, null, null);
|
||
assert.strictEqual(resCell.getValueWithFormat(), "1", 'Value in C1 after =+++{1,2} calculate');
|
||
assert.strictEqual(resCell.getValueForEdit(), '=+++{1,2}', 'Formula in C1 after =+++{1,2} calculate');
|
||
resCell = ws.getRange2("D1");
|
||
assert.strictEqual(resCell.getValueWithFormat(), "2", "Value in D1 after =+++{1,2} calculate");
|
||
assert.strictEqual(resCell.getValueForEdit(), "=+++{1,2}", "Formula in D1 after =+++{1,2} calculate");
|
||
|
||
// formulas
|
||
fragment[0].setFragmentText("+SUM(-1)");
|
||
resCell = ws.getRange2("C1");
|
||
wsView._saveCellValueAfterEdit(fillRange, fragment, flags, null, null);
|
||
assert.strictEqual(resCell.getValueWithFormat(), "-1", "Value in C1 after +SUM(-1) calculate");
|
||
assert.strictEqual(resCell.getValueForEdit(), "=+SUM(-1)", "Formula in C1 after +SUM(-1) calculate");
|
||
|
||
fragment[0].setFragmentText("+++SIN(++1)");
|
||
resCell = ws.getRange2("C1");
|
||
wsView._saveCellValueAfterEdit(fillRange, fragment, flags, null, null);
|
||
assert.strictEqual(resCell.getValueWithFormat(), "0.841470985", "Value in C1 after +++SIN(++1) calculate");
|
||
assert.strictEqual(resCell.getValueForEdit(), "=+++SIN(+1)", "Formula in C1 after +++SIN(++1) calculate");
|
||
|
||
fragment[0].setFragmentText("+++-SIN(+++++-1++1---++1)");
|
||
resCell = ws.getRange2("C1");
|
||
wsView._saveCellValueAfterEdit(fillRange, fragment, flags, null, null);
|
||
assert.strictEqual(resCell.getValueWithFormat(), "0.841470985", "Value in C1 after +++-SIN(+++++-1++1---++1) calculate");
|
||
assert.strictEqual(resCell.getValueForEdit(), "=+++-SIN(+++++-1+1---+1)", "Formula in C1 after +++-SIN(+++++-1++1---++1) calculate");
|
||
|
||
// recalculate wb with formulas
|
||
fragment[0].setFragmentText("+++1");
|
||
fillRange = ws.getRange2("C1");
|
||
resCell = ws.getRange2("C1");
|
||
wsView._saveCellValueAfterEdit(fillRange, fragment, flags, null, null);
|
||
assert.strictEqual(resCell.getValueWithFormat(), "1", "Value in C1 after +++1 calculate");
|
||
assert.strictEqual(resCell.getValueForEdit(), "=++1", "Formula in C1 after +++1 calculate");
|
||
|
||
fragment[0].setFragmentText("+++2");
|
||
fillRange = ws.getRange2("C2");
|
||
resCell = ws.getRange2("C2");
|
||
wsView._saveCellValueAfterEdit(fillRange, fragment, flags, null, null);
|
||
assert.strictEqual(resCell.getValueWithFormat(), "2", "Value in C2 after +++2 calculate");
|
||
assert.strictEqual(resCell.getValueForEdit(), "=++2", "Formula in C2 after +++2 calculate");
|
||
|
||
fragment[0].setFragmentText("+++3");
|
||
fillRange = ws.getRange2("C3");
|
||
resCell = ws.getRange2("C3");
|
||
wsView._saveCellValueAfterEdit(fillRange, fragment, flags, null, null);
|
||
assert.strictEqual(resCell.getValueWithFormat(), "3", "Value in C3 after +++3 calculate");
|
||
assert.strictEqual(resCell.getValueForEdit(), "=++3", "Formula in C3 after +++3 calculate");
|
||
|
||
wb.calculate(Asc.c_oAscCalculateType.All);
|
||
|
||
resCell = ws.getRange2("C1");
|
||
assert.strictEqual(resCell.getValueWithFormat(), "1", "Value in C1 after workbook recalculate");
|
||
assert.strictEqual(resCell.getValueForEdit(), "=++1", "Formula in C1 after workbook recalculate");
|
||
|
||
resCell = ws.getRange2("C2");
|
||
assert.strictEqual(resCell.getValueWithFormat(), "2", "Value in C2 after workbook recalculate");
|
||
assert.strictEqual(resCell.getValueForEdit(), "=++2", "Formula in C2 after workbook recalculate");
|
||
|
||
resCell = ws.getRange2("C3");
|
||
assert.strictEqual(resCell.getValueWithFormat(), "3", "Value in C3 after workbook recalculate");
|
||
assert.strictEqual(resCell.getValueForEdit(), "=++3", "Formula in C3 after workbook recalculate");
|
||
|
||
// single value check
|
||
fragment[0].setFragmentText("-5");
|
||
fillRange = ws.getRange2("C3");
|
||
resCell = ws.getRange2("C3");
|
||
wsView._saveCellValueAfterEdit(fillRange, fragment, flags, null, null);
|
||
assert.strictEqual(resCell.getValueWithFormat(), "-5", "Value in C3 after -5 calculate");
|
||
assert.strictEqual(resCell.getValueForEdit(), "-5", "Formula in C3 after -5 calculate");
|
||
|
||
fragment[0].setFragmentText("--5");
|
||
fillRange = ws.getRange2("C3");
|
||
resCell = ws.getRange2("C3");
|
||
wsView._saveCellValueAfterEdit(fillRange, fragment, flags, null, null);
|
||
assert.strictEqual(resCell.getValueWithFormat(), "5", "Value in C3 after --5 calculate");
|
||
assert.strictEqual(resCell.getValueForEdit(), "=--5", "Formula in C3 after --5 calculate");
|
||
|
||
fragment[0].setFragmentText("+5");
|
||
fillRange = ws.getRange2("C3");
|
||
resCell = ws.getRange2("C3");
|
||
wsView._saveCellValueAfterEdit(fillRange, fragment, flags, null, null);
|
||
assert.strictEqual(resCell.getValueWithFormat(), "5", "Value in C3 after +5 calculate");
|
||
assert.strictEqual(resCell.getValueForEdit(), "5", "Formula in C3 after +5 calculate");
|
||
|
||
fragment[0].setFragmentText("++5");
|
||
fillRange = ws.getRange2("C3");
|
||
resCell = ws.getRange2("C3");
|
||
wsView._saveCellValueAfterEdit(fillRange, fragment, flags, null, null);
|
||
assert.strictEqual(resCell.getValueWithFormat(), "5", "Value in C3 after ++5 calculate");
|
||
assert.strictEqual(resCell.getValueForEdit(), "=+5", "Formula in C3 after ++5 calculate");
|
||
|
||
fragment[0].setFragmentText("-A1");
|
||
fillRange = ws.getRange2("C3");
|
||
resCell = ws.getRange2("C3");
|
||
wsView._saveCellValueAfterEdit(fillRange, fragment, flags, null, null);
|
||
assert.strictEqual(resCell.getValueWithFormat(), "-1", "Value in C3 after -A1 calculate");
|
||
assert.strictEqual(resCell.getValueForEdit(), "=-A1", "Formula in C3 after -A1 calculate");
|
||
|
||
fragment[0].setFragmentText("+A1");
|
||
fillRange = ws.getRange2("C3");
|
||
resCell = ws.getRange2("C3");
|
||
wsView._saveCellValueAfterEdit(fillRange, fragment, flags, null, null);
|
||
assert.strictEqual(resCell.getValueWithFormat(), "1", "Value in C3 after +A1 calculate");
|
||
assert.strictEqual(resCell.getValueForEdit(), "=+A1", "Formula in C3 after +A1 calculate");
|
||
|
||
fragment[0].setFragmentText("-A1:A2");
|
||
fillRange = ws.getRange2("C3");
|
||
resCell = ws.getRange2("C3");
|
||
wsView._saveCellValueAfterEdit(fillRange, fragment, flags, null, null);
|
||
assert.strictEqual(resCell.getValueWithFormat(), "#VALUE!", "Value in C3 after -A1:A2 calculate");
|
||
assert.strictEqual(resCell.getValueForEdit(), "=-A1:A2", "Formula in C3 after -A1:A2 calculate");
|
||
|
||
fragment[0].setFragmentText("+A1:A2");
|
||
fillRange = ws.getRange2("C3");
|
||
resCell = ws.getRange2("C3");
|
||
wsView._saveCellValueAfterEdit(fillRange, fragment, flags, null, null);
|
||
assert.strictEqual(resCell.getValueWithFormat(), "#VALUE!", "Value in C3 after +A1:A2 calculate");
|
||
assert.strictEqual(resCell.getValueForEdit(), "=+A1:A2", "Formula in C3 after +A1:A2 calculate");
|
||
|
||
fragment[0].setFragmentText("-{1,2,3}");
|
||
fillRange = ws.getRange2("C3");
|
||
resCell = ws.getRange2("C3");
|
||
wsView._saveCellValueAfterEdit(fillRange, fragment, flags, null, null);
|
||
assert.strictEqual(resCell.getValueWithFormat(), "-1", "Value in C3 after -{1,2,3} calculate");
|
||
assert.strictEqual(resCell.getValueForEdit(), "=-{-1,-2,-3}", "Formula in C3 after -{1,2,3} calculate");
|
||
|
||
fragment[0].setFragmentText("+{1,2,3}");
|
||
fillRange = ws.getRange2("C3");
|
||
resCell = ws.getRange2("C3");
|
||
wsView._saveCellValueAfterEdit(fillRange, fragment, flags, null, null);
|
||
assert.strictEqual(resCell.getValueWithFormat(), "1", "Value in C3 after +{1,2,3} calculate");
|
||
assert.strictEqual(resCell.getValueForEdit(), "=+{1,2,3}", "Formula in C3 after +{1,2,3} calculate");
|
||
|
||
});
|
||
|
||
QUnit.test("Test: \"Assemble formulas test\"", function (assert) {
|
||
let cellWithFormula, fillRange, array;
|
||
|
||
ws.getRange2("A1:F100").cleanAll();
|
||
|
||
// set flags for CSE formula call
|
||
let flags = wsView._getCellFlags(0, 2);
|
||
flags.ctrlKey = false;
|
||
flags.shiftKey = false;
|
||
|
||
// set selection C1
|
||
fillRange = ws.getRange2("A100");
|
||
wsView.setSelection(fillRange.bbox);
|
||
wsView._initRowsCount();
|
||
wsView._initColsCount();
|
||
|
||
|
||
ws.getRange2("A1").setValue("1");
|
||
ws.getRange2("A2").setValue("2");
|
||
ws.getRange2("A3").setValue("3");
|
||
ws.getRange2("B1").setValue("4");
|
||
ws.getRange2("C1").setValue("5");
|
||
|
||
let resCell = ws.getRange2("A100");
|
||
|
||
// TAKE formula check
|
||
resCell.setValue("=TAKE({1,2,3},2,1)");
|
||
assert.strictEqual(resCell.getValueWithFormat(), "1", "Value after TAKE({1,2,3},2,1) calculate");
|
||
assert.strictEqual(resCell.getValueForEdit(), "=TAKE({1,2,3},2,1)", "Value for edit with TAKE({1,2,3},2,1) formula");
|
||
|
||
resCell.setValue("=TAKE({1;2;3},2,1)");
|
||
assert.strictEqual(resCell.getValueWithFormat(), "1", "Value after TAKE({1,2,3},2,1) calculate");
|
||
assert.strictEqual(resCell.getValueForEdit(), "=TAKE({1;2;3},2,1)", "Value for edit with TAKE({1;2;3},2,1) formula");
|
||
|
||
resCell.setValue("=TAKE(A1:A3,2,1)");
|
||
assert.strictEqual(resCell.getValueWithFormat(), "1", "Value after TAKE(A1:A3,2,1) calculate");
|
||
assert.strictEqual(resCell.getValueForEdit(), "=TAKE(A1:A3,2,1)", "Value for edit with TAKE(A1:A3,2,1) formula");
|
||
|
||
resCell.setValue("=TAKE(A1:C1,2,1)");
|
||
assert.strictEqual(resCell.getValueWithFormat(), "1", "Value after TAKE(A1:C1,2,1) calculate");
|
||
assert.strictEqual(resCell.getValueForEdit(), "=TAKE(A1:C1,2,1)", "Value for edit with TAKE(A1:C1,2,1) formula");
|
||
|
||
});
|
||
|
||
QUnit.test('All selection test', function (assert) {
|
||
|
||
ws.getRange2("A1:Z100").cleanAll();
|
||
|
||
ws.getRange2("A1").setValue("1");
|
||
ws.getRange2("A2").setValue("2");
|
||
ws.getRange2("B1").setValue("3");
|
||
ws.getRange2("B2").setValue("4");
|
||
ws.getRange2("C2").setValue("5");
|
||
|
||
let fillRange = new Asc.Range(0, 0, 0, 0);
|
||
wsView.setSelection(fillRange);
|
||
assert.strictEqual(ws.selectionRange.getLast().getName(), "A1");
|
||
|
||
api.wb._onSelectAllByRange();
|
||
assert.strictEqual(ws.selectionRange.getLast().getName(), "A1:C2");
|
||
api.wb._onSelectAllByRange();
|
||
assert.strictEqual(ws.selectionRange.getLast().getType(), Asc.c_oAscSelectionType.RangeMax);
|
||
|
||
fillRange = new Asc.Range(10, 10, 10, 10);
|
||
wsView.setSelection(fillRange);
|
||
api.wb._onSelectAllByRange();
|
||
assert.strictEqual(ws.selectionRange.getLast().getType(), Asc.c_oAscSelectionType.RangeMax);
|
||
|
||
|
||
let tableOptions = new AscCommonExcel.AddFormatTableOptions();
|
||
fillRange = new Asc.Range(0, 0, 2, 1);
|
||
tableOptions.range = fillRange.getName();
|
||
ws.autoFilters.addAutoFilter("style", fillRange, tableOptions);
|
||
assert.strictEqual(ws.TableParts.length, 1);
|
||
assert.strictEqual(ws.TableParts[0].Ref.getName(), "A1:C3");
|
||
|
||
|
||
fillRange = new Asc.Range(1, 1, 1, 1);
|
||
wsView.setSelection(fillRange);
|
||
api.wb._onSelectAllByRange();
|
||
assert.strictEqual(ws.selectionRange.getLast().getName(), "A2:C3");
|
||
api.wb._onSelectAllByRange();
|
||
assert.strictEqual(ws.selectionRange.getLast().getName(), "A1:C3");
|
||
api.wb._onSelectAllByRange();
|
||
assert.strictEqual(ws.selectionRange.getLast().getType(), Asc.c_oAscSelectionType.RangeMax);
|
||
|
||
fillRange = new Asc.Range(0, 0, 0, 0);
|
||
wsView.setSelection(fillRange);
|
||
api.wb._onSelectAllByRange();
|
||
assert.strictEqual(ws.selectionRange.getLast().getName(), "A1:C3");
|
||
api.wb._onSelectAllByRange();
|
||
assert.strictEqual(ws.selectionRange.getLast().getType(), Asc.c_oAscSelectionType.RangeMax);
|
||
});
|
||
|
||
QUnit.test('Selection in formulas test', function (assert) {
|
||
|
||
ws.getRange2("A1:Z100").cleanAll();
|
||
|
||
// remove all data from selection
|
||
let selectedRange = ws.getRange2("A1:Z100");
|
||
wsView.setSelection(selectedRange.bbox);
|
||
wsView.emptySelection(Asc.c_oAscCleanOptions.All);
|
||
|
||
// remove defnames from wb
|
||
wb.dependencyFormulas._foreachDefName(function(defName) {
|
||
wb.dependencyFormulas.removeDefName(undefined, defName.name);
|
||
});
|
||
|
||
ws.getRange2("A1").setValue("1");
|
||
ws.getRange2("A2").setValue("2");
|
||
ws.getRange2("B1").setValue("3");
|
||
ws.getRange2("B2").setValue("4");
|
||
ws.getRange2("C2").setValue("5");
|
||
|
||
api.wb.cellEditor = {
|
||
data : {},
|
||
changeCellText: function () {},
|
||
canEnterCellRange: function () {
|
||
return true;
|
||
},
|
||
getText: function () {
|
||
return "";
|
||
}
|
||
};
|
||
|
||
// set params to correct function start
|
||
api.wb.wsActive = ws.getIndex();
|
||
api.wb.setCellEditMode(true);
|
||
api.wb.isFormulaEditMode = true;
|
||
api.wb.selectionDialogMode = true;
|
||
|
||
ws.selectionRange = null;
|
||
|
||
wsView._initRowsCount();
|
||
wsView._initColsCount();
|
||
wsView.cols[0] = new CacheColumn();
|
||
|
||
let isStartPoint = true, isCoord = true, isCtrl = true;
|
||
let dc = 0, dr = 0, callback;
|
||
|
||
// selection check with ctrl
|
||
assert.strictEqual(ws.selectionRange, null, "Ranges before cell select by coords with ctrl=true");
|
||
api.wb._onChangeSelection(isStartPoint, dc, dr, isCoord, isCtrl, callback);
|
||
assert.strictEqual(ws.selectionRange.ranges.length, 1, "Ranges after first cell select by dc: " + dc + " dr: " + dr + " coords with ctrl=true");
|
||
assert.strictEqual(wsView.getSelectionRangeValue(), "A1", "Selection in cell format by dc: " + dc + " dr: " + dr + " coords with ctrl=true");
|
||
|
||
api.wb._onChangeSelection(isStartPoint, dc, dr, isCoord, isCtrl, callback);
|
||
assert.strictEqual(ws.selectionRange.ranges.length, 2, "Ranges after second cell select by dc: " + dc + " dr: " + dr + " coords with ctrl=true");
|
||
assert.strictEqual(wsView.getSelectionRangeValue(), "A1,A1", "Selection in cell format by dc: " + dc + " dr: " + dr + " coords with ctrl=true");
|
||
|
||
api.wb._onChangeSelection(isStartPoint, dc, dr, isCoord, isCtrl, callback);
|
||
assert.strictEqual(ws.selectionRange.ranges.length, 3, "Ranges after third cell select by dc: " + dc + " dr: " + dr + " coords with ctrl=true");
|
||
assert.strictEqual(wsView.getSelectionRangeValue(), "A1,A1,A1", "Selection in cell format by dc: " + dc + " dr: " + dr + " coords with ctrl=true");
|
||
|
||
isCtrl = false;
|
||
api.wb._onChangeSelection(isStartPoint, dc, dr, isCoord, isCtrl, callback);
|
||
assert.strictEqual(ws.selectionRange.ranges.length, 1, "Ranges after fourth cell select by dc: " + dc + " dr: " + dr + " coords with ctrl=false");
|
||
assert.strictEqual(wsView.getSelectionRangeValue(), "A1", "Selection in cell format by dc: " + dc + " dr: " + dr + " coords with ctrl=false");
|
||
|
||
// todo add more coords to test in _onChangeSelection?
|
||
|
||
api.wb.isFormulaEditMode = false;
|
||
api.wb.selectionDialogMode = false;
|
||
});
|
||
|
||
QUnit.test("Test: \"Formulas calc test\"", function (assert) {
|
||
let cellWithFormula, fillRange, array;
|
||
|
||
// wb.dependencyFormulas.unlockRecal();
|
||
|
||
ws.getRange2("A1:F10").cleanAll();
|
||
ws.getRange2("A1").setValue("1");
|
||
ws.getRange2("A2").setValue("2");
|
||
ws.getRange2("A3").setValue("3");
|
||
ws.getRange2("B1").setValue("+5");
|
||
ws.getRange2("B2").setValue("+5+5");
|
||
ws.getRange2("B3").setValue("-5");
|
||
ws.getRange2("B4").setValue("-5-5");
|
||
|
||
// set flags for CSE formula call
|
||
let flags = wsView._getCellFlags(0, 2);
|
||
flags.ctrlKey = false;
|
||
flags.shiftKey = false;
|
||
|
||
// set selection C1
|
||
fillRange = ws.getRange2("C1");
|
||
wsView.setSelection(fillRange.bbox);
|
||
wsView._initRowsCount();
|
||
wsView._initColsCount();
|
||
|
||
let fragment = ws.getRange2("C1").getValueForEdit2();
|
||
let resCell = ws.getRange2("C1");
|
||
|
||
// MDETERM
|
||
assert.strictEqual(resCell.getValueWithFormat(), "", "Value in C1 before =MDETERM({1,2,3,4}) calculate");
|
||
assert.strictEqual(resCell.getValueForEdit(), "", "Formula in C1 before =MDETERM({1,2,3,4}) calculate");
|
||
fragment[0].setFragmentText("=MDETERM({1,2,3,4})");
|
||
resCell = ws.getRange2("C1");
|
||
wsView._saveCellValueAfterEdit(fillRange, fragment, flags, null, null);
|
||
assert.strictEqual(resCell.getValueWithFormat(), "#VALUE!", "Value in C1 after =MDETERM({1,2,3,4}) calculate");
|
||
assert.strictEqual(resCell.getValueForEdit(), "=MDETERM({1,2,3,4})", "Formula in C1 after =MDETERM({1,2,3,4}) calculate");
|
||
|
||
|
||
assert.strictEqual(resCell.getValueWithFormat(), "#VALUE!", "Value in C1 before =MDETERM({1,2;10,11}) calculate");
|
||
assert.strictEqual(resCell.getValueForEdit(), "=MDETERM({1,2,3,4})", "Formula in C1 before =MDETERM({1,2;10,11}) calculate");
|
||
fragment[0].setFragmentText("=MDETERM({1,2;10,11})");
|
||
resCell = ws.getRange2("C1");
|
||
wsView._saveCellValueAfterEdit(fillRange, fragment, flags, null, null);
|
||
assert.strictEqual(resCell.getValueWithFormat(), "-9", "Value in C1 after =MDETERM({1,2;10,11}) calculate");
|
||
assert.strictEqual(resCell.getValueForEdit(), "=MDETERM({1,2;10,11})", "Formula in C1 after =MDETERM({1,2;10,11}) calculate");
|
||
|
||
|
||
});
|
||
|
||
QUnit.test("Test: \"Workbook dependencies tests\"", function (assert) {
|
||
let cellWithFormula, fillRange, array, wsID = ws.getId();
|
||
|
||
// wb.dependencyFormulas.unlockRecal();
|
||
|
||
ws.getRange2("A1:F10").cleanAll();
|
||
// set flags for CSE formula call
|
||
let flags = wsView._getCellFlags(0, 2);
|
||
flags.ctrlKey = false;
|
||
flags.shiftKey = false;
|
||
|
||
// set selection C1
|
||
fillRange = ws.getRange2("C10");
|
||
wsView.setSelection(fillRange.bbox);
|
||
wsView._initRowsCount();
|
||
wsView._initColsCount();
|
||
|
||
// A1:D5 - Full Table
|
||
// A2:D4 - Table without headers
|
||
// A1:A4 - First Column and so on...
|
||
let dependencyFormulas = wb.dependencyFormulas;
|
||
let sheetListeners = dependencyFormulas.sheetListeners[wsID];
|
||
let defNameListeners = dependencyFormulas.defNameListeners;
|
||
|
||
// set values and props for table
|
||
ws.getRange2("A1:D3").setValue("1");
|
||
let tableProp = AscCommonExcel.AddFormatTableOptions();
|
||
tableProp.asc_setRange("A1:D3");
|
||
tableProp.asc_setIsTitle(false);
|
||
|
||
ws.autoFilters.addAutoFilter("TableStyleLight1", ws.selectionRange.getLast().clone(), tableProp);
|
||
|
||
let tables = wsView.model.autoFilters.getTablesIntersectionRange(ws.getRange2("A1").bbox);
|
||
assert.strictEqual(tables.length, 1, "Table was created without selection of formula. Compare tables length");
|
||
|
||
sheetListeners = dependencyFormulas.sheetListeners[wsID];
|
||
assert.strictEqual(sheetListeners && sheetListeners.areaMap && Object.keys(sheetListeners.areaMap).length, 1, "AreaMap listeners after create the table");
|
||
assert.strictEqual(sheetListeners && sheetListeners.areaMap && Object.keys(defNameListeners).length, 0, "DefNameListeners after create the table");
|
||
|
||
let table = tables[0];
|
||
let tableName = table.DisplayName;
|
||
|
||
let fragment = ws.getRange2("C10").getValueForEdit2();
|
||
let resCell = ws.getRange2("C10");
|
||
// Table
|
||
// Table link without headers
|
||
fragment[0].setFragmentText("=SUM("+tableName+")");
|
||
// resCell = ws.getRange2("C10");
|
||
wsView._saveCellValueAfterEdit(fillRange, fragment, flags, null, null);
|
||
assert.strictEqual(resCell.getValueWithFormat(), "12", "Value in C10 after =SUM(tableName) calculate");
|
||
assert.strictEqual(resCell.getValueForEdit(), "=SUM("+tableName+")", "Formula in C10 after =SUM(tableName) calculate");
|
||
// ws.getRange2("C10").setValue("=SUM("+tableName+")");
|
||
sheetListeners = dependencyFormulas.sheetListeners[wsID];
|
||
assert.strictEqual(sheetListeners.areaMap && Object.keys(sheetListeners.areaMap).length, 2, "AreaMap listeners after set value =SUM(tableName)");
|
||
assert.strictEqual(sheetListeners.areaMap && Object.keys(sheetListeners.areaMap["A2:D4"].listeners).length, 1, "A2:D4(Table) listeners after set value =SUM(tableName)");
|
||
assert.strictEqual(sheetListeners && sheetListeners.areaMap && Object.keys(defNameListeners).length, 0, "DefNameListeners after set value =SUM(tableName)");
|
||
|
||
// delete formula
|
||
fragment[0].setFragmentText("=22");
|
||
wsView._saveCellValueAfterEdit(fillRange, fragment, flags, null, null);
|
||
assert.strictEqual(resCell.getValueWithFormat(), "22", "Value in C10 after =22 calculate(remove =SUM(table)");
|
||
assert.strictEqual(resCell.getValueForEdit(), "=22", "Formula in C10 after =22 calculate(remove =SUM(table)");
|
||
// ws.getRange2("C10").setValue("22");
|
||
sheetListeners = dependencyFormulas.sheetListeners[wsID];
|
||
assert.strictEqual(sheetListeners.areaMap && Object.keys(sheetListeners.areaMap).length, 1, "AreaMap listeners after delete value =SUM(tableName)");
|
||
assert.strictEqual(sheetListeners.areaMap && sheetListeners.areaMap["A2:D4"], undefined, "A2:D4(Table) listeners after delete value =SUM(tableName)");
|
||
assert.strictEqual(sheetListeners && sheetListeners.areaMap && Object.keys(defNameListeners).length, 0, "DefNameListeners after delete value =SUM(tableName)");
|
||
|
||
|
||
// Table[#All]
|
||
// Table link with headers
|
||
fragment[0].setFragmentText("=SUM("+tableName+"[#All])");
|
||
wsView._saveCellValueAfterEdit(fillRange, fragment, flags, null, null);
|
||
assert.strictEqual(resCell.getValueWithFormat(), "12", "Value in C10 after =SUM("+tableName+"[#All]) calculate");
|
||
assert.strictEqual(resCell.getValueForEdit(), "=SUM("+tableName+"[#All])", "Formula in C10 after =SUM("+tableName+"[#All]) calculate");
|
||
// ws.getRange2("C10").setValue("=SUM("+tableName+"[#All])");
|
||
sheetListeners = dependencyFormulas.sheetListeners[wsID];
|
||
assert.strictEqual(sheetListeners.areaMap && Object.keys(sheetListeners.areaMap).length, 1, "AreaMap listeners after set value =SUM(tableName#All)");
|
||
assert.strictEqual(sheetListeners.areaMap && sheetListeners.areaMap["A2:D4"], undefined, "A2:D4(Table) listeners after set value =SUM(tableName#All)");
|
||
assert.strictEqual(sheetListeners && sheetListeners.areaMap && Object.keys(defNameListeners).length, 1, "DefNameListeners after set value =SUM(tableName#All)");
|
||
|
||
// delete formula
|
||
fragment[0].setFragmentText("=22");
|
||
wsView._saveCellValueAfterEdit(fillRange, fragment, flags, null, null);
|
||
assert.strictEqual(resCell.getValueWithFormat(), "22", "Value in C10 after =22 calculate(remove =SUM(table[#All])");
|
||
assert.strictEqual(resCell.getValueForEdit(), "=22", "Formula in C10 after =22 calculate(remove =SUM(table[#All])");
|
||
// ws.getRange2("C10").setValue("22");
|
||
sheetListeners = dependencyFormulas.sheetListeners[wsID];
|
||
assert.strictEqual(sheetListeners.areaMap && Object.keys(sheetListeners.areaMap).length, 1, "AreaMap listeners after delete value =SUM(tableName#All)");
|
||
assert.strictEqual(sheetListeners.areaMap && sheetListeners.areaMap["A2:D4"], undefined, "A2:D4(Table) listeners after delete value =SUM(tableName#All)");
|
||
assert.strictEqual(sheetListeners && sheetListeners.areaMap && Object.keys(defNameListeners).length, 0, "DefNameListeners after delete value =SUM(tableName#All)");
|
||
|
||
|
||
// Table[Column1]
|
||
// Table columns link without headers
|
||
fragment[0].setFragmentText("=SUM("+tableName+"[Column1])");
|
||
wsView._saveCellValueAfterEdit(fillRange, fragment, flags, null, null);
|
||
assert.strictEqual(resCell.getValueWithFormat(), "3", "Value in C10 after =SUM("+tableName+"[Column1]) calculate");
|
||
assert.strictEqual(resCell.getValueForEdit(), "=SUM("+tableName+"[Column1])", "Formula in C10 after =SUM("+tableName+"[Column1]) calculate");
|
||
// ws.getRange2("C10").setValue("=SUM("+tableName+"[Column1])");
|
||
sheetListeners = dependencyFormulas.sheetListeners[wsID];
|
||
assert.strictEqual(sheetListeners.areaMap && Object.keys(sheetListeners.areaMap).length, 2, "AreaMap listeners after set value =SUM(Column1)");
|
||
assert.strictEqual(sheetListeners.areaMap && sheetListeners.areaMap["A2:D4"], undefined, "A2:D4(Table) listeners after set value =SUM(Column1)");
|
||
assert.strictEqual(sheetListeners.areaMap && sheetListeners.areaMap["A2:A4"] !== undefined, true, "A2:A4(Column) listeners after set value =SUM(Column1)");
|
||
assert.strictEqual(sheetListeners.areaMap && Object.keys(sheetListeners.areaMap["A2:A4"].listeners).length, 1, "A2:A4(Column) listeners after set value =SUM(Column1)");
|
||
assert.strictEqual(sheetListeners && sheetListeners.areaMap && Object.keys(defNameListeners).length, 0, "DefNameListeners after set value =SUM(Column1)");
|
||
|
||
// delete formula
|
||
fragment[0].setFragmentText("=22");
|
||
wsView._saveCellValueAfterEdit(fillRange, fragment, flags, null, null);
|
||
assert.strictEqual(resCell.getValueWithFormat(), "22", "Value in C10 after =SUM("+tableName+"[Column1]) delete");
|
||
assert.strictEqual(resCell.getValueForEdit(), "=22", "Formula in C10 after =SUM("+tableName+"[Column1]) delete");
|
||
// ws.getRange2("C10").setValue("22");
|
||
sheetListeners = dependencyFormulas.sheetListeners[wsID];
|
||
assert.strictEqual(sheetListeners.areaMap && Object.keys(sheetListeners.areaMap).length, 1, "AreaMap listeners after delete value =SUM(Column1)");
|
||
assert.strictEqual(sheetListeners.areaMap && sheetListeners.areaMap["A2:D4"], undefined, "A2:D4(Table) listeners after delete value =SUM(Column1)");
|
||
assert.strictEqual(sheetListeners.areaMap && sheetListeners.areaMap["A2:A4"], undefined, "A2:A4(Column) listeners after delete value =SUM(Column1)");
|
||
assert.strictEqual(sheetListeners && sheetListeners.areaMap && Object.keys(defNameListeners).length, 0, "DefNameListeners after delete value =SUM(Column1)");
|
||
|
||
|
||
// Table[[Column1]:[Column2]]
|
||
// Table columns link without headers
|
||
fragment[0].setFragmentText("=SUM("+tableName+"[[Column1]:[Column2]])");
|
||
wsView._saveCellValueAfterEdit(fillRange, fragment, flags, null, null);
|
||
assert.strictEqual(resCell.getValueWithFormat(), "6", "Value in C10 after =SUM("+tableName+"[[Column1]:[Column2]]) calculate");
|
||
assert.strictEqual(resCell.getValueForEdit(), "=SUM("+tableName+"[[Column1]:[Column2]])", "Formula in C10 after =SUM("+tableName+"[[Column1]:[Column2]]) calculate");
|
||
// ws.getRange2("C10").setValue("=SUM("+tableName+"[[Column1]:[Column2]])");
|
||
sheetListeners = dependencyFormulas.sheetListeners[wsID];
|
||
assert.strictEqual(sheetListeners.areaMap && Object.keys(sheetListeners.areaMap).length, 2, "AreaMap listeners after set value SUM(Table[Col1]:[Col2])");
|
||
assert.strictEqual(sheetListeners.areaMap && sheetListeners.areaMap["A2:D4"], undefined, "A2:D4(Table) listeners after set value SUM(Table[Col1]:[Col2]");
|
||
assert.strictEqual(sheetListeners.areaMap && sheetListeners.areaMap["A2:A4"], undefined, "A2:A4(Column) listeners after set value SUM(Table[Col1]:[Col2]");
|
||
assert.strictEqual(sheetListeners.areaMap && sheetListeners.areaMap["A2:B4"] !== undefined, true, "A2:B4(Columns) listeners after set value SUM(Table[Col1]:[Col2]");
|
||
assert.strictEqual(sheetListeners.areaMap && Object.keys(sheetListeners.areaMap["A2:B4"].listeners).length, 1, "A2:B4(Columns) listeners after set value SUM(Table[Col1]:[Col2]");
|
||
assert.strictEqual(sheetListeners && sheetListeners.areaMap && Object.keys(defNameListeners).length, 0, "DefNameListeners after set value SUM(Table[Col1]:[Col2]");
|
||
|
||
// delete formula
|
||
fragment[0].setFragmentText("=22");
|
||
wsView._saveCellValueAfterEdit(fillRange, fragment, flags, null, null);
|
||
assert.strictEqual(resCell.getValueWithFormat(), "22", "Value in C10 after =SUM("+tableName+"[[Column1]:[Column2]]) delete");
|
||
assert.strictEqual(resCell.getValueForEdit(), "=22", "Formula in C10 after =SUM("+tableName+"[[Column1]:[Column2]]) delete");
|
||
// ws.getRange2("C10").setValue("22");
|
||
sheetListeners = dependencyFormulas.sheetListeners[wsID];
|
||
assert.strictEqual(sheetListeners.areaMap && Object.keys(sheetListeners.areaMap).length, 1, "AreaMap listeners after delete value SUM(Table[Col1]:[Col2])");
|
||
assert.strictEqual(sheetListeners.areaMap && sheetListeners.areaMap["A2:D4"], undefined, "A2:D4(Table) listeners after delete value SUM(Table[Col1]:[Col2])");
|
||
assert.strictEqual(sheetListeners.areaMap && sheetListeners.areaMap["A2:A4"], undefined, "A2:A4(Column) listeners after delete value SUM(Table[Col1]:[Col2])");
|
||
assert.strictEqual(sheetListeners.areaMap && sheetListeners.areaMap["A2:B4"], undefined, "A2:B4(Columns) listeners after delete value SUM(Table[Col1]:[Col2]");
|
||
assert.strictEqual(sheetListeners && sheetListeners.areaMap && Object.keys(defNameListeners).length, 0, "DefNameListeners after delete value SUM(Table[Col1]:[Col2]");
|
||
|
||
|
||
// Table[[#All],[Column1]]
|
||
// Table columns link with headers
|
||
fragment[0].setFragmentText("=SUM("+tableName+"[[#All],[Column1]])");
|
||
wsView._saveCellValueAfterEdit(fillRange, fragment, flags, null, null);
|
||
assert.strictEqual(resCell.getValueWithFormat(), "3", "Value in C10 after =SUM("+tableName+"[[#All],[Column1]]) calculate");
|
||
assert.strictEqual(resCell.getValueForEdit(), "=SUM("+tableName+"[[#All],[Column1]])", "Formula in C10 after =SUM("+tableName+"[[#All],[Column1]]) calculate");
|
||
// ws.getRange2("C10").setValue("=SUM("+tableName+"[[#All],[Column1]])");
|
||
sheetListeners = dependencyFormulas.sheetListeners[wsID];
|
||
assert.strictEqual(sheetListeners.areaMap && Object.keys(sheetListeners.areaMap).length, 2, "AreaMap listeners after set value SUM(tableName#All,Col1)");
|
||
assert.strictEqual(sheetListeners.areaMap && sheetListeners.areaMap["A2:D4"], undefined, "A2:D4(Table) listeners after set value SUM(tableName#All,Col1)");
|
||
assert.strictEqual(sheetListeners.areaMap && sheetListeners.areaMap["A2:A4"], undefined, "A2:A4(Column) listeners after set value SUM(tableName#All,Col1)");
|
||
assert.strictEqual(sheetListeners.areaMap && sheetListeners.areaMap["A1:A4"] !== undefined, true, "A1:A4(Column) listeners after set value SUM(tableName#All,Col1)");
|
||
assert.strictEqual(sheetListeners.areaMap && Object.keys(sheetListeners.areaMap["A1:A4"].listeners).length, 1, "A1:A4(Column) listeners after set value SUM(tableName#All,Col1)");
|
||
assert.strictEqual(sheetListeners && sheetListeners.areaMap && Object.keys(defNameListeners).length, 0, "DefNameListeners after set value SUM(tableName#All,Col1)");
|
||
|
||
// delete formula
|
||
fragment[0].setFragmentText("=22");
|
||
wsView._saveCellValueAfterEdit(fillRange, fragment, flags, null, null);
|
||
assert.strictEqual(resCell.getValueWithFormat(), "22", "Value in C10 after =SUM("+tableName+"[[#All],[Column1]]) delete");
|
||
assert.strictEqual(resCell.getValueForEdit(), "=22", "Formula in C10 after =SUM("+tableName+"[[#All],[Column1]]) delete");
|
||
// ws.getRange2("C10").setValue("22");
|
||
sheetListeners = dependencyFormulas.sheetListeners[wsID];
|
||
assert.strictEqual(sheetListeners.areaMap && Object.keys(sheetListeners.areaMap).length, 1, "AreaMap listeners after delete value SUM(tableName#All,Col1)");
|
||
assert.strictEqual(sheetListeners.areaMap && sheetListeners.areaMap["A2:D4"], undefined, "A2:D4(Table) listeners after delete value SUM(tableName#All,Col1)");
|
||
assert.strictEqual(sheetListeners.areaMap && sheetListeners.areaMap["A2:A4"], undefined, "A2:A4(Column) listeners after delete value SUM(tableName#All,Col1)");
|
||
assert.strictEqual(sheetListeners.areaMap && sheetListeners.areaMap["A1:A4"], undefined, "A1:A4(Column) listeners after delete value SUM(tableName#All,Col1)");
|
||
assert.strictEqual(sheetListeners && sheetListeners.areaMap && Object.keys(defNameListeners).length, 0, "DefNameListeners after delete value SUM(tableName#All,Col1)");
|
||
|
||
|
||
// Table[[#All],[Column1]:[Column2]]
|
||
// Table columns link with headers
|
||
fragment[0].setFragmentText("=SUM("+tableName+"[[#All],[Column1]:[Column2]])");
|
||
wsView._saveCellValueAfterEdit(fillRange, fragment, flags, null, null);
|
||
assert.strictEqual(resCell.getValueWithFormat(), "6", "Value in C10 after =SUM("+tableName+"[[#All],[Column1]:[Column2]]) calculate");
|
||
assert.strictEqual(resCell.getValueForEdit(), "=SUM("+tableName+"[[#All],[Column1]:[Column2]])", "Formula in C10 after =SUM("+tableName+"[[#All],[Column1]:[Column2]]) calculate");
|
||
// ws.getRange2("C10").setValue("=SUM("+tableName+"[[#All],[Column1]:[Column2]])");
|
||
sheetListeners = dependencyFormulas.sheetListeners[wsID];
|
||
assert.strictEqual(sheetListeners.areaMap && Object.keys(sheetListeners.areaMap).length, 2, "AreaMap listeners after set value SUM(tableName#All,Col1:Col2)");
|
||
assert.strictEqual(sheetListeners.areaMap && sheetListeners.areaMap["A2:D4"], undefined, "A2:D4(Table) listeners after set value SUM(tableName#All,Col1:Col2)");
|
||
assert.strictEqual(sheetListeners.areaMap && sheetListeners.areaMap["A2:A4"], undefined, "A2:A4(Column) listeners after set value SUM(tableName#All,Col1:Col2)");
|
||
assert.strictEqual(sheetListeners.areaMap && sheetListeners.areaMap["A1:A4"], undefined, "A1:A4(Column) listeners after set value SUM(tableName#All,Col1:Col2)");
|
||
assert.strictEqual(sheetListeners.areaMap && sheetListeners.areaMap["A1:B4"] !== undefined, true, "A1:B4(Columns) listeners after set value SUM(tableName#All,Col1:Col2)");
|
||
assert.strictEqual(sheetListeners.areaMap && Object.keys(sheetListeners.areaMap["A1:B4"].listeners).length, 1, "A1:B4(Columns) listeners after set value SUM(tableName#All,Col1:Col2)");
|
||
assert.strictEqual(sheetListeners && sheetListeners.areaMap && Object.keys(defNameListeners).length, 0, "DefNameListeners after set value SUM(tableName#All,Col1:Col2)");
|
||
|
||
// delete formula
|
||
fragment[0].setFragmentText("=22");
|
||
wsView._saveCellValueAfterEdit(fillRange, fragment, flags, null, null);
|
||
assert.strictEqual(resCell.getValueWithFormat(), "22", "Value in C10 after =SUM("+tableName+"[[#All],[Column1]:[Column2]]) delete");
|
||
assert.strictEqual(resCell.getValueForEdit(), "=22", "Formula in C10 after =SUM("+tableName+"[[#All],[Column1]:[Column2]]) delete");
|
||
|
||
sheetListeners = dependencyFormulas.sheetListeners[wsID];
|
||
assert.strictEqual(sheetListeners.areaMap && Object.keys(sheetListeners.areaMap).length, 1, "AreaMap listeners after delete value SUM(tableName#All,Col1)");
|
||
assert.strictEqual(sheetListeners.areaMap && sheetListeners.areaMap["A2:D4"], undefined, "A2:D4(Table) listeners after delete value SUM(tableName#All,Col1)");
|
||
assert.strictEqual(sheetListeners.areaMap && sheetListeners.areaMap["A2:A4"], undefined, "A2:A4(Column) listeners after delete value SUM(tableName#All,Col1)");
|
||
assert.strictEqual(sheetListeners.areaMap && sheetListeners.areaMap["A1:A4"], undefined, "A1:A4(Column) listeners after delete value SUM(tableName#All,Col1)");
|
||
assert.strictEqual(sheetListeners.areaMap && sheetListeners.areaMap["A1:B4"], undefined, "A1:B4(Columns) listeners after delete value SUM(tableName#All,Col1)");
|
||
assert.strictEqual(sheetListeners && sheetListeners.areaMap && Object.keys(defNameListeners).length, 0, "DefNameListeners after delete value SUM(tableName#All,Col1)");
|
||
|
||
|
||
fragment[0].setFragmentText("=SUM("+tableName + "[[#All],[Column1]:[Column4]])");
|
||
wsView._saveCellValueAfterEdit(fillRange, fragment, flags, null, null);
|
||
assert.strictEqual(resCell.getValueWithFormat(), "12", "Value in C10 after =SUM("+tableName + "[[#All],[Column1]:[Column4]]) calculate");
|
||
assert.strictEqual(resCell.getValueForEdit(), "=SUM("+tableName + "[[#All],[Column1]:[Column4]])", "Formula in C10 after =SUM("+tableName + "[[#All],[Column1]:[Column4]]) calculate");
|
||
sheetListeners = dependencyFormulas.sheetListeners[wsID];
|
||
assert.strictEqual(sheetListeners.areaMap && Object.keys(sheetListeners.areaMap).length, 2, "AreaMap listeners after set value SUM(tableName#All,Col1:Col4)");
|
||
assert.strictEqual(sheetListeners.areaMap && sheetListeners.areaMap["A1:D4"] !== undefined, true, "A1:D4(Columns) listeners after set value SUM(tableName#All,Col1:Col4)");
|
||
assert.strictEqual(sheetListeners.areaMap && Object.keys(sheetListeners.areaMap["A1:D4"].listeners).length, 1, "A1:D4(Columns) listeners after set value SUM(tableName#All,Col1:Col4)");
|
||
assert.strictEqual(sheetListeners && sheetListeners.areaMap && Object.keys(defNameListeners).length, 0, "DefNameListeners after set value SUM(tableName#All,Col1:Col4)");
|
||
|
||
fragment[0].setFragmentText("=22");
|
||
wsView._saveCellValueAfterEdit(fillRange, fragment, flags, null, null);
|
||
assert.strictEqual(resCell.getValueWithFormat(), "22", "Value in C10 after tableName[[#All],[Column1]:[Column4]] delete");
|
||
assert.strictEqual(resCell.getValueForEdit(), "=22", "Formula in C10 after tableName[[#All],[Column1]:[Column4]] delete");
|
||
sheetListeners = dependencyFormulas.sheetListeners[wsID];
|
||
assert.strictEqual(sheetListeners.areaMap && sheetListeners.areaMap["A1:D4"], undefined, "A1:D4(Columns) listeners after delete value tableName#All,Col1")
|
||
|
||
|
||
flags.ctrlKey = true;
|
||
flags.shiftKey = true;
|
||
fragment[0].setFragmentText("="+tableName);
|
||
fillRange = ws.getRange2("C10:G14");
|
||
wsView.setSelection(fillRange.bbox);
|
||
wsView._saveCellValueAfterEdit(fillRange, fragment, flags, null, null);
|
||
assert.strictEqual(resCell.getValueWithFormat(), "1", "Value in C10 after tableName calculate");
|
||
assert.strictEqual(resCell.getValueForEdit(), "="+tableName, "Formula in C10 after tableName calculate");
|
||
resCell = ws.getRange2("C11");
|
||
assert.strictEqual(resCell.getValueWithFormat(), "1", "Value in C11 after tableName calculate");
|
||
assert.strictEqual(resCell.getValueForEdit(), "="+tableName, "Formula in C11 after tableName calculate");
|
||
resCell = ws.getRange2("C12");
|
||
assert.strictEqual(resCell.getValueWithFormat(), "1", "Value in C12 after tableName calculate");
|
||
assert.strictEqual(resCell.getValueForEdit(), "="+tableName, "Formula in C12 after tableName calculate");
|
||
sheetListeners = dependencyFormulas.sheetListeners[wsID];
|
||
assert.strictEqual(sheetListeners.areaMap && Object.keys(sheetListeners.areaMap).length, 2, "AreaMap listeners after set value tableName");
|
||
assert.strictEqual(sheetListeners.areaMap && Object.keys(sheetListeners.areaMap["A2:D4"].listeners).length, 1, "A2:D4(Table) listeners after set value tableName");
|
||
assert.strictEqual(sheetListeners && sheetListeners.areaMap && Object.keys(defNameListeners).length, 0, "DefNameListeners after set value tableName");
|
||
|
||
fragment[0].setFragmentText("=22");
|
||
wsView._saveCellValueAfterEdit(fillRange, fragment, flags, null, null);
|
||
assert.strictEqual(resCell.getValueWithFormat(), "22", "Value in C10 after =22 calculate(remove table)");
|
||
assert.strictEqual(resCell.getValueForEdit(), "=22", "Formula in C10 after =22 calculate(remove table)");
|
||
sheetListeners = dependencyFormulas.sheetListeners[wsID];
|
||
assert.strictEqual(sheetListeners.areaMap && Object.keys(sheetListeners.areaMap).length, 1, "AreaMap listeners after delete value tableName");
|
||
assert.strictEqual(sheetListeners.areaMap && sheetListeners.areaMap["A2:D4"], undefined, "A2:D4(Table) listeners after delete value tableName");
|
||
assert.strictEqual(sheetListeners && sheetListeners.areaMap && Object.keys(defNameListeners).length, 0, "DefNameListeners after delete value tableName");
|
||
|
||
fragment[0].setFragmentText("="+tableName + "[#All]");
|
||
wsView._saveCellValueAfterEdit(fillRange, fragment, flags, null, null);
|
||
resCell = ws.getRange2("C10");
|
||
assert.strictEqual(resCell.getValueWithFormat(), "Column1", "Value in C10 after tableName[#All] calculate");
|
||
assert.strictEqual(resCell.getValueForEdit(), "="+tableName + "[#All]", "Formula in C10 after tableName[#All] calculate");
|
||
resCell = ws.getRange2("C11");
|
||
assert.strictEqual(resCell.getValueWithFormat(), "1", "Value in C11 after tableName[#All] calculate");
|
||
assert.strictEqual(resCell.getValueForEdit(), "="+tableName + "[#All]", "Formula in C11 after tableName[#All] calculate");
|
||
sheetListeners = dependencyFormulas.sheetListeners[wsID];
|
||
assert.strictEqual(sheetListeners.areaMap && Object.keys(sheetListeners.areaMap).length, 1, "AreaMap listeners after set value tableName#All");
|
||
assert.strictEqual(sheetListeners.areaMap && sheetListeners.areaMap["A2:D4"], undefined, "A2:D4(Table) listeners after set value tableName#All");
|
||
assert.strictEqual(sheetListeners && sheetListeners.areaMap && Object.keys(defNameListeners).length, 1, "DefNameListeners after set value tableName#All");
|
||
|
||
fragment[0].setFragmentText("=22");
|
||
wsView._saveCellValueAfterEdit(fillRange, fragment, flags, null, null);
|
||
resCell = ws.getRange2("C10");
|
||
assert.strictEqual(resCell.getValueWithFormat(), "22", "Value in C10 after =22 calculate(remove table[#All])");
|
||
assert.strictEqual(resCell.getValueForEdit(), "=22", "Formula in C10 after =22 calculate(remove table[#All])");
|
||
sheetListeners = dependencyFormulas.sheetListeners[wsID];
|
||
assert.strictEqual(sheetListeners.areaMap && Object.keys(sheetListeners.areaMap).length, 1, "AreaMap listeners after delete value tableName#All");
|
||
assert.strictEqual(sheetListeners.areaMap && sheetListeners.areaMap["A2:D4"], undefined, "A2:D4(Table) listeners after delete value tableName#All");
|
||
assert.strictEqual(sheetListeners && sheetListeners.areaMap && Object.keys(defNameListeners).length, 0, "DefNameListeners after delete value tableName#All");
|
||
|
||
fragment[0].setFragmentText("="+tableName + "[Column1]");
|
||
wsView._saveCellValueAfterEdit(fillRange, fragment, flags, null, null);
|
||
assert.strictEqual(resCell.getValueWithFormat(), "1", "Value in C10 after tableName[Column1] calculate");
|
||
assert.strictEqual(resCell.getValueForEdit(), "="+tableName + "[Column1]", "Formula in C10 after tableName[Column1] calculate");
|
||
sheetListeners = dependencyFormulas.sheetListeners[wsID];
|
||
assert.strictEqual(sheetListeners.areaMap && Object.keys(sheetListeners.areaMap).length, 2, "AreaMap listeners after set value Column1");
|
||
assert.strictEqual(sheetListeners.areaMap && sheetListeners.areaMap["A2:D4"], undefined, "A2:D4(Table) listeners after set value Column1");
|
||
assert.strictEqual(sheetListeners.areaMap && sheetListeners.areaMap["A2:A4"] !== undefined, true, "A2:A4(Column) listeners after set value Column1");
|
||
assert.strictEqual(sheetListeners.areaMap && Object.keys(sheetListeners.areaMap["A2:A4"].listeners).length, 1, "A2:A4(Column) listeners after set value Column1");
|
||
assert.strictEqual(sheetListeners && sheetListeners.areaMap && Object.keys(defNameListeners).length, 0, "DefNameListeners after set value Column1");
|
||
|
||
fragment[0].setFragmentText("=22");
|
||
wsView._saveCellValueAfterEdit(fillRange, fragment, flags, null, null);
|
||
assert.strictEqual(resCell.getValueWithFormat(), "22", "Value in C10 after tableName[Column1] delete");
|
||
assert.strictEqual(resCell.getValueForEdit(), "=22", "Formula in C10 after tableName[Column1] delete");
|
||
sheetListeners = dependencyFormulas.sheetListeners[wsID];
|
||
assert.strictEqual(sheetListeners.areaMap && Object.keys(sheetListeners.areaMap).length, 1, "AreaMap listeners after delete value Column1");
|
||
assert.strictEqual(sheetListeners.areaMap && sheetListeners.areaMap["A2:D4"], undefined, "A2:D4(Table) listeners after delete value Column1");
|
||
assert.strictEqual(sheetListeners.areaMap && sheetListeners.areaMap["A2:A4"], undefined, "A2:A4(Column) listeners after delete value Column1");
|
||
|
||
fragment[0].setFragmentText("="+tableName + "[[Column1]:[Column2]]");
|
||
wsView._saveCellValueAfterEdit(fillRange, fragment, flags, null, null);
|
||
assert.strictEqual(resCell.getValueWithFormat(), "1", "Value in C10 after tableName[[Column1]:[Column2]] calculate");
|
||
assert.strictEqual(resCell.getValueForEdit(), "="+tableName + "[[Column1]:[Column2]]", "Formula in C10 after tableName[[Column1]:[Column2]] calculate");
|
||
sheetListeners = dependencyFormulas.sheetListeners[wsID];
|
||
assert.strictEqual(sheetListeners.areaMap && Object.keys(sheetListeners.areaMap).length, 2, "AreaMap listeners after set value Table[Col1]:[Col2]");
|
||
assert.strictEqual(sheetListeners.areaMap && sheetListeners.areaMap["A2:D4"], undefined, "A2:D4(Table) listeners after set value Table[Col1]:[Col2]");
|
||
assert.strictEqual(sheetListeners.areaMap && sheetListeners.areaMap["A2:A4"], undefined, "A2:A4(Column) listeners after set value Table[Col1]:[Col2]");
|
||
assert.strictEqual(sheetListeners.areaMap && sheetListeners.areaMap["A2:B4"] !== undefined, true, "A2:B4(Columns) listeners after set value Table[Col1]:[Col2]");
|
||
assert.strictEqual(sheetListeners.areaMap && Object.keys(sheetListeners.areaMap["A2:B4"].listeners).length, 1, "A2:B4(Columns) listeners after set value Table[Col1]:[Col2]");
|
||
assert.strictEqual(sheetListeners && sheetListeners.areaMap && Object.keys(defNameListeners).length, 0, "DefNameListeners after set value Table[Col1]:[Col2]");
|
||
|
||
fragment[0].setFragmentText("=22");
|
||
wsView._saveCellValueAfterEdit(fillRange, fragment, flags, null, null);
|
||
assert.strictEqual(resCell.getValueWithFormat(), "22", "Value in C10 after tableName[[Column1]:[Column2]] delete");
|
||
assert.strictEqual(resCell.getValueForEdit(), "=22", "Formula in C10 after tableName[[Column1]:[Column2]] delete");
|
||
sheetListeners = dependencyFormulas.sheetListeners[wsID];
|
||
assert.strictEqual(sheetListeners.areaMap && Object.keys(sheetListeners.areaMap).length, 1, "AreaMap listeners after delete value Table[Col1]:[Col2]");
|
||
assert.strictEqual(sheetListeners.areaMap && sheetListeners.areaMap["A2:D4"], undefined, "A2:D4(Table) listeners after delete value Table[Col1]:[Col2]");
|
||
assert.strictEqual(sheetListeners.areaMap && sheetListeners.areaMap["A2:A4"], undefined, "A2:A4(Column) listeners after delete value Table[Col1]:[Col2]");
|
||
assert.strictEqual(sheetListeners.areaMap && sheetListeners.areaMap["A2:B4"], undefined, "A2:B4(Columns) listeners after delete value Table[Col1]:[Col2]");
|
||
|
||
fragment[0].setFragmentText("="+tableName + "[[#All],[Column1]]");
|
||
wsView._saveCellValueAfterEdit(fillRange, fragment, flags, null, null);
|
||
resCell = ws.getRange2("C10");
|
||
assert.strictEqual(resCell.getValueWithFormat(), "Column1", "Value in C10 after tableName[[#All],[Column1]] calculate");
|
||
assert.strictEqual(resCell.getValueForEdit(), "="+tableName + "[[#All],[Column1]]", "Formula in C10 after tableName[[#All],[Column1]] calculate");
|
||
resCell = ws.getRange2("C11");
|
||
assert.strictEqual(resCell.getValueWithFormat(), "1", "Value in C11 after tableName[[#All],[Column1]] calculate");
|
||
assert.strictEqual(resCell.getValueForEdit(), "="+tableName + "[[#All],[Column1]]", "Formula in C10 after tableName[[#All],[Column1]] calculate");
|
||
sheetListeners = dependencyFormulas.sheetListeners[wsID];
|
||
assert.strictEqual(sheetListeners.areaMap && Object.keys(sheetListeners.areaMap).length, 2, "AreaMap listeners after set value tableName#All,Col1");
|
||
assert.strictEqual(sheetListeners.areaMap && sheetListeners.areaMap["A2:D4"], undefined, "A2:D4(Table) listeners after set value tableName#All,Col1");
|
||
assert.strictEqual(sheetListeners.areaMap && sheetListeners.areaMap["A2:A4"], undefined, "A2:A4(Column) listeners after set value tableName#All,Col1");
|
||
assert.strictEqual(sheetListeners.areaMap && sheetListeners.areaMap["A1:A4"] !== undefined, true, "A1:A4(Column) listeners after set value tableName#All,Col1");
|
||
assert.strictEqual(sheetListeners.areaMap && Object.keys(sheetListeners.areaMap["A1:A4"].listeners).length, 1, "A1:A4(Column) listeners after set value tableName#All,Col1");
|
||
assert.strictEqual(sheetListeners && sheetListeners.areaMap && Object.keys(defNameListeners).length, 0, "DefNameListeners after set value tableName#All,Col1");
|
||
|
||
resCell = ws.getRange2("C10");
|
||
fragment[0].setFragmentText("=22");
|
||
wsView._saveCellValueAfterEdit(fillRange, fragment, flags, null, null);
|
||
assert.strictEqual(resCell.getValueWithFormat(), "22", "Value in C10 after tableName[[#All],[Column1]] delete");
|
||
assert.strictEqual(resCell.getValueForEdit(), "=22", "Formula in C10 after tableName[[#All],[Column1]] delete");
|
||
sheetListeners = dependencyFormulas.sheetListeners[wsID];
|
||
assert.strictEqual(sheetListeners.areaMap && Object.keys(sheetListeners.areaMap).length, 1, "AreaMap listeners after delete value tableName#All,Col1");
|
||
assert.strictEqual(sheetListeners.areaMap && sheetListeners.areaMap["A1:A4"], undefined, "A1:A4(Column) listeners after delete value tableName#All,Col1");
|
||
|
||
fragment[0].setFragmentText("="+tableName + "[[#All],[Column1]:[Column2]]");
|
||
wsView._saveCellValueAfterEdit(fillRange, fragment, flags, null, null);
|
||
assert.strictEqual(resCell.getValueWithFormat(), "Column1", "Value in C10 after tableName[[#All],[Column1]:[Column2]] calculate");
|
||
assert.strictEqual(resCell.getValueForEdit(), "="+tableName + "[[#All],[Column1]:[Column2]]", "Formula in C10 after tableName[[#All],[Column1]:[Column2]] calculate");
|
||
sheetListeners = dependencyFormulas.sheetListeners[wsID];
|
||
assert.strictEqual(sheetListeners.areaMap && Object.keys(sheetListeners.areaMap).length, 2, "AreaMap listeners after set value tableName#All,Col1:Col2");
|
||
assert.strictEqual(sheetListeners.areaMap && sheetListeners.areaMap["A1:B4"] !== undefined, true, "A1:B4(Columns) listeners after set value tableName#All,Col1:Col2");
|
||
assert.strictEqual(sheetListeners.areaMap && Object.keys(sheetListeners.areaMap["A1:B4"].listeners).length, 1, "A1:B4(Columns) listeners after set value tableName#All,Col1:Col2");
|
||
assert.strictEqual(sheetListeners && sheetListeners.areaMap && Object.keys(defNameListeners).length, 0, "DefNameListeners after set value tableName#All,Col1:Col2");
|
||
|
||
fragment[0].setFragmentText("=22");
|
||
wsView._saveCellValueAfterEdit(fillRange, fragment, flags, null, null);
|
||
assert.strictEqual(resCell.getValueWithFormat(), "22", "Value in C10 after tableName[[#All],[Column1]:[Column2]] delete");
|
||
assert.strictEqual(resCell.getValueForEdit(), "=22", "Formula in C10 after tableName[[#All],[Column1]:[Column2]] delete");
|
||
sheetListeners = dependencyFormulas.sheetListeners[wsID];
|
||
assert.strictEqual(sheetListeners.areaMap && sheetListeners.areaMap["A1:B4"], undefined, "A1:B4(Columns) listeners after delete value tableName#All,Col1");
|
||
|
||
flags.ctrlKey = false;
|
||
flags.shiftKey = false;
|
||
|
||
|
||
// remove tables
|
||
tables.length = 0;
|
||
|
||
});
|
||
|
||
QUnit.module("Sheet structure");
|
||
});
|
||
|
||
|