mirror of
https://github.com/bia-technologies/yaxunit.git
synced 2025-01-20 18:48:36 +02:00
parent
be14375c5a
commit
1b6d9ad94a
@ -551,6 +551,25 @@
|
||||
|
||||
КонецФункции
|
||||
|
||||
#Если Сервер Или ТолстыйКлиентОбычноеПриложение Тогда
|
||||
// Возвращает конструктор создания объекта XDTO
|
||||
//
|
||||
// Параметры:
|
||||
// ИмяТипа - Строка - Имя типа объекта
|
||||
// ПространствоИмен - Строка - Пространство имен типа
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// ОбработкаОбъект.ЮТКонструкторОбъектаXDTO - Конструктор объекта XDTO
|
||||
Функция КонструкторОбъектаXDTO(ИмяТипа, ПространствоИмен) Экспорт
|
||||
|
||||
Обработка = Обработки.ЮТКонструкторОбъектаXDTO.Создать();
|
||||
Обработка.Инициализировать(ИмяТипа, ПространствоИмен);
|
||||
|
||||
Возврат Обработка;
|
||||
|
||||
КонецФункции
|
||||
#КонецЕсли
|
||||
|
||||
// Удаляет переданные объекта
|
||||
//
|
||||
// Параметры:
|
||||
|
@ -121,6 +121,7 @@
|
||||
<dataProcessors>DataProcessor.ЮТHTTPServiceRequest</dataProcessors>
|
||||
<dataProcessors>DataProcessor.ЮТHTTPСервисЗапрос</dataProcessors>
|
||||
<dataProcessors>DataProcessor.ЮТRecordSet</dataProcessors>
|
||||
<dataProcessors>DataProcessor.ЮТКонструкторОбъектаXDTO</dataProcessors>
|
||||
<dataProcessors>DataProcessor.ЮТКонструкторТестовыхДанных</dataProcessors>
|
||||
<dataProcessors>DataProcessor.ЮТЮнитТесты</dataProcessors>
|
||||
</mdclass:Configuration>
|
||||
|
@ -0,0 +1,299 @@
|
||||
//©///////////////////////////////////////////////////////////////////////////©//
|
||||
//
|
||||
// Copyright 2021-2024 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.
|
||||
//
|
||||
//©///////////////////////////////////////////////////////////////////////////©//
|
||||
|
||||
#Если Сервер Или ТолстыйКлиентОбычноеПриложение Тогда
|
||||
|
||||
#Область ОписаниеПеременных
|
||||
|
||||
Перем ТекущийОбъект;
|
||||
Перем ТекущийТип;
|
||||
Перем СтекОбъектов;
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
#Область ПрограммныйИнтерфейс
|
||||
|
||||
// Устанавливает значение реквизита объекта.
|
||||
//
|
||||
// Параметры:
|
||||
// ИмяРеквизита - Строка - Имя реквизита объекта
|
||||
// Значение - Произвольный - Значение реквизита объекта
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// ОбработкаОбъект.ЮТКонструкторОбъектаXDTO - Конструктор
|
||||
Функция Установить(ИмяРеквизита, Значение) Экспорт
|
||||
|
||||
ТекущийОбъект[ИмяРеквизита] = Значение;
|
||||
|
||||
Возврат ЭтотОбъект;
|
||||
|
||||
КонецФункции
|
||||
|
||||
// Устанавливает фиктивное значение реквизита объекта.
|
||||
//
|
||||
// На основании типа реквизита генерируется фиктивное значение.
|
||||
//
|
||||
// * Для примитивных значение генерируется случайное значение
|
||||
// * Для объектных типов создается новый объект
|
||||
// * Для коллекций - генерируется случайно количество случайных элементов (на основании типа)
|
||||
//
|
||||
// Параметры:
|
||||
// ИмяРеквизита - Строка - Имя реквизита объекта
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// ОбработкаОбъект.ЮТКонструкторОбъектаXDTO - Конструктор
|
||||
Функция Фикция(ИмяРеквизита) Экспорт
|
||||
|
||||
Свойство = ТекущийТип.Свойства.Получить(ИмяРеквизита);
|
||||
Значение = СлучайноеЗначениеСвойства(Свойство, 0);
|
||||
Установить(ИмяРеквизита, Значение);
|
||||
|
||||
Возврат ЭтотОбъект;
|
||||
|
||||
КонецФункции
|
||||
|
||||
// Заполняет обязательные реквизиты объекта фиктивными значениями
|
||||
//
|
||||
// На основании типа объекта определяются обязательные поля.
|
||||
// Для них генерируются и устанавливаются фиктивные значение.
|
||||
//
|
||||
// * Для примитивных значение генерируется случайное значение
|
||||
// * Для объектных типов создается новый объект
|
||||
// * Для коллекций - генерируется случайно количество случайных элементов (на основании типа)
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// ОбработкаОбъект.ЮТКонструкторОбъектаXDTO - Конструктор
|
||||
Функция ФикцияОбязательныхПолей() Экспорт
|
||||
|
||||
Для Каждого Свойство Из ТекущийТип.Свойства Цикл
|
||||
УстановитьСлучайноеЗначениеСвойства(ТекущийОбъект, Свойство, 0);
|
||||
КонецЦикла;
|
||||
|
||||
Возврат ЭтотОбъект;
|
||||
|
||||
КонецФункции
|
||||
|
||||
// Заполняет неустановленные реквизиты объекта фиктивными значениями
|
||||
//
|
||||
// На основании типа объекта определяются обязательные поля.
|
||||
// Для них генерируются и устанавливаются фиктивные значение.
|
||||
//
|
||||
// * Для примитивных значение генерируется случайное значение
|
||||
// * Для объектных типов создается новый объект
|
||||
// * Для коллекций - генерируется случайно количество случайных элементов (на основании типа)
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// ОбработкаОбъект.ЮТКонструкторОбъектаXDTO - Конструктор
|
||||
Функция ФикцияНезаполненных() Экспорт
|
||||
|
||||
ЗаполнитьПакетСлучайнымиЗначениями(ТекущийОбъект, 0);
|
||||
|
||||
Возврат ЭтотОбъект;
|
||||
|
||||
КонецФункции
|
||||
|
||||
// Возвращает основной объект XDTO
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// ОбъектXDTO
|
||||
Функция ДанныеОбъекта() Экспорт
|
||||
|
||||
Возврат СтекОбъектов[0];
|
||||
|
||||
КонецФункции
|
||||
|
||||
// Добавляет новый объект в реквизит-коллекцию
|
||||
//
|
||||
// Параметры:
|
||||
// ИмяРеквизита - Строка - Имя реквизиты коллекции
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// ОбработкаОбъект.ЮТКонструкторОбъектаXDTO - Добавить новый
|
||||
Функция ДобавитьНовый(ИмяРеквизита) Экспорт
|
||||
|
||||
Свойство = ТекущийТип.Свойства.Получить(ИмяРеквизита);
|
||||
|
||||
Если НЕ ЭтоТипОбъектаXDTO(Свойство.Тип) Тогда
|
||||
ВызватьИсключение СтрШаблон("Метод применяется только для свойств-объектов. Реквизит: %1 имеет тип %2", ИмяРеквизита, Свойство.Тип);
|
||||
КонецЕсли;
|
||||
|
||||
Коллекция = ТекущийОбъект[Свойство.Имя];
|
||||
ДобавитьНовыйОбъектВСтек(Свойство.Тип);
|
||||
|
||||
Коллекция.Добавить(ТекущийОбъект);
|
||||
|
||||
Возврат ЭтотОбъект;
|
||||
|
||||
КонецФункции
|
||||
|
||||
// Переходит на уровень выше по стеку.
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// ОбработкаОбъект.ЮТКонструкторОбъектаXDTO - Перейти к владельцу
|
||||
Функция ПерейтиКВладельцу() Экспорт
|
||||
|
||||
УдалитьПоследнийИзСтека();
|
||||
|
||||
Возврат ЭтотОбъект;
|
||||
|
||||
КонецФункции
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
#Область СлужебныйПрограммныйИнтерфейс
|
||||
|
||||
Процедура Инициализировать(ИмяТипаОбъекта, ПространствоИмен) Экспорт
|
||||
|
||||
СтекОбъектов = Новый Массив();
|
||||
ТипОбъекта = ФабрикаXDTO.Тип(ПространствоИмен, ИмяТипаОбъекта);
|
||||
ДобавитьНовыйОбъектВСтек(ТипОбъекта);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
#Область СлужебныеПроцедурыИФункции
|
||||
|
||||
Процедура ДобавитьНовыйОбъектВСтек(Тип)
|
||||
|
||||
Объект = НовыйОбъект(Тип);
|
||||
СтекОбъектов.Добавить(Объект);
|
||||
ТекущийОбъект = Объект;
|
||||
ТекущийТип = Тип;
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура УдалитьПоследнийИзСтека()
|
||||
|
||||
ИндексПоследнего = СтекОбъектов.ВГраница();
|
||||
|
||||
ТекущийОбъект = СтекОбъектов[ИндексПоследнего - 1];
|
||||
ТекущийТип = ТекущийОбъект.Тип();
|
||||
|
||||
СтекОбъектов.Удалить(ИндексПоследнего);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура УстановитьСлучайноеЗначениеСвойства(Объект, Свойство, Уровень)
|
||||
|
||||
Значение = СлучайноеЗначениеСвойства(Свойство, Уровень);
|
||||
Объект[Свойство.Имя] = Значение;
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Функция СлучайноеЗначениеСвойства(Свойство, Уровень = 0)
|
||||
|
||||
ТипСвойства = Свойство.Тип;
|
||||
Если ТипЗнч(ТипСвойства) = Тип("ТипЗначенияXDTO") Тогда
|
||||
Возврат СлучайноеЗначениеПримитипа(Свойство);
|
||||
ИначеЕсли Уровень < 3 Тогда
|
||||
Возврат СлучайноеЗначениеОбъекта(Свойство, Уровень + 1);
|
||||
КонецЕсли;
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция СлучайноеЗначениеПримитипа(Свойство)
|
||||
|
||||
Тип = Свойство.Тип;
|
||||
|
||||
Если Тип.Имя = "string" И СтрНайти(НРег(Свойство.Имя), "uid") Тогда
|
||||
Возврат ЮТест.Данные().УникальнаяСтрока();
|
||||
ИначеЕсли Тип.Имя = "string" Тогда
|
||||
Возврат ЮТест.Данные().СлучайнаяСтрока();
|
||||
ИначеЕсли Тип.Имя = "boolean" Тогда
|
||||
Возврат ЮТест.Данные().СлучайноеБулево();
|
||||
ИначеЕсли Тип.Имя = "integer" Тогда
|
||||
Возврат ЮТест.Данные().СлучайноеЧисло();
|
||||
ИначеЕсли Тип.Имя = "decimal" Тогда
|
||||
Возврат ЮТест.Данные().СлучайноеЧисло(, , 3);
|
||||
ИначеЕсли Тип.Имя = "time" Тогда
|
||||
Возврат ЮТест.Данные().СлучайноеВремя();
|
||||
ИначеЕсли Тип.Имя = "date" Тогда
|
||||
Возврат НачалоДня(ЮТест.Данные().СлучайнаяДата());
|
||||
ИначеЕсли Тип.Имя = "dateTime" Тогда
|
||||
Возврат ЮТест.Данные().СлучайнаяДата();
|
||||
Иначе
|
||||
ВызватьИсключение "Неподдерживаемый тип примитива XDTO: " + Тип;
|
||||
КонецЕсли;
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция СлучайноеЗначениеОбъекта(Свойство, Уровень)
|
||||
|
||||
Пакет = НовыйОбъект(Свойство.Тип);
|
||||
ЗаполнитьПакетСлучайнымиЗначениями(Пакет, Уровень);
|
||||
|
||||
Возврат Пакет;
|
||||
|
||||
КонецФункции
|
||||
|
||||
Процедура ЗаполнитьПакетСлучайнымиЗначениями(Пакет, Уровень = 0)
|
||||
|
||||
Тип = Пакет.Тип();
|
||||
Для Каждого Свойство Из Тип.Свойства Цикл
|
||||
ЭтоСписок = Свойство.ВерхняяГраница = -1 ИЛИ Свойство.ВерхняяГраница > 1;
|
||||
|
||||
Если ЭтоСписок И Пакет[Свойство.Имя].Количество() Тогда
|
||||
Продолжить;
|
||||
ИначеЕсли ЭтоСписок Тогда
|
||||
СписокСлучайныхЗначений(Пакет[Свойство.Имя], Свойство, Уровень);
|
||||
Продолжить;
|
||||
КонецЕсли;
|
||||
|
||||
Если ЗначениеЗаполнено(Пакет[Свойство.Имя]) Тогда
|
||||
Продолжить;
|
||||
КонецЕсли;
|
||||
|
||||
Значение = СлучайноеЗначениеСвойства(Свойство, Уровень);
|
||||
Если Значение <> Неопределено Тогда
|
||||
Пакет[Свойство.Имя] = Значение;
|
||||
КонецЕсли;
|
||||
КонецЦикла;
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура СписокСлучайныхЗначений(Список, Свойство, Уровень)
|
||||
|
||||
Если Свойство.ВерхняяГраница = -1 Тогда
|
||||
Количество = ЮТест.Данные().СлучайноеЧисло(Свойство.НижняяГраница, 10);
|
||||
Иначе
|
||||
Количество = ЮТест.Данные().СлучайноеЧисло(Свойство.НижняяГраница, Свойство.ВерхняяГраница);
|
||||
КонецЕсли;
|
||||
|
||||
Для Инд = 0 По Количество Цикл
|
||||
Значение = СлучайноеЗначениеСвойства(Свойство, Уровень);
|
||||
Список.Добавить(Значение);
|
||||
КонецЦикла;
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Функция НовыйОбъект(Тип)
|
||||
|
||||
Возврат ФабрикаXDTO.Создать(Тип);
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция ЭтоТипОбъектаXDTO(ТипСвойства)
|
||||
|
||||
Возврат ТипЗнч(ТипСвойства) = Тип("ТипОбъектаXDTO");
|
||||
|
||||
КонецФункции
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
#КонецЕсли
|
@ -0,0 +1,13 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<mdclass:DataProcessor xmlns:mdclass="http://g5.1c.ru/v8/dt/metadata/mdclass" uuid="8ea1fd8e-8352-4973-a357-c64ccb1b9b5c">
|
||||
<producedTypes>
|
||||
<objectType typeId="4d0c09ec-ea56-4aef-852c-42a99d491406" valueTypeId="ac59e2e1-acef-483b-b47d-b9aa6bcde7cd"/>
|
||||
<managerType typeId="f43e3751-6657-41b5-a060-07b0bcd9b2c0" valueTypeId="66b97e8e-5ab2-4e0b-8e10-a14a755c4e0b"/>
|
||||
</producedTypes>
|
||||
<name>ЮТКонструкторОбъектаXDTO</name>
|
||||
<synonym>
|
||||
<key>ru</key>
|
||||
<value>Конструктор объекта XDTO</value>
|
||||
</synonym>
|
||||
<useStandardCommands>true</useStandardCommands>
|
||||
</mdclass:DataProcessor>
|
Loading…
x
Reference in New Issue
Block a user