Files
Yajbir Singh f1b860b25c
check / markdownlint (push) Has been cancelled
check / spellchecker (push) Has been cancelled
updated
2025-12-11 19:03:17 +05:30

639 lines
27 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 () {
let logicDocument = AscTest.CreateLogicDocument();
logicDocument.RemoveFromContent(0, logicDocument.GetElementsCount(), false);
let formsManager = logicDocument.GetFormsManager();
function AddFormPr(contentControl)
{
contentControl.SetFormPr(new AscWord.CSdtFormPr());
return contentControl;
}
function addTextForm(key, value)
{
let form = logicDocument.AddContentControlTextForm();
form.SetFormPr(new AscWord.CSdtFormPr(key));
if (value)
form.SetInnerText(value);
logicDocument.MoveCursorToEndPos();
return form;
}
function addRadioButton(groupKey, choiceName)
{
let form = logicDocument.AddContentControlCheckBox();
form.SetFormPr(new AscWord.CSdtFormPr());
let checkBoxPr = form.GetCheckBoxPr().Copy();
checkBoxPr.SetChoiceName(choiceName);
checkBoxPr.SetGroupKey(groupKey);
form.SetFormKey(choiceName);
form.SetCheckBoxPr(checkBoxPr);
logicDocument.MoveCursorToEndPos();
return form;
}
QUnit.module("Check forms");
QUnit.test("Check text form formats", function (assert)
{
let format = new AscWord.CTextFormFormat();
assert.strictEqual(format.Check("qwe123"), true, "Check no format validation");
format.SetSymbols("1234567890");
assert.strictEqual(format.Check("qwe123"), false, "Add symbols and check 'qwe123'");
assert.strictEqual(format.Check("555123"), true, "Add symbols and check '555123'");
assert.strictEqual(format.Check("qwe123".codePointsArray()), false, "Add symbols and check 'qwe123' as an array");
assert.strictEqual(format.Check("555123".codePointsArray()), true, "Add symbols and check '555123' as an array");
format.SetSymbols();
format.SetDigit();
assert.strictEqual(format.Check("qwe123"), false, "Digit: check 'qwe123'");
assert.strictEqual(format.Check("555123"), true, "Digit: check '555123'");
format.SetSymbols("153");
format.SetDigit();
assert.strictEqual(format.Check("qwe123"), false, "Digit and symbols: check 'qwe123'");
assert.strictEqual(format.Check("555123"), false, "Digit and symbols: check '555123'");
assert.strictEqual(format.Check("513513"), true, "Digit and symbols: check '513513'");
format.SetSymbols();
format.SetLetter();
assert.strictEqual(format.Check("qwe123"), false, "Letter: check 'qwe123'");
assert.strictEqual(format.Check("555123"), false, "Letter: check '555123'");
assert.strictEqual(format.Check("АБВГДЕabcdef"), true, "Letter: check 'АБВГДЕabcdef'");
format.SetSymbols("абвгдеёжзийклмнопрстуфхцчшщъыьэюя");
assert.strictEqual(format.GetSymbols(true), "абвгдеёжзийклмнопрстуфхцчшщъыьэюя", "Check symbols");
format.SetLetter();
assert.strictEqual(format.Check("АБВГДЕabcdef"), false, "Letter and symbols: check 'АБВГДЕabcdef'");
assert.strictEqual(format.Check("привет"), true, "Letter: check 'привет'");
assert.strictEqual(format.Check("hello"), false, "Letter: check 'hello'");
format.SetMask("(999)-99-9999");
format.SetSymbols();
assert.strictEqual(format.Check("123-12-1234"), false, "Mask (999)-99-9999: check '123-12-1234'");
assert.strictEqual(format.Check("(123)"), true, "Mask (999)-99-9999: check '(123)'");
assert.strictEqual(format.Check("(123)abc"), false, "Mask (999)-99-9999: check '(123)abc'");
assert.strictEqual(format.Check("(123)-12-abc5"), false, "Mask (999)-99-9999: check '(123)-12-abc5'");
assert.strictEqual(format.Check("(123)-12-5555"), true, "Mask (999)-99-9999: check '(123)-12-5555'");
format.SetMask("(9\\99)-99-9999");
assert.strictEqual(format.Check("(1"), true, "Mask (9\\99)-99-9999: check '(1'");
assert.strictEqual(format.Check("(123)-12-5555"), false, "Mask (9\\99)-99-9999: check '(123)-12-5555'");
assert.strictEqual(format.Check("(193)-12-5555"), true, "Mask (9\\99)-99-9999: check '(193)-12-5555'");
format.SetMask("\\aabcX");
assert.strictEqual(format.Check("aabcd"), true, "Mask \\aabcX: check 'aabcd'");
assert.strictEqual(format.Check("qqbcd"), false, "Mask \\aabcX: check 'qqbcd'");
assert.strictEqual(format.Check("aqbc1"), true, "Mask \\aabcX: check 'aqbc1'");
assert.strictEqual(format.Check("aqbc123"), false, "Mask \\aabcX: check 'aqbc123'");
format.SetRegExp("^[A-Fa-f0-9]+$");
assert.strictEqual(format.Check("12FF"), true, "RegExp ^[A-Fa-f0-9]+$: check '12FF'");
assert.strictEqual(format.Check("Test"), false, "RegExp ^[A-Fa-f0-9]+$: check 'Test'");
assert.strictEqual(format.Check("FE19FF"), true, "RegExp ^[A-Fa-f0-9]+$: check 'FE19FF'");
let writer = AscTest.GetBinaryWriter();
format.WriteToBinary(writer);
let reader = AscTest.GetBinaryReader(writer);
let format2 = new AscWord.CTextFormFormat();
format2.ReadFromBinary(reader);
assert.deepEqual(format, format2, "Check write/read");
});
QUnit.test("Check GetAllForms function", function (assert)
{
AscTest.ClearDocument();
let p1 = new AscWord.Paragraph();
let p2 = new AscWord.Paragraph();
logicDocument.AddToContent(0, p1);
logicDocument.AddToContent(1, p2);
let r1 = new AscWord.CRun();
p1.AddToContent(0, r1);
r1.AddText("Hello Word!");
let r2 = new AscWord.CRun();
p2.AddToContent(0, r2);
r2.AddText("Абракадабра");
let forms = formsManager.GetAllForms();
assert.strictEqual(forms.length, 0, "Check forms count (must be zero)");
logicDocument.MoveCursorToStartPos();
AddFormPr(logicDocument.AddContentControlCheckBox());
logicDocument.MoveCursorToEndPos()
forms = formsManager.GetAllForms();
assert.strictEqual(forms.length, 1, "Check forms count after adding checkbox form");
AddFormPr(logicDocument.AddContentControlComboBox());
forms = formsManager.GetAllForms();
logicDocument.MoveCursorToEndPos()
assert.strictEqual(forms.length, 2, "Check forms count after adding combobox form");
logicDocument.AddContentControlComboBox();
logicDocument.MoveCursorToEndPos()
forms = formsManager.GetAllForms();
assert.strictEqual(forms.length, 2, "Check forms count after adding combobox content control");
});
QUnit.test("Check remove/delete in editing mode", function(assert)
{
AscTest.ClearDocument();
let p = AscTest.CreateParagraph();
logicDocument.AddToContent(0, p);
logicDocument.MoveCursorToEndPos();
AscTest.SetEditingMode();
let form = AddFormPr(logicDocument.AddContentControlTextForm());
assert.strictEqual(form.IsPlaceHolder() && form.IsUseInDocument(), true, "Check if text form is filled with placeholder and added to document");
AscTest.MoveCursorToParagraph(p, false);
AscTest.PressKey(AscTest.Key.backspace);
assert.strictEqual(form.IsPlaceHolder() && form.IsUseInDocument() && form.IsThisElementCurrent(), true, "Move cursor to the right of the form and press backspace");
AscTest.PressKey(AscTest.Key.backspace);
assert.strictEqual(form.IsUseInDocument(), false, "Click backspace for the second time, form must be removed");
form = AddFormPr(logicDocument.AddContentControlTextForm());
assert.strictEqual(form.IsPlaceHolder() && form.IsUseInDocument(), true, "Check if text form is filled with placeholder and added to document");
AscTest.MoveCursorToParagraph(p, true);
AscTest.PressKey(AscTest.Key.delete);
assert.strictEqual(form.IsPlaceHolder() && form.IsUseInDocument() && form.IsThisElementCurrent(), true, "Move cursor to the left of the form and press delete button");
AscTest.PressKey(AscTest.Key.delete);
assert.strictEqual(form.IsUseInDocument(), false, "Click delete button for the second time, form must be removed");
form = AddFormPr(logicDocument.AddContentControlTextForm());
AscTest.AddTextToInlineSdt(form, "Inner Text");
assert.strictEqual(!form.IsPlaceHolder() && form.IsUseInDocument(), true, "Check if text form is filled with text and added to document");
assert.strictEqual(form.GetInnerText(), "Inner Text", "Check inner text");
AscTest.MoveCursorToParagraph(p, false);
AscTest.PressKey(AscTest.Key.backspace);
assert.strictEqual(form.IsUseInDocument() && form.IsThisElementCurrent(), true, "Move cursor to the right of the form and press backspace");
AscTest.PressKey(AscTest.Key.backspace);
assert.strictEqual(form.IsUseInDocument(), false, "Click backspace for the second time, form must be removed");
});
QUnit.test("Check format in text form", function (assert)
{
AscTest.ClearDocument();
let p = new AscWord.Paragraph();
logicDocument.AddToContent(0, p);
logicDocument.MoveCursorToEndPos();
let textForm = logicDocument.AddContentControlTextForm();
AddFormPr(textForm);
let textFormPr = textForm.GetTextFormPr();
textFormPr.SetDigitFormat();
AscTest.SetFillingFormMode();
textForm.SetThisElementCurrent();
textForm.MoveCursorToStartPos();
assert.strictEqual(textForm.IsPlaceHolder(), true, "Check if text form is filled with placeholder");
assert.strictEqual(textForm.IsThisElementCurrent(), true, "Check if cursor is placed in the text form");
AscTest.PressKey(AscTest.Key.A);
AscTest.PressKey(AscTest.Key.B);
AscTest.PressKey(AscTest.Key._1);
AscTest.PressKey(AscTest.Key._2);
AscTest.PressKey(AscTest.Key.C);
AscTest.PressKey(AscTest.Key._3);
assert.strictEqual(textForm.GetInnerText(), "123", "Check inner text after entering 'AB12C3'");
textFormPr.SetLetterFormat();
AscTest.PressKey(AscTest.Key.A);
AscTest.PressKey(AscTest.Key._1);
assert.strictEqual(textForm.GetInnerText(), "123", "Change type to Letter and attempt to enter 'A1'");
AscTest.PressKey(AscTest.Key.backspace);
AscTest.PressKey(AscTest.Key.backspace);
AscTest.PressKey(AscTest.Key.backspace);
assert.strictEqual(textForm.IsPlaceHolder(), true, "Check if text form is filled with placeholder");
AscTest.PressKey(AscTest.Key.A);
AscTest.PressKey(AscTest.Key.B);
AscTest.PressKey(AscTest.Key._1);
AscTest.PressKey(AscTest.Key._2);
AscTest.PressKey(AscTest.Key.C);
AscTest.PressKey(AscTest.Key._3);
assert.strictEqual(textForm.GetInnerText(), "ABC", "Check inner text after entering 'AB12C3'");
p = new AscWord.Paragraph();
logicDocument.AddToContent(1, p);
p.SetThisElementCurrent();
p.MoveCursorToStartPos();
let textForm2 = logicDocument.AddContentControlTextForm();
AddFormPr(textForm2);
let textForm2Pr = textForm2.GetTextFormPr();
assert.strictEqual(textForm2Pr.GetMaxCharacters(), -1, "Check max characters with no mask");
textForm2Pr.SetMaskFormat("999-aaa");
assert.strictEqual(textForm2Pr.GetMaxCharacters(), 7, "Check max characters with mask");
textForm2.SetThisElementCurrent();
textForm2.MoveCursorToStartPos();
assert.strictEqual(textForm2.IsPlaceHolder(), true, "Check if text form is filled with placeholder");
assert.strictEqual(textForm2.IsThisElementCurrent(), true, "Check if cursor is placed in the text form");
AscTest.PressKey(AscTest.Key._1);
AscTest.PressKey(AscTest.Key._1);
AscTest.PressKey(AscTest.Key._2);
AscTest.PressKey(AscTest.Key.minus);
AscTest.PressKey(AscTest.Key.A);
textForm.SetThisElementCurrent();
textForm.MoveCursorToStartPos();
assert.strictEqual(textForm2.GetInnerText(), "112-A", "Check inner text in the text form 2");
assert.strictEqual(textForm2Pr.CheckFormat("112-A"), true, "Check format of the text in text form2");
textForm2.SetThisElementCurrent();
textForm2.MoveCursorToEndPos();
AscTest.PressKey(AscTest.Key.B);
AscTest.PressKey(AscTest.Key._1);
assert.strictEqual(textForm2.GetInnerText(), "112-AB1", "Check inner text in the text form 2 after adding text");
textForm.SetThisElementCurrent();
textForm.MoveCursorToStartPos();
assert.strictEqual(textForm2.GetInnerText(), "112-A", "Check inner text in the text form 2 after moving cursor outside form");
textForm2.SetThisElementCurrent();
textForm2.MoveCursorToEndPos();
AscTest.PressKey(AscTest.Key.B);
AscTest.PressKey(AscTest.Key.B);
textForm.SetThisElementCurrent();
textForm2.SetThisElementCurrent();
textForm2.MoveCursorToEndPos();
AscTest.PressKey(AscTest.Key.C);
textForm.SetThisElementCurrent();
assert.strictEqual(textForm2.GetInnerText(), "112-ABB", "Check inner text in the text form 2. It must be '112-ABB'");
AscTest.SetEditingMode();
});
QUnit.test("Check filling out the required forms", function (assert)
{
AscTest.SetEditingMode();
AscTest.ClearDocument();
let p1 = new AscWord.Paragraph();
let p2 = new AscWord.Paragraph();
let p3 = new AscWord.Paragraph();
logicDocument.AddToContent(0, p1);
logicDocument.AddToContent(1, p2);
logicDocument.AddToContent(1, p3);
assert.strictEqual(formsManager.GetAllForms().length, 0, "Check forms count (must be zero)");
p1.SetThisElementCurrent();
p1.MoveCursorToStartPos();
AddFormPr(logicDocument.AddContentControlCheckBox());
p1.MoveCursorToEndPos();
AddFormPr(logicDocument.AddContentControlComboBox());
logicDocument.AddContentControlComboBox();
p2.SetThisElementCurrent();
p2.MoveCursorToStartPos();
let checkBox = logicDocument.AddContentControlCheckBox();
AddFormPr(checkBox);
p2.MoveCursorToEndPos();
let textForm = logicDocument.AddContentControlTextForm();
AddFormPr(textForm);
p3.SetThisElementCurrent();
p3.MoveCursorToEndPos();
let textForm2 = logicDocument.AddContentControlTextForm();
AddFormPr(textForm2);
assert.strictEqual(formsManager.GetAllForms().length, 5, "Check forms count");
AscTest.SetFillingFormMode();
assert.strictEqual(formsManager.IsAllRequiredFormsFilled(), true, "No format and required forms. Check is form filled");
checkBox.GetFormPr().SetRequired(true);
assert.strictEqual(formsManager.IsAllRequiredFormsFilled(), false, "Set checkbox required and check");
checkBox.SetCheckBoxChecked(true);
assert.strictEqual(formsManager.IsAllRequiredFormsFilled(), true, "Fill checkbox and check");
textForm.GetFormPr().SetRequired(true);
assert.strictEqual(formsManager.IsAllRequiredFormsFilled(), false, "Set text form required and check");
textForm.SetThisElementCurrent();
textForm.MoveCursorToEndPos();
AscTest.PressKey(AscTest.Key.A);
AscTest.PressKey(AscTest.Key.B);
assert.strictEqual(textForm.GetInnerText(), "AB", "Check entered text to a text form");
assert.strictEqual(formsManager.IsAllRequiredFormsFilled(), true, "Fill text form and check");
// Поля заполненные неправильно по формату мы тоже учитываем в функции IsAllRequiredFormsFilled
// Возможно стоит сделать две отдельные проверки и одну общую: что форма заполнена, в которой обе проверки будут запускаться
let textForm2Pr = textForm2.GetTextFormPr();
textForm2Pr.SetMaskFormat("999-aaa");
assert.strictEqual(formsManager.IsAllRequiredFormsFilled(), true, "Set mask to text form2 and check");
textForm2.SetThisElementCurrent();
textForm2.MoveCursorToEndPos();
AscTest.PressKey(AscTest.Key._1);
AscTest.PressKey(AscTest.Key._2);
AscTest.PressKey(AscTest.Key._3);
assert.strictEqual(textForm2.GetInnerText(), "123", "Check internal text");
assert.strictEqual(formsManager.IsAllRequiredFormsFilled(), false, "Fill the mask incorrectly (too short) and check");
AscTest.PressKey(AscTest.Key.minus);
AscTest.PressKey(AscTest.Key.A);
AscTest.PressKey(AscTest.Key.B);
AscTest.PressKey(AscTest.Key.C);
assert.strictEqual(textForm2.GetInnerText(), "123-ABC", "Check internal text");
assert.strictEqual(formsManager.IsAllRequiredFormsFilled(), true, "Fill the mask and check");
AscTest.PressKey(AscTest.Key.backspace);
AscTest.PressKey(AscTest.Key.backspace);
AscTest.PressKey(AscTest.Key._1);
AscTest.PressKey(AscTest.Key._2);
assert.strictEqual(textForm2.GetInnerText(), "123-A12", "Check internal text");
assert.strictEqual(formsManager.IsAllRequiredFormsFilled(), false, "Fill the mask incorrectly and check");
AscTest.PressKey(AscTest.Key.backspace);
AscTest.PressKey(AscTest.Key.backspace);
AscTest.PressKey(AscTest.Key.A);
AscTest.PressKey(AscTest.Key.B);
AscTest.PressKey(AscTest.Key.C);
assert.strictEqual(textForm2.GetInnerText(), "123-AAB", "Check internal text");
assert.strictEqual(formsManager.IsAllRequiredFormsFilled(), true, "Attempt to fill the mask incorrectly (too long) and check");
textForm2Pr.SetRegExpFormat("https?:\\/\\/(www\\.)?[-a-zA-Z0-9@:%._\\+~#=]{1,256}\\.[a-zA-Z0-9()]{1,6}\\b([-a-zA-Z0-9()@:%_\\+.~#?&//=]*)");
assert.strictEqual(formsManager.IsAllRequiredFormsFilled(), false, "Change format to hyperlink regexp an check ");
textForm2.ClearContentControlExt();
assert.strictEqual(formsManager.IsAllRequiredFormsFilled(), true, "Clear text form and check ");
AscTest.AddTextToInlineSdt(textForm2, "https://www.onlyoffice.com/");
assert.strictEqual(textForm2Pr.CheckFormat(textForm2.GetInnerText()), true, "Check format");
assert.strictEqual(formsManager.IsAllRequiredFormsFilled(), true, "Fill text form with correct hyperlink and check ");
});
QUnit.test("Check correction of text mask", function (assert)
{
let mask = new AscWord.CTextFormMask();
function CheckFormMask(strMask, strInputText, strResult)
{
mask.Set(strMask);
assert.strictEqual(
mask.Correct(strInputText),
strResult,
"Test mask \'" + strMask + "\' with text \'"+ strInputText+"\'; must be \'" + strResult + "\'"
);
}
CheckFormMask("", "1234", "1234");
CheckFormMask("X", "1234", "1");
CheckFormMask("a", "1234", "1234");
CheckFormMask("a", "1bcd", "1bcd");
CheckFormMask("a9", "bc", "bc");
CheckFormMask("a\\9", "bc", "b9");
CheckFormMask("\\a9", "u", "u");
CheckFormMask("\\a9", "9", "a9");
CheckFormMask("\\a9", "a", "a");
CheckFormMask("999-999", "123", "123-");
CheckFormMask("999-999", "123-", "123-");
CheckFormMask("999-999", "123456", "123-456");
CheckFormMask("(999) 999-9999", "", "");
CheckFormMask("(999) 999-9999", "9", "(9");
CheckFormMask("(999) 999-9999", "9(99", "9(99");
CheckFormMask("(999) 999-9999", "999", "(999) ");
CheckFormMask("(999) 999-9999", "(999", "(999) ");
CheckFormMask("(999) 999-9999", "(999)", "(999) ");
CheckFormMask("(999) 999-9999", "(999)123", "(999) 123-");
CheckFormMask("(999) 999-9999", "999123", "(999) 123-");
CheckFormMask("(999) 999-9999", "9991231122", "(999) 123-1122");
CheckFormMask("(999) 999-9999", "(999)1231122", "(999) 123-1122");
CheckFormMask("(999) 999-9999", "(999)123-1122", "(999) 123-1122");
CheckFormMask("(999) 999-9999", "333)123-1122", "(333) 123-1122");
CheckFormMask("(999) 999-9999", "9)-", "9)-");
CheckFormMask("(999) 999-9999", "9)bcs", "9)bcs" );
CheckFormMask("+7 (999)-999-99-99", "9991112211", "+7 (999)-111-22-11");
CheckFormMask("+7 (999)-999-99-99", "999", "+7 (999)-");
CheckFormMask("+7 (999)-999-99-99", "999a", "999a");
CheckFormMask("+7 (999)-999-99-99", "(999a", "(999a");
CheckFormMask("+7 (999)-999-99-99", "+(999a1", "+(999a1");
CheckFormMask("XXXXX@aaaa", "index", "index@");
CheckFormMask("XXXXX@aaaa", "index1234", "index1234");
CheckFormMask("XXXXX@aaaa", "indexmail", "index@mail");
CheckFormMask("XXXXX@aaaa.ru", "indexmail", "index@mail.ru");
CheckFormMask("99.99.99.9.9", "12345678", "12.34.56.7.8");
CheckFormMask("99.99.99.9.9", "12", "12.");
CheckFormMask("99.99.99.9.9", "1232b", "1232b");
CheckFormMask("99.99.99.9.9", "b", "b");
CheckFormMask("99.99.99.9.9", "1234567812345678", "12.34.56.7.8");
CheckFormMask("OO-\\x", "", "");
CheckFormMask("OO-\\x", "1", "1");
CheckFormMask("OO-\\x", "12", "12-x");
CheckFormMask("OO-\\x", "12-", "12-x");
CheckFormMask("OO-\\x", "12-x", "12-x");
CheckFormMask("OOO-O9O\\Oxxx:uuu-y", "", "");
CheckFormMask("OOO-O9O\\Oxxx:uuu-y", "a", "a");
CheckFormMask("OOO-O9O\\Oxxx:uuu-y", "ad", "ad");
CheckFormMask("OOO-O9O\\Oxxx:uuu-y", "ad9", "ad9-");
CheckFormMask("OOO-O9O\\Oxxx:uuu-y", "ad94", "ad9-4");
CheckFormMask("OOO-O9O\\Oxxx:uuu-y", "ad949", "ad9-49");
CheckFormMask("OOO-O9O\\Oxxx:uuu-y", "ad949f", "ad9-49fOxxx:uuu-y");
CheckFormMask("OOO-O9O\\Oxxx:uuu-y", "ad949fO", "ad9-49fOxxx:uuu-y");
CheckFormMask("OOO-O9O\\Oxxx:uuu-y", "ad949fOxxx:uuu-y", "ad9-49fOxxx:uuu-y");
CheckFormMask("OOO-O9O\\Oxxx:uuu-y", "ad949fOxxx:uuu-fke3", "ad9-49fOxxx:uuu-y");
CheckFormMask("OOO-O9O\\Obbb:uuu-y-999", "", "");
CheckFormMask("OOO-O9O\\Obbb:uuu-y-999", "a", "a");
CheckFormMask("OOO-O9O\\Obbb:uuu-y-999", "ad", "ad");
CheckFormMask("OOO-O9O\\Obbb:uuu-y-999", "ad9", "ad9-");
CheckFormMask("OOO-O9O\\Obbb:uuu-y-999", "ad94", "ad9-4");
CheckFormMask("OOO-O9O\\Obbb:uuu-y-999", "ad94b", "ad94b");
CheckFormMask("OOO-O9O\\Obbb:uuu-y-999", "ad949", "ad9-49");
CheckFormMask("OOO-O9O\\Obbb:uuu-y-999", "ad949b", "ad9-49bObbb:uuu-y-");
CheckFormMask("OOO-O9O\\Obbb:uuu-y-999", "ad949b1", "ad9-49bObbb:uuu-y-1");
CheckFormMask("OOO-O9O\\Obbb:uuu-y-999", "ad949b1O", "ad949b1O");
CheckFormMask("OOO-O9O\\Obbb:uuu-y-999", "ad949b123", "ad9-49bObbb:uuu-y-123");
CheckFormMask("OOO-O9O\\Obbb:uuu-y-999", "ad949fO678", "ad9-49fObbb:uuu-y-678");
CheckFormMask("9-\\a-9-b-9-c-9-d", "", "");
CheckFormMask("9-\\a-9-b-9-c-9-d", "1", "1-a-");
CheckFormMask("9-\\a-9-b-9-c-9-d", "12", "1-a-2-b-");
CheckFormMask("9-\\a-9-b-9-c-9-d", "12bsx", "12bsx");
CheckFormMask("9-\\a-9-b-9-c-9-d", "123", "1-a-2-b-3-c-");
CheckFormMask("9-\\a-9-b-9-c-9-d", "1234", "1-a-2-b-3-c-4-d");
CheckFormMask("9-\\a-9-b-9-c-9-d", "1234bc", "1-a-2-b-3-c-4-d");
CheckFormMask("order №OOOOO-99.99.99-aa-9999", "", "");
CheckFormMask("order №OOOOO-99.99.99-aa-9999", "a", "order №a");
CheckFormMask("order №OOOOO-99.99.99-aa-9999", "ab", "order №ab");
CheckFormMask("order №OOOOO-99.99.99-aa-9999", "ab54d", "order №ab54d-");
CheckFormMask("order №OOOOO-99.99.99-aa-9999", "ab54dab", "ab54dab");
CheckFormMask("order №OOOOO-99.99.99-aa-9999", "ab54d310822", "order №ab54d-31.08.22-");
CheckFormMask("order №OOOOO-99.99.99-aa-9999", "ab54d31.08.22", "order №ab54d-31.08.22-");
CheckFormMask("order №OOOOO-99.99.99-aa-9999", "ab54d-31.08.22", "order №ab54d-31.08.22-");
CheckFormMask("order №OOOOO-99.99.99-aa-9999", "ab54d-31.08.22uk", "order №ab54d-31.08.22-uk-");
CheckFormMask("order №OOOOO-99.99.99-aa-9999", "ab54d-31.08.22ukbcsd", "ab54d-31.08.22ukbcsd");
CheckFormMask("order №OOOOO-99.99.99-aa-9999", "ab54d310822uk1234", "order №ab54d-31.08.22-uk-1234");
CheckFormMask("order №OOOOO-99.99.99-aa-9999", "orderab54d310822-uk-1234", "order №ab54d-31.08.22-uk-1234");
CheckFormMask("order №OOOOO-99.99.99-aa-9999", "order №ab54d310822-uk-1234", "order №ab54d-31.08.22-uk-1234");
CheckFormMask("order №OOOOO-99.99.99-aa-9999", "order №ab54d-31.08.22-uk-1234", "order №ab54d-31.08.22-uk-1234");
CheckFormMask("order №OOOOO-99.99.99-aa-9999", "or", "order №");
CheckFormMask(
"OOOO:OOOO:OOOO:OOOO:OOOO:OOOO:OOOO:OOOO",
"2001",
"2001:",
);
CheckFormMask(
"OOOO:OOOO:OOOO:OOOO:OOOO:OOOO:OOOO:OOOO",
"2001:",
"2001:",
);
CheckFormMask(
"OOOO:OOOO:OOOO:OOOO:OOOO:OOOO:OOOO:OOOO",
"20010db8",
"2001:0db8:",
);
CheckFormMask(
"OOOO:OOOO:OOOO:OOOO:OOOO:OOOO:OOOO:OOOO",
"20010db885a3000000008a2e03707334",
"2001:0db8:85a3:0000:0000:8a2e:0370:7334",
);
})
QUnit.test("Check GetAllFormsData/SetAllFormsData", function (assert)
{
AscTest.ClearDocument();
let p = AscTest.CreateParagraph();
logicDocument.AddToContent(0, p);
logicDocument.MoveCursorToEndPos();
AscTest.SetEditingMode();
let textForm1 = addTextForm("TextForm1", "123");
let textForm1_1 = addTextForm("TextForm1", "qqq");
let textForm2 = addTextForm("TextForm2", "222");
let textForm3 = addTextForm("TextForm3", "333");
let radio1_1 = addRadioButton("Group1", "Choice1");
let radio1_2 = addRadioButton("Group1", "123");
let radio1_3 = addRadioButton("Group1", "Last");
let radio2_1 = addRadioButton("Group2", "Choice1");
let radio2_2 = addRadioButton("Group2", "Choice2");
assert.deepEqual(formsManager.GetAllFormsData(), [
{"key" : "TextForm1", "value" : "123", "tag" : "", "type" : "text", "role" : "", "roleColor" : undefined},
{"key" : "TextForm2", "value" : "222", "tag" : "", "type" : "text", "role" : "", "roleColor" : undefined},
{"key" : "TextForm3", "value" : "333", "tag" : "", "type" : "text", "role" : "", "roleColor" : undefined},
{"key" : "Group1", "value" : "", "tag" : "", "type" : "radio", "role" : "", "roleColor" : undefined},
{"key" : "Group2", "value" : "", "tag" : "", "type" : "radio", "role" : "", "roleColor" : undefined}
], "Add text forms and check GetAllFormsData");
AscTest.SetFillingFormMode();
formsManager.SetAllFormsData([
{"key" : "TextForm1", "value" : "text1"},
{"key" : "TextForm2", "value" : "another text", "type" : "text"},
{"key" : "Group1", "value" : "Last"},
{"key" : "Group2", "value" : "Choice2"}
]);
assert.strictEqual(textForm1.GetInnerText(), "text1", "Check form1");
assert.strictEqual(textForm1_1.GetInnerText(), "text1", "Check form1_1");
assert.strictEqual(textForm2.GetInnerText(), "another text", "Check form2");
assert.strictEqual(textForm3.GetInnerText(), "333", "Check form2");
assert.strictEqual(radio1_1.IsCheckBoxChecked(), false, "Check radio button 1. Group1");
assert.strictEqual(radio1_2.IsCheckBoxChecked(), false, "Check radio button 2. Group1");
assert.strictEqual(radio1_3.IsCheckBoxChecked(), true, "Check radio button 3. Group1");
assert.strictEqual(radio2_1.IsCheckBoxChecked(), false, "Check radio button 1. Group2");
assert.strictEqual(radio2_2.IsCheckBoxChecked(), true, "Check radio button 2. Group2");
assert.deepEqual(formsManager.GetAllFormsData(), [
{"key" : "TextForm1", "value" : "text1", "tag" : "", "type" : "text", "role" : "", "roleColor" : undefined},
{"key" : "TextForm2", "value" : "another text", "tag" : "", "type" : "text", "role" : "", "roleColor" : undefined},
{"key" : "TextForm3", "value" : "333", "tag" : "", "type" : "text", "role" : "", "roleColor" : undefined},
{"key" : "Group1", "value" : "Last", "tag" : "", "type" : "radio", "role" : "", "roleColor" : undefined},
{"key" : "Group2", "value" : "Choice2", "tag" : "", "type" : "radio", "role" : "", "roleColor" : undefined}
], "Add text forms and check GetAllFormsData");
});
});