mirror of
https://github.com/Bellerage-IT/bellerage-ssl.git
synced 2024-11-24 08:42:32 +02:00
feat: Добавлены тесты, изменена структура репозитория
This commit is contained in:
parent
23b3ea873b
commit
7b3498167f
35
.gitattributes
vendored
Normal file
35
.gitattributes
vendored
Normal file
@ -0,0 +1,35 @@
|
||||
# модули
|
||||
* text=auto
|
||||
*.bsl text eol=crlf
|
||||
*.cai text eol=crlf
|
||||
*.cmi text eol=crlf
|
||||
*.dcs text eol=crlf
|
||||
*.dcss text eol=crlf
|
||||
*.dcssca text eol=crlf
|
||||
*.form text eol=crlf
|
||||
*.hpwa text eol=crlf
|
||||
*.mdo text eol=crlf
|
||||
*.mxlx text eol=crlf
|
||||
*.pnrs text eol=crlf
|
||||
*.rights text eol=crlf
|
||||
*.schedule text eol=crlf
|
||||
|
||||
# картинки
|
||||
|
||||
*.bmp binary diff=exif
|
||||
*.gif binary diff=exif
|
||||
*.ico binary
|
||||
*.jpeg binary diff=exif
|
||||
*.jpg binary diff=exif
|
||||
*.png binary diff=exif
|
||||
*.svg text
|
||||
|
||||
# картинки
|
||||
|
||||
*.bin binary
|
||||
*.1CD binary
|
||||
|
||||
# Binary file extensions that should not be modified.
|
||||
*.bin binary
|
||||
*.axdt binary
|
||||
*.addin binary
|
35
.gitignore
vendored
Normal file
35
.gitignore
vendored
Normal file
@ -0,0 +1,35 @@
|
||||
*.cfu
|
||||
src/.project
|
||||
*.cfl
|
||||
*.lgd
|
||||
*.orig
|
||||
|
||||
/src/Configuration/ConfigDumpInfo.xml
|
||||
|
||||
/allure-reports
|
||||
/autotest-bia
|
||||
/ci4onec
|
||||
/spec/build/ib
|
||||
/tys
|
||||
|
||||
autotest.json
|
||||
VBParams.json
|
||||
|
||||
/allure-report/*
|
||||
/buildstatus.log
|
||||
|
||||
|
||||
/*_pid*.log
|
||||
|
||||
*.*.bak
|
||||
|
||||
# IDE
|
||||
*/.settings/com._1c.g5.v8.dt.platform.services.core.prefs
|
||||
*/.settings/EnvLaunchModeIndex.prefs
|
||||
|
||||
# Binary
|
||||
*/bin/*
|
||||
|
||||
#wsdl
|
||||
/fixtures/wsdl
|
||||
|
4
sonarlint.json
Normal file
4
sonarlint.json
Normal file
@ -0,0 +1,4 @@
|
||||
{
|
||||
"serverId": "sonar",
|
||||
"projectKey": "yaxunit:develop"
|
||||
}
|
@ -40,7 +40,7 @@
|
||||
<dataLockControlMode>Managed</dataLockControlMode>
|
||||
<objectAutonumerationMode>NotAutoFree</objectAutonumerationMode>
|
||||
<modalityUseMode>DontUse</modalityUseMode>
|
||||
<synchronousPlatformExtensionAndAddInCallUseMode>DontUse</synchronousPlatformExtensionAndAddInCallUseMode>
|
||||
<synchronousPlatformExtensionAndAddInCallUseMode>UseWithWarnings</synchronousPlatformExtensionAndAddInCallUseMode>
|
||||
<compatibilityMode>8.3.20</compatibilityMode>
|
||||
<languages uuid="463fa4e2-0433-4cd5-8179-7be01d8079bb">
|
||||
<name>Русский</name>
|
@ -155,7 +155,7 @@
|
||||
// Конвейерный метод.
|
||||
//
|
||||
// Параметры:
|
||||
// ФункцияРазворачивания - Строка, бф_ПроцессорыКоллекций.НовыйОписаниеОповещения - функция разворачивания.
|
||||
// ФункцияРазворачивания - Строка - бф_ПроцессорыКоллекций.НовыйОписаниеОповещения - функция разворачивания.
|
||||
// В случае передачи Строки формируется служебное описание оповещения, в контексте которого заданы переменные
|
||||
// "Результат", "ДополнительныеПараметры", "Элемент".
|
||||
// В случае передачи ОписанияОповещения обработчик данного описания должен содержать два параметра
|
18
src/cfe/yaxunit/.project
Normal file
18
src/cfe/yaxunit/.project
Normal file
@ -0,0 +1,18 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<projectDescription>
|
||||
<name>yaxunit</name>
|
||||
<comment></comment>
|
||||
<projects>
|
||||
</projects>
|
||||
<buildSpec>
|
||||
<buildCommand>
|
||||
<name>org.eclipse.xtext.ui.shared.xtextBuilder</name>
|
||||
<arguments>
|
||||
</arguments>
|
||||
</buildCommand>
|
||||
</buildSpec>
|
||||
<natures>
|
||||
<nature>org.eclipse.xtext.ui.shared.xtextNature</nature>
|
||||
<nature>com._1c.g5.v8.dt.core.V8ExtensionNature</nature>
|
||||
</natures>
|
||||
</projectDescription>
|
8
src/cfe/yaxunit/.settings/Default.cset
Normal file
8
src/cfe/yaxunit/.settings/Default.cset
Normal file
@ -0,0 +1,8 @@
|
||||
{
|
||||
"version": 1,
|
||||
"settings": {
|
||||
"common-module-type": {
|
||||
"enabled": false
|
||||
}
|
||||
}
|
||||
}
|
11
src/cfe/yaxunit/.settings/ManagedEnvironments.prefs
Normal file
11
src/cfe/yaxunit/.settings/ManagedEnvironments.prefs
Normal file
@ -0,0 +1,11 @@
|
||||
CLIENT=false
|
||||
EXTERNAL_CONN=false
|
||||
MNG_CLIENT=true
|
||||
MOBILE_AUTONOMOUS_SERVER=false
|
||||
MOBILE_CLIENT=false
|
||||
MOBILE_SERVER=false
|
||||
MOBILE_THIN_CLIENT=false
|
||||
SERVER=true
|
||||
THIN_CLIENT=true
|
||||
WEB_CLIENT=true
|
||||
eclipse.preferences.version=1
|
@ -0,0 +1,17 @@
|
||||
alwaysEndWithSemicolon=true
|
||||
autowrapBinary=indent_on_wrap
|
||||
autowrapInvocation=alignment_on_wrap
|
||||
autowrapMethodParameters=alignment_on_wrap
|
||||
creatorEmptyBrackets=never brackets
|
||||
defaultValuesInitialized=true
|
||||
eclipse.preferences.version=1
|
||||
formattingOn=true
|
||||
indentMethodInternal=true
|
||||
invocationEmptyParamsDelimited=true
|
||||
keywordStandard=CamelCase
|
||||
noindent_preprocessor=true
|
||||
projectSpecificSettingsInited=true
|
||||
showWhitespaceCharacters=true
|
||||
softFormatassignmentStatement=true
|
||||
spacesForTabs=false
|
||||
whitespaceMethodParamsDelimited=true
|
@ -0,0 +1,2 @@
|
||||
eclipse.preferences.version=1
|
||||
yaxunit={"templates"\:[]}
|
@ -0,0 +1,9 @@
|
||||
eclipse.preferences.version=1
|
||||
subordinate/commands=true
|
||||
subordinate/forms=true
|
||||
subordinate/methods=true
|
||||
subordinate/operations=true
|
||||
subordinate/tabularSections=true
|
||||
subordinate/templates=true
|
||||
subordinate/urlTemplates=true
|
||||
topObjects=true
|
3
src/cfe/yaxunit/.settings/com.e1c.v8codestyle.bsl.prefs
Normal file
3
src/cfe/yaxunit/.settings/com.e1c.v8codestyle.bsl.prefs
Normal file
@ -0,0 +1,3 @@
|
||||
addModuleStrictTypesAnnotation=true
|
||||
createModuleStructure=true
|
||||
eclipse.preferences.version=1
|
3
src/cfe/yaxunit/.settings/com.e1c.v8codestyle.prefs
Normal file
3
src/cfe/yaxunit/.settings/com.e1c.v8codestyle.prefs
Normal file
@ -0,0 +1,3 @@
|
||||
commonChecks=true
|
||||
eclipse.preferences.version=1
|
||||
standardChecks=true
|
@ -0,0 +1,2 @@
|
||||
eclipse.preferences.version=1
|
||||
encoding/<project>=UTF-8
|
62
src/cfe/yaxunit/.settings/templates/common_module.bsl
Normal file
62
src/cfe/yaxunit/.settings/templates/common_module.bsl
Normal file
@ -0,0 +1,62 @@
|
||||
//©///////////////////////////////////////////////////////////////////////////©//
|
||||
//
|
||||
// Copyright 2021-2022 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.
|
||||
//
|
||||
//©///////////////////////////////////////////////////////////////////////////©//
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
// Экспортные процедуры и функции, предназначенные для использования другими
|
||||
// объектами конфигурации или другими программами
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
#Область СлужебныйПрограммныйИнтерфейс
|
||||
|
||||
Процедура ИсполняемыеСценарии() Экспорт
|
||||
|
||||
ЮТТесты
|
||||
.ДобавитьТест("ТестовыйМетод")
|
||||
.ДобавитьТест("ТестовыйМетод").СПараметрами(1, 2, 3);
|
||||
;
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
#Область События
|
||||
|
||||
Процедура ПередВсемиТестами() Экспорт
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура ПередКаждымТестом() Экспорт
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура ПослеКаждогоТеста() Экспорт
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура ПослеВсехТестов() Экспорт
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
Процедура ТестовыйМетод() Экспорт
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
#Область СлужебныеПроцедурыИФункции
|
||||
|
||||
#КонецОбласти
|
3
src/cfe/yaxunit/DT-INF/PROJECT.PMF
Normal file
3
src/cfe/yaxunit/DT-INF/PROJECT.PMF
Normal file
@ -0,0 +1,3 @@
|
||||
Manifest-Version: 1.0
|
||||
Runtime-Version: 8.3.10
|
||||
Base-Project: СтандартныеПодсистемыБеллераж
|
181
src/cfe/yaxunit/src/CommonModules/Мокито/Module.bsl
Normal file
181
src/cfe/yaxunit/src/CommonModules/Мокито/Module.bsl
Normal file
@ -0,0 +1,181 @@
|
||||
//©///////////////////////////////////////////////////////////////////////////©//
|
||||
//
|
||||
// Copyright 2021-2022 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.
|
||||
//
|
||||
//©///////////////////////////////////////////////////////////////////////////©//
|
||||
|
||||
///////////////////////////////////////////////////////////////////
|
||||
// ПрограммныйИнтерфейс
|
||||
// Экспортные процедуры и функции для прикладного использования
|
||||
///////////////////////////////////////////////////////////////////
|
||||
#Область ПрограммныйИнтерфейс
|
||||
|
||||
// Обучение.
|
||||
// Начинает обучение мокито для регистрации правил подмены вызовов методов
|
||||
//
|
||||
// Параметры:
|
||||
// Объект - Произвольный - Объект, методы которого хотим подменить
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// ОбщийМодуль
|
||||
// Пример:
|
||||
// Для работы Мокито необходимо добавить обрабатываемые методы в расширение по следующей схеме
|
||||
//
|
||||
// &Вместо("ВыполнитьЗапрос")
|
||||
// Функция ЮТВыполнитьЗапрос(ПараметрыПодключения, Ресурс, HTTPМетод, Параметры, ОписаниеТела, Заголовки) Экспорт
|
||||
//
|
||||
// ПараметрыМетода = Мокито.МассивПараметров(ПараметрыПодключения, Ресурс, HTTPМетод, Параметры, ОписаниеТела, Заголовки);
|
||||
//
|
||||
// ПрерватьВыполнение = Ложь;
|
||||
// Результат = Мокито.АнализВызова(РаботаСHTTP, "ВыполнитьЗапрос", ПараметрыМетода, ПрерватьВыполнение);
|
||||
//
|
||||
// Если НЕ ПрерватьВыполнение Тогда
|
||||
// Возврат ПродолжитьВызов(ПараметрыПодключения, Ресурс, HTTPМетод, Параметры, ОписаниеТела, Заголовки);
|
||||
// Иначе
|
||||
// Возврат Результат;
|
||||
// КонецЕсли;
|
||||
//
|
||||
// КонецФункции
|
||||
Функция Обучение(Объект) Экспорт
|
||||
|
||||
Режимы = МокитоСлужебный.РежимыРаботы();
|
||||
МокитоСлужебный.УстановитьРежим(Режимы.Обучение);
|
||||
|
||||
Возврат МокитоОбучение.Обучение(Объект);
|
||||
|
||||
КонецФункции
|
||||
|
||||
// Прогон
|
||||
// Переводит мокито в режим прогона тестов
|
||||
// Вызов этого метода обязателен перед выполнением тестового прогона метода
|
||||
Процедура Прогон() Экспорт
|
||||
|
||||
Режимы = МокитоСлужебный.РежимыРаботы();
|
||||
МокитоСлужебный.УстановитьРежим(Режимы.Тестирование);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
// Проверить.
|
||||
// Переводит мокито в режим проверки вызовов
|
||||
// Параметры:
|
||||
// Объект - Произвольный - Устанавливает проверяемый объект, вызовы методов которого будем проверять
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// ОбщийМодуль
|
||||
Функция Проверить(Объект) Экспорт
|
||||
|
||||
Режимы = МокитоСлужебный.РежимыРаботы();
|
||||
МокитоСлужебный.УстановитьРежим(Режимы.Проверка);
|
||||
|
||||
Возврат МокитоПроверки.Проверить(Объект);
|
||||
|
||||
КонецФункции
|
||||
|
||||
// Сбросить
|
||||
// Сбрасывает настройки, переинициализирует мокито
|
||||
Процедура Сбросить() Экспорт
|
||||
|
||||
МокитоСлужебный.СброситьПараметры();
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
#Область КонструкторыПараметров
|
||||
|
||||
// Любой параметр.
|
||||
// Возвращает маску параметра. Используется при обучении и проверках для фильтрации входных параметров метода
|
||||
// Указывает, что в метод может передаваться любой параметр
|
||||
// Возвращаемое значение:
|
||||
// см. МокитоСлужебный.ОписаниеМаскиПараметра
|
||||
Функция ЛюбойПараметр() Экспорт
|
||||
|
||||
МаскаПараметра = МокитоСлужебный.ОписаниеМаскиПараметра(МокитоСлужебный.ТипыУсловийПараметров().Любой, 0);
|
||||
|
||||
Возврат МаскаПараметра;
|
||||
|
||||
КонецФункции
|
||||
|
||||
// Числовой параметр.
|
||||
// Возвращает маску параметра. Используется при обучении и проверках для фильтрации входных параметров метода
|
||||
// Указывает, что в метод может передаваться числовой параметр
|
||||
// Возвращаемое значение:
|
||||
// см. Мокито.ТипизированныйПараметр
|
||||
Функция ЧисловойПараметр() Экспорт
|
||||
|
||||
Возврат ТипизированныйПараметр(Тип("Число"));
|
||||
|
||||
КонецФункции
|
||||
|
||||
// Строковый параметр.
|
||||
// Возвращает маску параметра. Используется при обучении и проверках для фильтрации входных параметров метода
|
||||
// Указывает, что в метод может передаваться строковый параметр
|
||||
// Возвращаемое значение:
|
||||
// см. Мокито.ТипизированныйПараметр
|
||||
Функция СтроковыйПараметр() Экспорт
|
||||
|
||||
Возврат ТипизированныйПараметр(Тип("Строка"));
|
||||
|
||||
КонецФункции
|
||||
|
||||
// Типизированный параметр.
|
||||
// Возвращает маску параметра. Используется при обучении и проверках для фильтрации входных параметров метода
|
||||
// Указывает, что в метод может передаваться параметр указанного типа
|
||||
//
|
||||
// Параметры:
|
||||
// Тип - Тип - Ограничение типа параметра
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// см. МокитоСлужебный.ОписаниеМаскиПараметра
|
||||
Функция ТипизированныйПараметр(Тип) Экспорт
|
||||
|
||||
МаскаПараметра = МокитоСлужебный.ОписаниеМаскиПараметра(МокитоСлужебный.ТипыУсловийПараметров().Тип, 1);
|
||||
МаскаПараметра.Вставить("Тип", Тип);
|
||||
|
||||
Возврат МаскаПараметра;
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция МассивПараметров(Параметр1 = "_!%*",
|
||||
Параметр2 = "_!%*",
|
||||
Параметр3 = "_!%*",
|
||||
Параметр4 = "_!%*",
|
||||
Параметр5 = "_!%*",
|
||||
Параметр6 = "_!%*",
|
||||
Параметр7 = "_!%*",
|
||||
Параметр8 = "_!%*",
|
||||
Параметр9 = "_!%*",
|
||||
Параметр10 = "_!%*") Экспорт
|
||||
|
||||
Возврат ЮТОбщий.ЗначениеВМассиве(Параметр1,
|
||||
Параметр2,
|
||||
Параметр3,
|
||||
Параметр4,
|
||||
Параметр5,
|
||||
Параметр6,
|
||||
Параметр7,
|
||||
Параметр8,
|
||||
Параметр9,
|
||||
Параметр10);
|
||||
|
||||
КонецФункции
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
Функция АнализВызова(Объект, ИмяМетода, ПараметрыМетода, ПрерватьВыполнение) Экспорт
|
||||
|
||||
Возврат МокитоСлужебный.АнализВызова(Объект, ИмяМетода, ПараметрыМетода, ПрерватьВыполнение);
|
||||
|
||||
КонецФункции
|
||||
|
||||
#КонецОбласти
|
11
src/cfe/yaxunit/src/CommonModules/Мокито/Мокито.mdo
Normal file
11
src/cfe/yaxunit/src/CommonModules/Мокито/Мокито.mdo
Normal 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="b5c40903-c446-420c-824e-07c58f5b7021">
|
||||
<name>Мокито</name>
|
||||
<synonym>
|
||||
<key>ru</key>
|
||||
<value>Мокито</value>
|
||||
</synonym>
|
||||
<clientManagedApplication>true</clientManagedApplication>
|
||||
<server>true</server>
|
||||
<clientOrdinaryApplication>true</clientOrdinaryApplication>
|
||||
</mdclass:CommonModule>
|
276
src/cfe/yaxunit/src/CommonModules/МокитоОбучение/Module.bsl
Normal file
276
src/cfe/yaxunit/src/CommonModules/МокитоОбучение/Module.bsl
Normal file
@ -0,0 +1,276 @@
|
||||
//©///////////////////////////////////////////////////////////////////////////©//
|
||||
//
|
||||
// Copyright 2021-2022 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.
|
||||
//
|
||||
//©///////////////////////////////////////////////////////////////////////////©//
|
||||
|
||||
///////////////////////////////////////////////////////////////////
|
||||
// ПрограммныйИнтерфейс
|
||||
// Экспортные процедуры и функции для прикладного использования
|
||||
///////////////////////////////////////////////////////////////////
|
||||
#Область ПрограммныйИнтерфейс
|
||||
|
||||
// Обучение.
|
||||
// Начинает обучение мокито для регистрации правил подмены вызовов методов
|
||||
//
|
||||
// Параметры:
|
||||
// Объект - Произвольный - Объект, методы которого хотим подменить
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// ОбщийМодуль
|
||||
Функция Обучение(Объект) Экспорт
|
||||
|
||||
УстановитьПараметрыОбучения(Объект);
|
||||
|
||||
Возврат МокитоОбучение;
|
||||
|
||||
КонецФункции
|
||||
|
||||
// Наблюдать.
|
||||
//
|
||||
// Параметры:
|
||||
// ИмяМетода - Строка - Имя метода обучаемого объекта
|
||||
// - Произвольный - Вызов метода обучаемого объекта
|
||||
// ПараметрыВызова - Массив из Произвольный - Параметры вызова метода обучаемого объекта
|
||||
// Варианты вызова:
|
||||
// Мокито.Обучение(Произвольный).Когда(Строка, Массив); // Вызов через указание имени метода и параметров
|
||||
// Мокито.Обучение(Произвольный).Когда(Произвольный); // Вызов через явное выполнение наблюдаемого метода
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// ОбщийМодуль
|
||||
// Пример:
|
||||
// Мокито.Обучение(ОбщегоНазначения).Наблюдать("ЭтоДопустимоеИмяПеременной", Мокито.МассивПараметров(""));
|
||||
// Мокито.Обучение(ОбщегоНазначения).Наблюдать(ОбщегоНазначения.ЭтоДопустимоеИмяПеременной(""));
|
||||
Функция Наблюдать(ИмяМетода, ПараметрыВызова = Неопределено) Экспорт
|
||||
|
||||
ЗарегистрироватьПерехватВыражения(ИмяМетода, ПараметрыВызова);
|
||||
|
||||
Возврат МокитоОбучение;
|
||||
|
||||
КонецФункции
|
||||
|
||||
// Когда.
|
||||
//
|
||||
// Параметры:
|
||||
// ИмяМетода - Строка - Имя метода обучаемого объекта
|
||||
// - Произвольный - Вызов метода обучаемого объекта
|
||||
// ПараметрыВызова - Массив из Произвольный - Параметры вызова метода обучаемого объекта
|
||||
// Варианты вызова:
|
||||
// Мокито.Обучение(Произвольный).Когда(Строка, Массив); // Вызов через указание имени метода и параметров
|
||||
// Мокито.Обучение(Произвольный).Когда(Произвольный); // Вызов через явное выполнение наблюдаемого метода
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// ОбщийМодуль
|
||||
// Пример:
|
||||
// Мокито.Обучение(ОбщегоНазначения).Когда("ЭтоДопустимоеИмяПеременной", Мокито.МассивПараметров(""));
|
||||
// Мокито.Обучение(ОбщегоНазначения).Когда(ОбщегоНазначения.ЭтоДопустимоеИмяПеременной(""));
|
||||
Функция Когда(ИмяМетода, ПараметрыВызова = Неопределено) Экспорт
|
||||
|
||||
Возврат Наблюдать(ИмяМетода, ПараметрыВызова);
|
||||
|
||||
КонецФункции
|
||||
|
||||
// Вернуть.
|
||||
// Указывает, что при соблюдении условий метод должен вернуть переданное значение
|
||||
// Параметры:
|
||||
// Результат - Произвольный - Результат, который должен вернуть метод
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// ОбщийМодуль
|
||||
Функция Вернуть(Результат) Экспорт
|
||||
|
||||
ЗарегистрироватьРеакцию(Новый Структура("ТипДействия, Результат", МокитоСлужебный.ТипыДействийРеакций().ВернутьРезультат, Результат));
|
||||
|
||||
Возврат МокитоОбучение;
|
||||
|
||||
КонецФункции
|
||||
|
||||
// Выбросить исключение.
|
||||
// Указывает, что при соблюдении условий метод должен выбросить исключение
|
||||
//
|
||||
// Параметры:
|
||||
// ТекстИсключения - Строка
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// ОбщийМодуль
|
||||
Функция ВыброситьИсключение(ТекстИсключения) Экспорт
|
||||
|
||||
ЗарегистрироватьРеакцию(Новый Структура("ТипДействия, Ошибка", МокитоСлужебный.ТипыДействийРеакций().ВыброситьИсключение, ТекстИсключения));
|
||||
|
||||
Возврат МокитоОбучение;
|
||||
|
||||
КонецФункции
|
||||
|
||||
// Пропустить.
|
||||
// Указывает, что при соблюдении условий метод не должен выполняться, его вызов пропускается
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// ОбщийМодуль
|
||||
Функция Пропустить() Экспорт
|
||||
|
||||
ЗарегистрироватьРеакцию(Новый Структура("ТипДействия", МокитоСлужебный.ТипыДействийРеакций().Пропустить));
|
||||
|
||||
Возврат МокитоОбучение;
|
||||
|
||||
КонецФункции
|
||||
|
||||
// Выполнить метод.
|
||||
// Указывает, что при соблюдении условий метод должен выполняться
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// ОбщийМодуль
|
||||
Функция ВыполнитьМетод() Экспорт
|
||||
|
||||
ЗарегистрироватьРеакцию(Новый Структура("ТипДействия", МокитоСлужебный.ТипыДействийРеакций().ВызватьОсновнойМетод));
|
||||
|
||||
Возврат МокитоОбучение;
|
||||
|
||||
КонецФункции
|
||||
|
||||
// Прогон
|
||||
// Переводит мокито в режим прогона тестов
|
||||
// Вызов этого метода обязателен перед выполнением тестового прогона метода
|
||||
Процедура Прогон() Экспорт
|
||||
|
||||
Мокито.Прогон();
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
// Экспортные процедуры и функции для служебного использования внутри подсистемы
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
#Область СлужебныйПрограммныйИнтерфейс
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
// Процедуры и функции, составляющие внутреннюю реализацию модуля
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
#Область СлужебныеПроцедурыИФункции
|
||||
|
||||
Процедура ЗарегистрироватьПерехватВыражения(ИмяМетода, ПараметрыВызова)
|
||||
|
||||
Объект = ОбучаемыйОбъект();
|
||||
ДанныеПерехвата = МокитоСлужебный.ДанныеПерехвата(Объект);
|
||||
|
||||
Если ДанныеПерехвата = Неопределено Тогда
|
||||
Сообщение = СтрШаблон("Не найдены настройки перехвата для %1. Необходимо предварительно вызвать метод Мокито.Обучение(Объект)", Объект);
|
||||
ВызватьИсключение Сообщение;
|
||||
КонецЕсли;
|
||||
|
||||
Если МокитоСлужебный.ЭтоСтруктураВызоваМетода(ИмяМетода) Тогда
|
||||
СтруктураВызоваМетода = ИмяМетода;
|
||||
Иначе
|
||||
СтруктураВызоваМетода = МокитоСлужебный.СтруктураВызоваМетода(Объект, ИмяМетода, ПараметрыВызова);
|
||||
КонецЕсли;
|
||||
|
||||
Методы = ДанныеПерехвата.Методы;
|
||||
|
||||
Если НЕ Методы.Свойство(СтруктураВызоваМетода.ИмяМетода) Тогда
|
||||
Методы.Вставить(СтруктураВызоваМетода.ИмяМетода, ОписаниеПараметровПерехватаМетода());
|
||||
КонецЕсли;
|
||||
|
||||
Реакция = СоздатьОписаниеУсловнойРеакции(СтруктураВызоваМетода);
|
||||
|
||||
Методы[СтруктураВызоваМетода.ИмяМетода].Реакции.Добавить(Реакция);
|
||||
|
||||
ПараметрыОбучения().РеакцияТекущегоВыражения = Реакция;
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Функция ОписаниеПараметровПерехватаМетода()
|
||||
|
||||
Возврат Новый Структура("Реакции", Новый Массив);
|
||||
|
||||
КонецФункции
|
||||
|
||||
#Область Реакции
|
||||
|
||||
Функция СоздатьОписаниеУсловнойРеакции(СтруктураВызоваМетода)
|
||||
|
||||
Возврат Новый Структура("УсловиеРеакции, Действие", УсловиеРеакции(СтруктураВызоваМетода), Неопределено);
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция УсловиеРеакции(СтруктураВызоваМетода)
|
||||
|
||||
Параметры = СтруктураВызоваМетода.Параметры;
|
||||
|
||||
Если Параметры = Неопределено Тогда
|
||||
Возврат Неопределено;
|
||||
КонецЕсли;
|
||||
|
||||
Условия = Новый Массив;
|
||||
|
||||
Для Каждого Параметр Из Параметры Цикл
|
||||
|
||||
Если МокитоСлужебный.ЭтоМаскаПарамера(Параметр) Тогда
|
||||
|
||||
Условия.Добавить(Параметр);
|
||||
|
||||
Иначе
|
||||
|
||||
Условия.Добавить(Новый Структура("Режим, Значение, Приоритет", "Значение", Параметр, 10));
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
КонецЦикла;
|
||||
|
||||
Возврат Условия;
|
||||
|
||||
КонецФункции
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
#Область Параметры
|
||||
|
||||
Функция ОбучаемыйОбъект()
|
||||
|
||||
ПараметрыОбучения = ПараметрыОбучения();
|
||||
|
||||
Возврат ПараметрыОбучения.ОбучаемыйОбъект;
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция ПараметрыОбучения()
|
||||
|
||||
Параметры = МокитоСлужебный.Настройки().ПараметрыОбучения;
|
||||
|
||||
Возврат Параметры;
|
||||
|
||||
КонецФункции
|
||||
|
||||
Процедура УстановитьПараметрыОбучения(Объект)
|
||||
|
||||
ПараметрыОбучения = Новый Структура("ОбучаемыйОбъект, РеакцияТекущегоВыражения", Объект, Неопределено);
|
||||
|
||||
МокитоСлужебный.Настройки().ПараметрыОбучения = ПараметрыОбучения;
|
||||
МокитоСлужебный.ЗарегистрироватьПерехватОбъекта(Объект);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура ЗарегистрироватьРеакцию(Действие)
|
||||
|
||||
Действие.Вставить("Обработано", Ложь);
|
||||
|
||||
ПараметрыОбучения().РеакцияТекущегоВыражения.Действие = Действие;
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
#КонецОбласти
|
@ -0,0 +1,11 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<mdclass:CommonModule xmlns:mdclass="http://g5.1c.ru/v8/dt/metadata/mdclass" uuid="e25ecfb4-02ca-4764-84e7-dfc8cdaa02dc">
|
||||
<name>МокитоОбучение</name>
|
||||
<synonym>
|
||||
<key>ru</key>
|
||||
<value>Мокито обучение</value>
|
||||
</synonym>
|
||||
<clientManagedApplication>true</clientManagedApplication>
|
||||
<server>true</server>
|
||||
<clientOrdinaryApplication>true</clientOrdinaryApplication>
|
||||
</mdclass:CommonModule>
|
272
src/cfe/yaxunit/src/CommonModules/МокитоПроверки/Module.bsl
Normal file
272
src/cfe/yaxunit/src/CommonModules/МокитоПроверки/Module.bsl
Normal file
@ -0,0 +1,272 @@
|
||||
//©///////////////////////////////////////////////////////////////////////////©//
|
||||
//
|
||||
// Copyright 2021-2022 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.
|
||||
//
|
||||
//©///////////////////////////////////////////////////////////////////////////©//
|
||||
|
||||
///////////////////////////////////////////////////////////////////
|
||||
// ПрограммныйИнтерфейс
|
||||
// Экспортные процедуры и функции для прикладного использования
|
||||
///////////////////////////////////////////////////////////////////
|
||||
#Область ПрограммныйИнтерфейс
|
||||
|
||||
// Проверить.
|
||||
// Переводит мокито в режим проверки вызовов
|
||||
// Параметры:
|
||||
// Объект - Произвольный - Устанавливает проверяемый объект, вызовы методов которого будем проверять
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// ОбщийМодуль
|
||||
Функция Проверить(Объект) Экспорт
|
||||
|
||||
УстановитьПараметрыПроверки(Объект);
|
||||
Возврат МокитоПроверки;
|
||||
|
||||
КонецФункции
|
||||
|
||||
// Количество вызовов.
|
||||
// Считает вызовы метода по переданным параметрам
|
||||
// Параметры:
|
||||
// ИмяМетода - Строка - Имя метода проверяемого объекта
|
||||
// - Произвольный - Вызов метода проверяемого объекта
|
||||
// ПараметрыВызова - Массив из Произвольный - Параметры вызова метода проверяемого объекта, необходим при указании имени метода
|
||||
// Возвращаемое значение:
|
||||
// ОбщийМодуль
|
||||
Функция КоличествоВызовов(ИмяМетода = Неопределено, ПараметрыВызова = Неопределено) Экспорт
|
||||
|
||||
Параметры = ПараметрыПроверки();
|
||||
|
||||
Если МокитоСлужебный.ЭтоСтруктураВызоваМетода(ИмяМетода) Тогда
|
||||
СтруктураВызоваМетода = ИмяМетода;
|
||||
Иначе
|
||||
СтруктураВызоваМетода = МокитоСлужебный.СтруктураВызоваМетода(Параметры.ПроверяемыйОбъект, ИмяМетода, ПараметрыВызова);
|
||||
КонецЕсли;
|
||||
|
||||
Если СтруктураВызоваМетода.Объект <> Параметры.ПроверяемыйОбъект Тогда
|
||||
ВызватьИсключение "Установлен другой проверяемый объект";
|
||||
КонецЕсли;
|
||||
|
||||
Параметры.СтруктураВызоваМетода = СтруктураВызоваМетода;
|
||||
|
||||
Возврат МокитоПроверки;
|
||||
|
||||
КонецФункции
|
||||
|
||||
// Равно.
|
||||
// Проверяет подобранные вызовы. Их количество должно быть равно переданному значение, иначе вызывается исключение
|
||||
// Параметры:
|
||||
// Количество - Число - Ожидаемое количество вызовов
|
||||
// Описание - Строка - Описание проверки, необходимо для идентификации упавшей проверки
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// ОбщийМодуль
|
||||
Функция Равно(Количество, Знач Описание = Неопределено) Экспорт
|
||||
|
||||
Статистика = СтатистикаВызовов();
|
||||
ЮТУтверждения
|
||||
.Что(Статистика, Описание)
|
||||
.ИмеющееПредставление(ОписаниеПроверяемогоОбъекта())
|
||||
.ИмеетДлину(Количество);
|
||||
|
||||
Возврат МокитоПроверки;
|
||||
|
||||
КонецФункции
|
||||
|
||||
// Больше.
|
||||
// Проверяет подобранные вызовы. Их количество должно быть больше переданного значения, иначе вызывается исключение
|
||||
// Параметры:
|
||||
// Количество - Число
|
||||
// Описание - Строка - Описание проверки, необходимо для идентификации упавшей проверки
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// ОбщийМодуль
|
||||
Функция Больше(Количество, Знач Описание = Неопределено) Экспорт
|
||||
|
||||
Статистика = СтатистикаВызовов();
|
||||
ЮТУтверждения
|
||||
.Что(Статистика, Описание)
|
||||
.ИмеющееПредставление(ОписаниеПроверяемогоОбъекта())
|
||||
.ИмеетДлинуБольше(Количество);
|
||||
|
||||
Возврат МокитоПроверки;
|
||||
|
||||
КонецФункции
|
||||
|
||||
// Меньше.
|
||||
// Проверяет подобранные вызовы. Их количество должно быть меньше переданного значения, иначе вызывается исключение
|
||||
// Параметры:
|
||||
// Количество - Число
|
||||
// Описание - Строка - Описание проверки, необходимо для идентификации упавшей проверки
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// ОбщийМодуль
|
||||
Функция Меньше(Количество, Знач Описание = Неопределено) Экспорт
|
||||
|
||||
Статистика = СтатистикаВызовов();
|
||||
ЮТУтверждения
|
||||
.Что(Статистика, Описание)
|
||||
.ИмеющееПредставление(ОписаниеПроверяемогоОбъекта())
|
||||
.ИмеетДлинуМеньше(Количество);
|
||||
|
||||
Возврат МокитоПроверки;
|
||||
|
||||
КонецФункции
|
||||
|
||||
// Заполнено.
|
||||
// Проверяет, что есть вызовы метода, соответствующие условию
|
||||
// Параметры:
|
||||
// Описание - Строка - Описание проверки, необходимо для идентификации упавшей проверки
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// ОбщийМодуль
|
||||
Функция Заполнено(Знач Описание = Неопределено) Экспорт
|
||||
|
||||
Статистика = СтатистикаВызовов(Истина);
|
||||
ЮТУтверждения
|
||||
.Что(Статистика, Описание)
|
||||
.ИмеющееПредставление(ОписаниеПроверяемогоОбъекта())
|
||||
.Заполнено();
|
||||
|
||||
Возврат МокитоПроверки;
|
||||
|
||||
КонецФункции
|
||||
|
||||
// Пусто.
|
||||
// Проверяет, что нет вызовов метода, соответствующих условию
|
||||
// Параметры:
|
||||
// Описание - Строка - Описание проверки, необходимо для идентификации упавшей проверки
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// ОбщийМодуль
|
||||
Функция Пусто(Знач Описание = Неопределено) Экспорт
|
||||
|
||||
Статистика = СтатистикаВызовов(Истина);
|
||||
ЮТУтверждения
|
||||
.Что(Статистика, Описание)
|
||||
.ИмеющееПредставление(ОписаниеПроверяемогоОбъекта())
|
||||
.НеЗаполнено();
|
||||
|
||||
Возврат МокитоПроверки;
|
||||
|
||||
КонецФункции
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
// Экспортные процедуры и функции для служебного использования внутри подсистемы
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
#Область СлужебныйПрограммныйИнтерфейс
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
// Процедуры и функции, составляющие внутреннюю реализацию модуля
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
#Область СлужебныеПроцедурыИФункции
|
||||
|
||||
#Область Параметры
|
||||
|
||||
// Параметры проверки.
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Структура:
|
||||
// * ПроверяемыйОбъект - Произвольный
|
||||
// * СтруктураВызоваМетода - см. МокитоСлужебный.СтруктураВызоваМетода
|
||||
Функция ПараметрыПроверки()
|
||||
|
||||
Параметры = МокитоСлужебный.Настройки().ПараметрыПроверки;
|
||||
|
||||
Возврат Параметры;
|
||||
|
||||
КонецФункции
|
||||
|
||||
Процедура УстановитьПараметрыПроверки(Объект = Неопределено, СтруктураВызоваМетода = Неопределено)
|
||||
|
||||
ПараметрыОбучения = Новый Структура("ПроверяемыйОбъект, СтруктураВызоваМетода", Объект, СтруктураВызоваМетода);
|
||||
|
||||
МокитоСлужебный.Настройки().ПараметрыПроверки = ПараметрыОбучения;
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
Функция СтатистикаВызовов(Первый = Ложь)
|
||||
|
||||
Параметры = ПараметрыПроверки();
|
||||
СтруктураВызоваМетода = Параметры.СтруктураВызоваМетода;
|
||||
|
||||
ВызовыМетода = МокитоСлужебный.СтатистикаВызовов(СтруктураВызоваМетода.Объект, СтруктураВызоваМетода.ИмяМетода);
|
||||
|
||||
Если ВызовыМетода = Неопределено Тогда
|
||||
Возврат Новый Массив();
|
||||
КонецЕсли;
|
||||
|
||||
Если ЗначениеЗаполнено(СтруктураВызоваМетода.Параметры) Тогда
|
||||
|
||||
Результат = Новый Массив();
|
||||
|
||||
Для Каждого ВызовМетода Из ВызовыМетода Цикл
|
||||
|
||||
Если ВызовМетода.Параметры.Количество() < СтруктураВызоваМетода.Параметры.Количество() Тогда
|
||||
ВызватьИсключение "Сигнатура метода содержит меньше параметров";
|
||||
КонецЕсли;
|
||||
|
||||
КоличествоПараметров = СтруктураВызоваМетода.Параметры.Количество();
|
||||
Успешно = Истина;
|
||||
|
||||
Для Инд = 0 По КоличествоПараметров - 1 Цикл
|
||||
|
||||
Параметр = ВызовМетода.Параметры[Инд];
|
||||
Условие = СтруктураВызоваМетода.Параметры[Инд];
|
||||
|
||||
Если МокитоСлужебный.ЭтоМаскаПарамера(Условие) Тогда
|
||||
Успешно = МокитоСлужебный.ПроверитьПараметр(Параметр, Условие);
|
||||
Иначе
|
||||
Успешно = Параметр = Условие;
|
||||
КонецЕсли;
|
||||
|
||||
Если НЕ Успешно Тогда
|
||||
Прервать;
|
||||
КонецЕсли;
|
||||
|
||||
КонецЦикла;
|
||||
|
||||
Если Успешно Тогда
|
||||
Результат.Добавить(ВызовМетода);
|
||||
Если Первый Тогда
|
||||
Прервать;
|
||||
КонецЕсли;
|
||||
КонецЕсли;
|
||||
|
||||
КонецЦикла;
|
||||
|
||||
ВызовыМетода = Результат;
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
Возврат ВызовыМетода;
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция ОписаниеПроверяемогоОбъекта()
|
||||
|
||||
СтруктураВызоваМетода = ПараметрыПроверки().СтруктураВызоваМетода;
|
||||
Объект = СтруктураВызоваМетода.Объект;
|
||||
ПредставлениеТипа = ЮТОбщий.ПредставлениеТипа(ТипЗнч(Объект));
|
||||
Возврат СтрШаблон(" - вызовы метода `%1(%2).%3`,", Объект, ПредставлениеТипа, СтруктураВызоваМетода.ИмяМетода);
|
||||
|
||||
КонецФункции
|
||||
|
||||
#КонецОбласти
|
@ -0,0 +1,11 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<mdclass:CommonModule xmlns:mdclass="http://g5.1c.ru/v8/dt/metadata/mdclass" uuid="015f5fd3-8e18-4bb8-9c69-63c1569592ac">
|
||||
<name>МокитоПроверки</name>
|
||||
<synonym>
|
||||
<key>ru</key>
|
||||
<value>Мокито проверки</value>
|
||||
</synonym>
|
||||
<clientManagedApplication>true</clientManagedApplication>
|
||||
<server>true</server>
|
||||
<clientOrdinaryApplication>true</clientOrdinaryApplication>
|
||||
</mdclass:CommonModule>
|
512
src/cfe/yaxunit/src/CommonModules/МокитоСлужебный/Module.bsl
Normal file
512
src/cfe/yaxunit/src/CommonModules/МокитоСлужебный/Module.bsl
Normal file
@ -0,0 +1,512 @@
|
||||
//©///////////////////////////////////////////////////////////////////////////©//
|
||||
//
|
||||
// Copyright 2021-2022 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.
|
||||
//
|
||||
//©///////////////////////////////////////////////////////////////////////////©//
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
// Экспортные процедуры и функции для служебного использования внутри подсистемы
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
#Область СлужебныйПрограммныйИнтерфейс
|
||||
|
||||
Функция Включен() Экспорт
|
||||
|
||||
Возврат ЮТКонтекст.ДанныеКонтекста() <> Неопределено;
|
||||
|
||||
КонецФункции
|
||||
|
||||
Процедура УстановитьРежим(Режим) Экспорт
|
||||
|
||||
Контекст = Настройки();
|
||||
Контекст.Режим = Режим;
|
||||
ОчиститьСлужебныеПараметры();
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Функция Настройки() Экспорт
|
||||
|
||||
Настройки = ЮТКонтекст.ЗначениеКонтекста(КлючНастроек());
|
||||
|
||||
Если Настройки = Неопределено Тогда
|
||||
ВызватьИсключение "Что-то пошло не так, настройки Мокито не инициализированы";
|
||||
КонецЕсли;
|
||||
|
||||
Возврат Настройки;
|
||||
|
||||
КонецФункции
|
||||
|
||||
#Область СтруктурыДанных
|
||||
|
||||
Функция РежимыРаботы() Экспорт
|
||||
|
||||
Режимы = Новый Структура();
|
||||
Режимы.Вставить("Обучение", "Обучение");
|
||||
Режимы.Вставить("Тестирование", "Тестирование");
|
||||
Режимы.Вставить("Проверка", "Проверка");
|
||||
|
||||
Возврат Новый ФиксированнаяСтруктура(Режимы);
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция ТипыДействийРеакций() Экспорт
|
||||
|
||||
ТипыРеакций = Новый Структура();
|
||||
ТипыРеакций.Вставить("ВернутьРезультат", "ВернутьРезультат");
|
||||
ТипыРеакций.Вставить("ВыброситьИсключение", "ВыброситьИсключение");
|
||||
ТипыРеакций.Вставить("Пропустить", "Пропустить");
|
||||
ТипыРеакций.Вставить("ВызватьОсновнойМетод", "ВызватьОсновнойМетод");
|
||||
|
||||
Возврат Новый ФиксированнаяСтруктура(ТипыРеакций);
|
||||
|
||||
КонецФункции
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
Функция АнализВызова(Объект, ИмяМетода, ПараметрыМетода, ПрерватьВыполнение) Экспорт
|
||||
|
||||
ПрерватьВыполнение = Ложь;
|
||||
|
||||
Если НЕ Включен() Тогда
|
||||
Возврат Неопределено;
|
||||
КонецЕсли;
|
||||
|
||||
Настройки = Настройки();
|
||||
|
||||
ПараметрыПерехвата = ДанныеПерехвата(Объект);
|
||||
|
||||
Если ПараметрыПерехвата = Неопределено Тогда
|
||||
Возврат Неопределено;
|
||||
КонецЕсли;
|
||||
|
||||
РежимыРаботы = РежимыРаботы();
|
||||
|
||||
СтруктураВызоваМетода = СтруктураВызоваМетода(Объект, ИмяМетода, ПараметрыМетода);
|
||||
|
||||
Если Настройки.Режим = РежимыРаботы.Обучение ИЛИ Настройки.Режим = РежимыРаботы.Проверка Тогда
|
||||
|
||||
ПрерватьВыполнение = Истина;
|
||||
Возврат СтруктураВызоваМетода;
|
||||
|
||||
ИначеЕсли Настройки.Режим = РежимыРаботы.Тестирование Тогда
|
||||
|
||||
ЗарегистрироватьВызовМетода(Настройки, ПараметрыПерехвата, СтруктураВызоваМетода);
|
||||
Возврат ПерехватитьВызовМетода(ПараметрыПерехвата, СтруктураВызоваМетода, ПрерватьВыполнение);
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
КонецФункции
|
||||
|
||||
// Структура вызова метода.
|
||||
//
|
||||
// Параметры:
|
||||
// Объект - Произвольный - Объект, которому принадлежит метод
|
||||
// ИмяМетода - Строка - Имя вызванного метода
|
||||
// ПараметрыМетода - Массив из Произвольный - Набор параметров, с которыми был вызван метод
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Структура - Информация о вызове метода:
|
||||
// * Объект - Произвольный - Объект, которому принадлежит метод
|
||||
// * ИмяМетода - Строка - Имя вызванного метода
|
||||
// * Параметры - Массив из Произвольный - Набор параметров, с которыми был вызван метод
|
||||
// * Контекст - Строка - Контекст вызова метода
|
||||
Функция СтруктураВызоваМетода(Объект, ИмяМетода, ПараметрыМетода) Экспорт
|
||||
|
||||
Если ЭтоСтруктураВызоваМетода(Объект) Тогда
|
||||
Возврат Объект;
|
||||
КонецЕсли;
|
||||
|
||||
СтруктураВызоваМетода = Новый Структура("Объект, ИмяМетода, Параметры", Объект, ИмяМетода, ПараметрыМетода);
|
||||
СтруктураВызоваМетода.Вставить("Контекст");
|
||||
|
||||
Возврат СтруктураВызоваМетода;
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция ЭтоСтруктураВызоваМетода(Объект) Экспорт
|
||||
|
||||
Возврат ТипЗнч(Объект) = Тип("Структура");
|
||||
|
||||
КонецФункции
|
||||
|
||||
#Область Предикаты
|
||||
|
||||
Функция ТипыУсловийПараметров() Экспорт
|
||||
|
||||
Типы = Новый Структура;
|
||||
Типы.Вставить("Любой", "Любой");
|
||||
Типы.Вставить("Значение", "Значение");
|
||||
Типы.Вставить("Тип", "Тип");
|
||||
Типы.Вставить("ОписаниеТипа", "ОписаниеТипа");
|
||||
|
||||
Возврат Новый ФиксированнаяСтруктура(Типы);
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция ОписаниеМаскиПараметра(ТипУсловия, Приоритет) Экспорт
|
||||
|
||||
МаскаПараметра = Новый Структура("МаскаСопоставленияПараметров", Истина);
|
||||
МаскаПараметра.Вставить("Режим", ТипУсловия);
|
||||
МаскаПараметра.Вставить("Приоритет", Приоритет);
|
||||
|
||||
Возврат МаскаПараметра;
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция ЭтоМаскаПарамера(Параметр) Экспорт
|
||||
|
||||
Возврат ТипЗнч(Параметр) = Тип("Структура") И Параметр.Свойство("МаскаСопоставленияПараметров") И Параметр.МаскаСопоставленияПараметров;
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция ПроверитьПараметр(Параметр, Условие) Экспорт
|
||||
|
||||
ТипыУсловий = ТипыУсловийПараметров();
|
||||
Совпадает = Ложь;
|
||||
|
||||
Если Условие.Режим = ТипыУсловий.Любой Тогда
|
||||
|
||||
Совпадает = Истина;
|
||||
|
||||
ИначеЕсли Условие.Режим = ТипыУсловий.Значение Тогда
|
||||
|
||||
Совпадает = Условие.Значение = Параметр;
|
||||
|
||||
ИначеЕсли Условие.Режим = ТипыУсловий.Тип Тогда
|
||||
|
||||
Совпадает = Условие.Тип = ТипЗнч(Параметр);
|
||||
|
||||
ИначеЕсли Условие.Режим = ТипыУсловий.ОписаниеТипа Тогда
|
||||
|
||||
Совпадает = Условие.Тип.СодержитТип(ТипЗнч(Параметр));
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
Возврат Совпадает;
|
||||
|
||||
КонецФункции
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
#Область Перехват
|
||||
|
||||
Функция ПараметрыПерехвата() Экспорт
|
||||
|
||||
Возврат Настройки().Перехват;
|
||||
|
||||
КонецФункции
|
||||
|
||||
// Данные перехвата.
|
||||
//
|
||||
// Параметры:
|
||||
// Объект - Произвольный
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// см. МокитоСлужебный.ОписаниеПараметровПерехватаОбъекта
|
||||
Функция ДанныеПерехвата(Объект) Экспорт
|
||||
|
||||
ПараметрыПерехвата = ПараметрыПерехвата();
|
||||
|
||||
Если ТипЗнч(Объект) = Тип("Структура") Тогда
|
||||
Ключ = Объект.Объект;
|
||||
Иначе
|
||||
Ключ = Объект;
|
||||
КонецЕсли;
|
||||
|
||||
ПараметрыПерехватаОбъекта = ПараметрыПерехвата[Ключ];
|
||||
|
||||
Если ПараметрыПерехватаОбъекта = Неопределено И ЭтоОбъект(Ключ) Тогда
|
||||
ПараметрыПерехватаОбъекта = ПараметрыПерехвата[Ключ.Ссылка];
|
||||
|
||||
Если ПараметрыПерехватаОбъекта = Неопределено Тогда
|
||||
|
||||
ПолноеИмя = СтрРазделить(Ключ.Метаданные().ПолноеИмя(), ".");
|
||||
|
||||
Менеджер = Новый(СтрШаблон("%1Менеджер.%2", ПолноеИмя[0], ПолноеИмя[1]));
|
||||
ПараметрыПерехватаОбъекта = ПараметрыПерехвата[Менеджер];
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
Возврат ПараметрыПерехватаОбъекта;
|
||||
|
||||
КонецФункции
|
||||
|
||||
Процедура ЗарегистрироватьПерехватОбъекта(Знач Объект) Экспорт
|
||||
|
||||
Если ЭтоОбъект(Объект) Тогда
|
||||
Объект = Объект.Ссылка;
|
||||
КонецЕсли;
|
||||
|
||||
ПараметрыПерехвата = ПараметрыПерехвата();
|
||||
ПараметрыПерехвата.Вставить(Объект, ОписаниеПараметровПерехватаОбъекта(Объект));
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Функция ОписаниеПараметровПерехватаОбъекта(Объект) Экспорт
|
||||
|
||||
Возврат Новый Структура("Объект, Методы", Объект, Новый Структура);
|
||||
|
||||
КонецФункции
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
Функция СтатистикаВызовов(Знач Объект, ИмяМетода) Экспорт
|
||||
|
||||
Если ЭтоОбъект(Объект) Тогда
|
||||
Объект = Объект.Ссылка;
|
||||
КонецЕсли;
|
||||
|
||||
Статистика = Настройки().Статистика.Вызовы[Объект];
|
||||
|
||||
Если Статистика = Неопределено ИЛИ НЕ Статистика.Свойство(ИмяМетода) Тогда
|
||||
Возврат Неопределено;
|
||||
КонецЕсли;
|
||||
|
||||
Возврат Статистика[ИмяМетода];
|
||||
|
||||
КонецФункции
|
||||
|
||||
#Область ОбработчикиСобытий
|
||||
|
||||
Процедура ПередКаждымТестом(ОписаниеСобытия) Экспорт
|
||||
|
||||
ИнициализироватьНастройки();
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура ПослеКаждогоТеста(ОписаниеСобытия) Экспорт
|
||||
|
||||
ОчиститьНастройки();
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
// Процедуры и функции, составляющие внутреннюю реализацию модуля
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
#Область СлужебныеПроцедурыИФункции
|
||||
|
||||
#Область ОбработкаВызовов
|
||||
|
||||
// Зарегистрировать вызов метода.
|
||||
//
|
||||
// Параметры:
|
||||
// Настройки - см. ИнициализироватьНастройки
|
||||
// ПараметрыПерехвата - см. ДанныеПерехвата
|
||||
// СтруктураВызоваМетода - см. СтруктураВызоваМетода
|
||||
Процедура ЗарегистрироватьВызовМетода(Настройки, ПараметрыПерехвата, СтруктураВызоваМетода)
|
||||
|
||||
Объект = ПараметрыПерехвата.Объект;
|
||||
ИмяМетода = СтруктураВызоваМетода.ИмяМетода;
|
||||
Статистика = Настройки.Статистика.Вызовы[Объект];
|
||||
|
||||
Если Статистика = Неопределено Тогда
|
||||
|
||||
Статистика = Новый Структура;
|
||||
Настройки.Статистика.Вызовы.Вставить(Объект, Статистика);
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
Если НЕ Статистика.Свойство(ИмяМетода) Тогда
|
||||
|
||||
Статистика.Вставить(ИмяМетода, Новый Массив);
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
Статистика[ИмяМетода].Добавить(СтруктураВызоваМетода);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Функция ПерехватитьВызовМетода(ПараметрыПерехвата, СтруктураВызоваМетода, ПрерватьВыполнение)
|
||||
|
||||
Если НЕ ПараметрыПерехвата.Методы.Свойство(СтруктураВызоваМетода.ИмяМетода) Тогда
|
||||
Возврат Неопределено;
|
||||
КонецЕсли;
|
||||
|
||||
ПараметрыПерехватаМетода = ПараметрыПерехвата.Методы[СтруктураВызоваМетода.ИмяМетода];
|
||||
|
||||
Реакция = НайтиРеакцию(ПараметрыПерехватаМетода, СтруктураВызоваМетода);
|
||||
|
||||
Если Реакция = Неопределено ИЛИ Реакция.Действие = Неопределено Тогда
|
||||
Возврат Неопределено;
|
||||
КонецЕсли;
|
||||
|
||||
ПрерватьВыполнение = Истина;
|
||||
|
||||
ТипыДействий = ТипыДействийРеакций();
|
||||
|
||||
Если Реакция.Действие.ТипДействия = ТипыДействий.ВернутьРезультат Тогда
|
||||
|
||||
Реакция.Действие.Обработано = Истина;
|
||||
Возврат Реакция.Действие.Результат;
|
||||
|
||||
ИначеЕсли Реакция.Действие.ТипДействия = ТипыДействий.ВыброситьИсключение Тогда
|
||||
|
||||
Реакция.Действие.Обработано = Истина;
|
||||
ВызватьИсключение Реакция.Действие.Ошибка;
|
||||
|
||||
ИначеЕсли Реакция.Действие.ТипДействия = ТипыДействий.Пропустить Тогда
|
||||
|
||||
Реакция.Действие.Обработано = Истина;
|
||||
Возврат Неопределено;
|
||||
|
||||
ИначеЕсли Реакция.Действие.ТипДействия = ТипыДействий.ВызватьОсновнойМетод Тогда
|
||||
|
||||
Реакция.Действие.Обработано = Истина;
|
||||
ПрерватьВыполнение = Ложь;
|
||||
|
||||
Иначе
|
||||
|
||||
ВызватьИсключение "Неизвестный тип действия реакции";
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
КонецФункции
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
Функция НайтиРеакцию(ПараметрыПерехватаМетода, СтруктураВызоваМетода)
|
||||
|
||||
Реакция = Неопределено;
|
||||
Приоритет = 0;
|
||||
ПараметрыВызова = СтруктураВызоваМетода.Параметры;
|
||||
|
||||
Для Каждого ВозможнаяРеакция Из ПараметрыПерехватаМетода.Реакции Цикл
|
||||
|
||||
ПриоритетВозможнойРеакции = ПроверитьРеакцию(ВозможнаяРеакция, ПараметрыВызова);
|
||||
|
||||
Если ПриоритетВозможнойРеакции > Приоритет Тогда
|
||||
|
||||
Реакция = ВозможнаяРеакция;
|
||||
Приоритет = ПриоритетВозможнойРеакции;
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
КонецЦикла;
|
||||
|
||||
Возврат Реакция;
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция ПроверитьРеакцию(Реакция, ПараметрыМетода)
|
||||
|
||||
Приоритет = 1;
|
||||
|
||||
Если Реакция.УсловиеРеакции = Неопределено Тогда
|
||||
Возврат Приоритет;
|
||||
КонецЕсли;
|
||||
|
||||
Для Инд = 0 По Реакция.УсловиеРеакции.ВГраница() Цикл
|
||||
|
||||
Если НЕ ПроверитьПараметр(ПараметрыМетода[Инд], Реакция.УсловиеРеакции[Инд]) Тогда
|
||||
|
||||
Возврат 0;
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
Приоритет = Приоритет + Реакция.УсловиеРеакции[Инд].Приоритет;
|
||||
|
||||
КонецЦикла;
|
||||
|
||||
Возврат Приоритет;
|
||||
|
||||
КонецФункции
|
||||
|
||||
#Область Настройки
|
||||
|
||||
Процедура ИнициализироватьНастройки() Экспорт
|
||||
|
||||
Настройки = Новый Структура;
|
||||
Настройки.Вставить("Метод");
|
||||
Настройки.Вставить("Реакция");
|
||||
Настройки.Вставить("Настройки");
|
||||
Настройки.Вставить("Перехват", Новый Соответствие);
|
||||
Настройки.Вставить("Режим", "НеУстановлен");
|
||||
Настройки.Вставить("Статистика", Новый Структура("Вызовы", Новый Соответствие));
|
||||
|
||||
Настройки.Вставить("ПараметрыОбучения", Неопределено);
|
||||
Настройки.Вставить("ПараметрыПроверки", Неопределено);
|
||||
|
||||
ЮТКонтекст.УстановитьЗначениеКонтекста(КлючНастроек(), Настройки);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура ОчиститьНастройки() Экспорт
|
||||
|
||||
ЮТКонтекст.УстановитьЗначениеКонтекста(КлючНастроек(), Неопределено);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура СброситьПараметры() Экспорт
|
||||
|
||||
ИнициализироватьНастройки();
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Функция КлючНастроек()
|
||||
|
||||
Возврат "Mockito";
|
||||
|
||||
КонецФункции
|
||||
|
||||
Процедура ОчиститьСлужебныеПараметры()
|
||||
|
||||
Настройки = Настройки();
|
||||
|
||||
Настройки.ПараметрыОбучения = Неопределено;
|
||||
Настройки.ПараметрыПроверки = Неопределено;
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
Функция ЭтоСсылка(Значение) Экспорт
|
||||
|
||||
Если Значение <> Неопределено Тогда
|
||||
|
||||
ТипыСсылок = ЮТОбщий.ОписаниеТиповЛюбаяСсылка();
|
||||
Результат = ТипыСсылок.СодержитТип(ТипЗнч(Значение));
|
||||
|
||||
Иначе
|
||||
|
||||
Результат = Ложь;
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
Возврат Результат;
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция ЭтоОбъект(Значение) Экспорт
|
||||
|
||||
Если Значение <> Неопределено И ЮТОбщий.ПеременнаяСодержитСвойство(Значение, "Ссылка") Тогда
|
||||
|
||||
Возврат ЭтоСсылка(Значение.Ссылка);
|
||||
|
||||
Иначе
|
||||
|
||||
Результат = Ложь;
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
Возврат Результат;
|
||||
|
||||
КонецФункции
|
||||
|
||||
#КонецОбласти
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user