1
0
mirror of https://github.com/bia-technologies/yaxunit.git synced 2025-02-07 19:30:17 +02:00

Merge pull request #146 from bia-technologies/feature/102

Случайный идентификатор
This commit is contained in:
Koryakin Aleksey 2023-08-30 18:40:24 +03:00 committed by GitHub
commit 015c010b05
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
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`).
//
// Параметры:
@ -427,7 +447,7 @@
ЗаменяемыеСтроки = ЮТТестовыеДанныеСлужебный.ПодстрокиДляЗаменыВИменахСвойств();
ЗначениеКолонки = ТабличныйДокумент.Область(НомерСтроки, НомерКолонки).Текст;
Пока ЗначениеЗаполнено(ЗначениеКолонки) Цикл
Пока ЗначениеЗаполнено(ЗначениеКолонки) Цикл
Для Каждого Замена Из ЗаменяемыеСтроки Цикл
ПодстрокаПоиска = Замена.Ключ;
@ -435,7 +455,7 @@
ИмяКолонки = СтрЗаменить(ЗначениеКолонки, ПодстрокаПоиска, ПодстрокаЗамены);
КонецЦикла;
Сведения = Новый Структура("НомерКолонки, ИмяКолонки", НомерКолонки, ИмяКолонки);
Сведения = Новый Структура("НомерКолонки, ИмяКолонки", НомерКолонки, ИмяКолонки);
СведенияКолонок.Добавить(Сведения);
НомерКолонки = НомерКолонки + 1;
@ -445,14 +465,14 @@
НомерСтроки = НомерСтроки + 1;
Пока ЕстьЗначенияВСтроке(ТабличныйДокумент, НомерСтроки, СведенияКолонок) Цикл
Пока ЕстьЗначенияВСтроке(ТабличныйДокумент, НомерСтроки, СведенияКолонок) Цикл
Структура = Новый Структура;
Для Каждого Сведения Из СведенияКолонок Цикл
Для Каждого Сведения Из СведенияКолонок Цикл
Значение = СокрЛП(ТабличныйДокумент.Область(НомерСтроки, Сведения.НомерКолонки).Текст);
Структура.Вставить(Сведения.ИмяКолонки, Значение);
КонецЦикла;
КонецЦикла;
МассивДанных.Добавить(Структура);
@ -558,15 +578,15 @@
// * ОбменДаннымиЗагрузка - Булево - По умолчанию - Истина
// Возвращаемое значение:
// см. ЮТТестовыеДанные_ТаблицыЗначений.ТаблицаЗначенийИзМассиваСтруктур
Функция ТаблицаЗначенийИзТабличногоДокумента(ТабличныйДокумент, ОписанияТипов, КэшЗначений = Неопределено,
Функция ТаблицаЗначенийИзТабличногоДокумента(ТабличныйДокумент, ОписанияТипов, КэшЗначений = Неопределено,
ЗаменяемыеЗначения = Неопределено, ПараметрыСозданияОбъектов = Неопределено) Экспорт
Параметры = ЮТТестовыеДанные_ТаблицыЗначений.ПараметрыЗаполненияТаблицыЗначений(ПараметрыСозданияОбъектов);
ИсточникДанных = СтруктурыТабличногоДокумента(ТабличныйДокумент);
ТаблицаЗначений = ЮТТестовыеДанные_ТаблицыЗначений.ТипизированнаяТаблицаЗначений(
ИсточникДанных,
ОписанияТипов,
КэшЗначений,
ИсточникДанных,
ОписанияТипов,
КэшЗначений,
ЗаменяемыеЗначения,
Параметры
);
@ -586,15 +606,15 @@
// * ОбменДаннымиЗагрузка - Булево - По умолчанию - Истина
// Возвращаемое значение:
// см. ЮТТестовыеДанные_ТаблицыЗначений.ТаблицаЗначенийИзМассиваСтруктур
Функция ТаблицаЗначенийИзТаблицыMarkDown(Строки, ОписанияТипов, КэшЗначений = Неопределено,
Функция ТаблицаЗначенийИзТаблицыMarkDown(Строки, ОписанияТипов, КэшЗначений = Неопределено,
ЗаменяемыеЗначения = Неопределено, ПараметрыСозданияОбъектов = Неопределено) Экспорт
Параметры = ЮТТестовыеДанные_ТаблицыЗначений.ПараметрыЗаполненияТаблицыЗначений(ПараметрыСозданияОбъектов);
ИсточникДанных = ТаблицаMarkDown(Строки);
ТаблицаЗначений = ЮТТестовыеДанные_ТаблицыЗначений.ТипизированнаяТаблицаЗначений(
ИсточникДанных,
ОписанияТипов,
КэшЗначений,
ИсточникДанных,
ОписанияТипов,
КэшЗначений,
ЗаменяемыеЗначения,
Параметры
);
@ -644,4 +664,4 @@
КонецФункции
#КонецОбласти
#КонецОбласти

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 Цикл
Идентификатор = ЮТест.Данные().СлучайныйИдентификатор(Инд);
ЮТест.ОжидаетЧто(Проверка)
.Метод("Вставить").Параметр(Идентификатор)
.НеВыбрасываетИсключение(, "Сформирован не валидный идентификатор: " + Идентификатор);
КонецЦикла;
КонецПроцедуры
#Если Сервер Тогда
Процедура СтруктурыТабличногоДокумента() Экспорт
@ -116,7 +133,7 @@
.Свойство("[2].Цена").Равно("1000000")
.Свойство("[2].Количество").Равно("1")
.Свойство("[2].Сумма").Равно("1000000")
;
;
КонецПроцедуры
@ -143,9 +160,9 @@
// Вызов тестируемого сценария
ТаблицаРезультатов = ЮТест.Данные().ТаблицаЗначенийИзТабличногоДокумента(
ИсходныеДанные,
ИсходныеДанные,
ОписанияТипов,
КэшЗначений,
КэшЗначений,
ЗаменяемыеЗначения
);
@ -172,7 +189,7 @@
.Свойство("[2].Товар.Описание").Заполнено()
.Свойство("[2].Количество").Равно(1)
.Свойство("[2].Цена").Равно(1000000)
;
;
КонецПроцедуры
@ -180,7 +197,7 @@
// Подготовка тестового окружения
ИсходныеДанные =
ИсходныеДанные =
"| Товар | Цена | Количество | Сумма |
||---------|-------|------------|-------|
|| Товар 1 | 100 | 1 | 100 |
@ -197,7 +214,7 @@
// Вызов тестируемого сценария
ТаблицаРезультатов = ЮТест.Данные().ТаблицаЗначенийИзТаблицыMarkDown(
ИсходныеДанные,
ИсходныеДанные,
ОписанияТипов
);
@ -218,10 +235,10 @@
.Свойство("[2].Количество").Равно(1)
.Свойство("[2].Цена").Равно(300.9)
.Свойство("[2].Сумма").Равно(300.9)
;
;
КонецПроцедуры
#КонецЕсли
#КонецЕсли
#КонецОбласти