1
0
mirror of https://github.com/bia-technologies/yaxunit.git synced 2025-03-20 20:55:11 +02:00
Случайный идентификатор
This commit is contained in:
alkoleft 2023-08-30 00:59:03 +03:00
parent 06f3a93bef
commit e1671aee64
5 changed files with 136 additions and 30 deletions

View File

@ -0,0 +1,57 @@
//©///////////////////////////////////////////////////////////////////////////©//
//
// Copyright 2021-2023 BIA-Technologies Limited Liability Company
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
//
//©///////////////////////////////////////////////////////////////////////////©//
#Область ПрограммныйИнтерфейс
Функция РусскиеБуквы(НижнийРегистр = Истина, ВерхнийРегистр = Ложь) Экспорт
Возврат Буквы("абвгдеёжзийклмнопрстуфхцчшщъыьэюя", НижнийРегистр, ВерхнийРегистр);
КонецФункции
Функция АнглийскиеБуквы(НижнийРегистр = Истина, ВерхнийРегистр = Ложь) Экспорт
Возврат Буквы("abcdefghijklmnopqrstuvwxyz", НижнийРегистр, ВерхнийРегистр);
КонецФункции
Функция Цифры() Экспорт
Возврат "1234567890";
КонецФункции
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
Функция Буквы(Буквы, НижнийРегистр, ВерхнийРегистр)
Если НижнийРегистр И ВерхнийРегистр Тогда
Возврат Буквы + ВРег(Буквы);
ИначеЕсли НижнийРегистр Тогда
Возврат Буквы;
ИначеЕсли ВерхнийРегистр Тогда
Возврат ВРег(Буквы);
Иначе
Возврат "";
КонецЕсли;
КонецФункции
#КонецОбласти

View File

@ -0,0 +1,11 @@
<?xml version="1.0" encoding="UTF-8"?>
<mdclass:CommonModule xmlns:mdclass="http://g5.1c.ru/v8/dt/metadata/mdclass" uuid="c2bf54a9-2026-41ed-8971-af1be24299c2">
<name>ЮТСтроки</name>
<synonym>
<key>ru</key>
<value>Строки</value>
</synonym>
<clientManagedApplication>true</clientManagedApplication>
<server>true</server>
<clientOrdinaryApplication>true</clientOrdinaryApplication>
</mdclass:CommonModule>

View File

@ -166,28 +166,26 @@
// Генерирует и возвращает случайную строку указанной длины, строка может содержать цифры, английские и русские буквы в разных регистрах.
//
// Параметры:
// Длина - Число - Длина генерируемой строки, без учета префикса
// Длина - Число - Длина генерируемой строки с учетом префикса
// Префикс - Строка - Префикс строки
// ДопустимыеСимволы - Строка - Допустимые символы из которая будет формироваться случайно строка
// ДопустимыеСимволы - Строка - Допустимые символы из которая будет формироваться случайная строка
//
// Возвращаемое значение:
// Строка - Случайная строка
Функция СлучайнаяСтрока(Знач Длина = 10, Префикс = "", ДопустимыеСимволы = Неопределено) Экспорт
Функция СлучайнаяСтрока(Знач Длина = 10, Префикс = "", Знач ДопустимыеСимволы = Неопределено) Экспорт
Если ДопустимыеСимволы = Неопределено Тогда
Строка = "1234567890абвгдеёжзийклмнопрстуфхцчшщъыьэюяАБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
Иначе
Строка = ДопустимыеСимволы;
ДопустимыеСимволы = ЮТСтроки.РусскиеБуквы(Истина, Истина) + ЮТСтроки.АнглийскиеБуквы(Истина, Истина) + ЮТСтроки.Цифры();
КонецЕсли;
Результат = "";
КоличествоСимволов = СтрДлина(Строка);
КоличествоСимволов = СтрДлина(ДопустимыеСимволы);
Длина = Длина - СтрДлина(Префикс);
Для Инд = 1 По Длина Цикл
Результат = Результат + Сред(Строка, СлучайноеЧисло(1, КоличествоСимволов), 1);
Результат = Результат + Сред(ДопустимыеСимволы, СлучайноеЧисло(1, КоличествоСимволов), 1);
КонецЦикла;
@ -195,6 +193,28 @@
КонецФункции
// Возвращяет случайный валидный идентификатор
//
// Параметры:
// Длина - Число - Длина генерируемой строки с учетом префикса
// Префикс - Строка - Префикс строки
//
// Возвращаемое значение:
// Строка - Случайный идентификатор
Функция СлучайныйИдентификатор(Знач Длина = 10, Знач Префикс = "") Экспорт
НаборСимволов = "_" + ЮТСтроки.РусскиеБуквы(Истина, Истина) + ЮТСтроки.АнглийскиеБуквы(Истина, Истина);
Если ПустаяСтрока(Префикс) Тогда
Префикс = СлучайнаяСтрока(1, "", НаборСимволов);
КонецЕсли;
НаборСимволов = НаборСимволов + ЮТСтроки.Цифры();
Возврат СлучайнаяСтрока(Длина, Префикс, НаборСимволов);
КонецФункции
// Генерирует и возвращает случайную дату в указанном интервале (если не указан используется `0001-01-01 - 3999-12-31`).
//
// Параметры:

View File

@ -92,6 +92,7 @@
<commonModules>CommonModule.ЮТСобытия</commonModules>
<commonModules>CommonModule.ЮТСравнениеКлиентСервер</commonModules>
<commonModules>CommonModule.ЮТСравнениеСервер</commonModules>
<commonModules>CommonModule.ЮТСтроки</commonModules>
<commonModules>CommonModule.ЮТТестовыеДанные</commonModules>
<commonModules>CommonModule.ЮТТестовыеДанные_ТаблицыЗначений</commonModules>
<commonModules>CommonModule.ЮТТестовыеДанныеВызовСервера</commonModules>

View File

@ -29,6 +29,7 @@
.ДобавитьСерверныйТест("СтруктурыТабличногоДокумента")
.ДобавитьСерверныйТест("ТаблицаЗначенийИзТабличногоДокумента")
.ДобавитьСерверныйТест("ТаблицаЗначенийИзТаблицыMarkDown")
.ДобавитьТест("СлучайныйИдентификатор")
;
КонецПроцедуры
@ -91,6 +92,22 @@
КонецПроцедуры
Процедура СлучайныйИдентификатор() Экспорт
Проверка = Новый Структура();
Для Инд = 1 По 100 Цикл
Идентификатор = ЮТест.Данные().СлучайныйИдентификатор(Инд);
ЮТест.ОжидаетЧто(Проверка)
.Метод("Вставить").Параметр(Идентификатор)
.НеВыбрасываетИсключение(, "Сформирован не валидный идентификатор: " + Идентификатор);
КонецЦикла;
КонецПроцедуры
#Если Сервер Тогда
Процедура СтруктурыТабличногоДокумента() Экспорт