232 lines
8.3 KiB
JavaScript
232 lines
8.3 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 () {
|
|
};
|
|
Asc.spreadsheet_api.prototype._loadFonts = function (fonts, callback) {
|
|
callback();
|
|
};
|
|
AscCommonExcel.WorkbookView.prototype._calcMaxDigitWidth = function () {
|
|
};
|
|
AscCommonExcel.WorkbookView.prototype._init = function () {
|
|
};
|
|
AscCommonExcel.WorkbookView.prototype._onWSSelectionChanged = function () {
|
|
};
|
|
AscCommonExcel.WorkbookView.prototype.showWorksheet = function () {
|
|
};
|
|
AscCommonExcel.WorkbookView.prototype.restoreFocus = function () {
|
|
};
|
|
AscCommonExcel.WorkbookView.prototype.recalculateDrawingObjects = function () {
|
|
};
|
|
AscCommonExcel.WorksheetView.prototype._init = function () {
|
|
};
|
|
AscCommonExcel.WorksheetView.prototype._onUpdateFormatTable = function () {
|
|
};
|
|
AscCommonExcel.WorksheetView.prototype.setSelection = function () {
|
|
};
|
|
AscCommonExcel.WorksheetView.prototype.draw = function () {
|
|
};
|
|
AscCommonExcel.WorksheetView.prototype._prepareDrawingObjects = function () {
|
|
};
|
|
AscCommonExcel.WorksheetView.prototype._reinitializeScroll = function () {
|
|
};
|
|
AscCommonExcel.WorksheetView.prototype.getZoom = function () {
|
|
};
|
|
AscCommon.baseEditorsApi.prototype._onEndLoadSdk = function () {
|
|
};
|
|
Asc.ReadDefTableStyles = function(){};
|
|
|
|
|
|
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;
|
|
});
|
|
|
|
var ws = api.wbModel.aWorksheets[0];
|
|
|
|
var getRange = function (c1, r1, c2, r2) {
|
|
return new window["Asc"].Range(c1, r1, c2, r2);
|
|
};
|
|
|
|
QUnit.test("Test: \"changeTextCase\"", function (assert) {
|
|
|
|
let generateMultiText = function (arr) {
|
|
let _res = [];
|
|
for (let i = 0; i < arr.length; i++) {
|
|
let multiElem1 = new AscCommonExcel.CMultiTextElem();
|
|
multiElem1.text = arr[i].t;
|
|
multiElem1.format = arr[i].f;
|
|
_res.push(multiElem1);
|
|
}
|
|
return _res;
|
|
};
|
|
|
|
function checkUndoRedo(_before, _after, _desc) {
|
|
assert.strictEqual(ws.getRange2("A1").getValue(), _after, _desc + " _before_undo");
|
|
AscCommon.History.Undo();
|
|
assert.strictEqual(ws.getRange2("A1").getValue(), _before, _desc + "_undo");
|
|
AscCommon.History.Redo();
|
|
assert.strictEqual(ws.getRange2("A1").getValue(), _after, _desc + "_redo");
|
|
AscCommon.History.Undo();
|
|
assert.strictEqual(ws.getRange2("A1").getValue(), _before, _desc + "_lastUndo");
|
|
}
|
|
|
|
ws.selectionRange.ranges = [getRange(0, 0, 0, 0)];
|
|
|
|
let aMultiText = generateMultiText([{t: 'te'}, {t: 'st TES'}, {t: 'T'}, {t: ' t'}, {t: 'Es'}, {t: 't Te'}, {t: 'st\nt'},
|
|
{t: 'Est te'}, {t: 's'}, {t: 't Tee'}, {t: 'est '}, {t: 'tesT'}, {t: '\n', },
|
|
{t: 'TEST te', }, {t: 'st Test', }]);
|
|
|
|
|
|
let cellValue = new AscCommonExcel.CCellValue({multiText: aMultiText});
|
|
ws.getRange2("A1").setValueData(new AscCommonExcel.UndoRedoData_CellValueData(null, cellValue));
|
|
|
|
let trueResult = "test TEST tEst Test\ntEst test Teeest tesT\nTEST test Test";
|
|
assert.strictEqual(ws.getRange2("A1").getValue(), trueResult);
|
|
|
|
//LowerCase
|
|
api.asc_ChangeTextCase(Asc.c_oAscChangeTextCaseType.LowerCase);
|
|
let result = "test test test test\n" +
|
|
"test test teeest test\n" +
|
|
"test test test";
|
|
checkUndoRedo(trueResult, result, "LowerCase");
|
|
|
|
//UpperCase
|
|
api.asc_ChangeTextCase(Asc.c_oAscChangeTextCaseType.UpperCase);
|
|
result = "TEST TEST TEST TEST\n" +
|
|
"TEST TEST TEEEST TEST\n" +
|
|
"TEST TEST TEST";
|
|
checkUndoRedo(trueResult, result, "UpperCase");
|
|
|
|
//ToggleCase
|
|
api.asc_ChangeTextCase(Asc.c_oAscChangeTextCaseType.ToggleCase);
|
|
result = "TEST test TeST tEST\n" +
|
|
"TeST TEST tEEEST TESt\n" +
|
|
"test TEST tEST";
|
|
checkUndoRedo(trueResult, result, "ToggleCase");
|
|
|
|
//CapitalizeWords
|
|
api.asc_ChangeTextCase(Asc.c_oAscChangeTextCaseType.CapitalizeWords);
|
|
result = "Test TEST Test Test\n" +
|
|
"Test Test Teeest Test\n" +
|
|
"TEST Test Test";
|
|
checkUndoRedo(trueResult, result, "CapitalizeWords");
|
|
|
|
//SentenceCase
|
|
api.asc_ChangeTextCase(Asc.c_oAscChangeTextCaseType.SentenceCase);
|
|
result = "Test TEST test Test\n" +
|
|
"Test test Teeest test\n" +
|
|
"TEST test Test";
|
|
checkUndoRedo(trueResult, result, "SentenceCase");
|
|
|
|
aMultiText = generateMultiText([{t: 'te'}, {t: 'st TE'}, {t: 'ST tEst T'}, {t: 'est\ntE'}, {t: 'st. test TeE'}, {t: 'Est. te'}, {t: 'ST\nTEST te'},
|
|
{t: 'st Test teEEst\ntes'}, {t: 't.test\ntest,test'}, {t: ';test,tEst\\tes'}, {t: 't\nteSt T'}, {t: 'est Test TESt TES'}, {t: 'T tesT'}]);
|
|
|
|
|
|
cellValue = new AscCommonExcel.CCellValue({multiText: aMultiText});
|
|
ws.getRange2("A1").setValueData(new AscCommonExcel.UndoRedoData_CellValueData(null, cellValue));
|
|
|
|
trueResult = "test TEST tEst Test\ntEst. test TeEEst. teST\nTEST test Test teEEst\ntest.test\ntest,test;test,tEst\\test\nteSt Test Test TESt TEST tesT";
|
|
|
|
assert.strictEqual(ws.getRange2("A1").getValue(), trueResult);
|
|
|
|
//LowerCase
|
|
api.asc_ChangeTextCase(Asc.c_oAscChangeTextCaseType.LowerCase);
|
|
result = "test test test test\n" +
|
|
"test. test teeest. test\n" +
|
|
"test test test teeest\n" +
|
|
"test.test\n" +
|
|
"test,test;test,test\\test\n" +
|
|
"test test test test test test";
|
|
checkUndoRedo(trueResult, result, "LowerCase2");
|
|
|
|
//UpperCase
|
|
api.asc_ChangeTextCase(Asc.c_oAscChangeTextCaseType.UpperCase);
|
|
result = "TEST TEST TEST TEST\n" +
|
|
"TEST. TEST TEEEST. TEST\n" +
|
|
"TEST TEST TEST TEEEST\n" +
|
|
"TEST.TEST\n" +
|
|
"TEST,TEST;TEST,TEST\\TEST\n" +
|
|
"TEST TEST TEST TEST TEST TEST";
|
|
checkUndoRedo(trueResult, result, "UpperCase2");
|
|
|
|
//ToggleCase
|
|
api.asc_ChangeTextCase(Asc.c_oAscChangeTextCaseType.ToggleCase);
|
|
result = "TEST test TeST tEST\n" +
|
|
"TeST. TEST tEeeST. TEst\n" +
|
|
"test TEST tEST TEeeST\n" +
|
|
"TEST.TEST\n" +
|
|
"TEST,TEST;TEST,TeST\\TEST\n" +
|
|
"TEsT tEST tEST tesT test TESt";
|
|
checkUndoRedo(trueResult, result, "ToggleCase2");
|
|
|
|
//CapitalizeWords
|
|
api.asc_ChangeTextCase(Asc.c_oAscChangeTextCaseType.CapitalizeWords);
|
|
result = "Test TEST Test Test\n" +
|
|
"Test. Test Teeest. Test\n" +
|
|
"TEST Test Test Teeest\n" +
|
|
"Test.Test\n" +
|
|
"Test,Test;Test,Test\\Test\n" +
|
|
"Test Test Test Test TEST Test";
|
|
checkUndoRedo(trueResult, result, "CapitalizeWords2");
|
|
|
|
//SentenceCase
|
|
api.asc_ChangeTextCase(Asc.c_oAscChangeTextCaseType.SentenceCase);
|
|
result = "Test TEST test Test\n" +
|
|
"Test. Test teeest. Test\n" +
|
|
"TEST test Test teeest\n" +
|
|
"Test.Test\n" + //.T -> .t
|
|
"Test,test;test,test\\test\n" +
|
|
"Test Test Test test TEST test";
|
|
checkUndoRedo(trueResult, result, "SentenceCase2");
|
|
|
|
});
|
|
|
|
QUnit.module("CopyPaste");
|
|
});
|