﻿// @unit-test:failure
Процедура АсинхронныйТест(Фреймворк) Экспорт
	
	Фреймворк.ЗапретитьВыполнениеШагов();
	
	ДополнительныеПараметры = Новый Структура(
		"ИмяСобытия, Фреймворк",
		"События_ОбработатьРезультатыТеста",
		Фреймворк);
		
	ОбработатьРезультатыТеста = Новый ОписаниеОповещения(
		"ОбработатьРезультатыТеста", ЭтотОбъект, ДополнительныеПараметры);
	ДополнительныеПараметры.Вставить("ОбработатьРезультатыТеста", ОбработатьРезультатыТеста);
	
	ПередаваемыеФайлы = Новый Массив;
	ПередаваемыеФайлы.Добавить("Файл1");
	ПередаваемыеФайлы.Добавить("Файл2");
	
	АсинхронныйТестЗавершение = Новый ОписаниеОповещения(
		"АсинхронныйТестЗавершение", ЭтотОбъект, ДополнительныеПараметры);
	ВыполнитьОбработкуОповещения(АсинхронныйТестЗавершение, ПередаваемыеФайлы);
	
КонецПроцедуры

Процедура АсинхронныйТестЗавершение(ПереданныеФайлы, ДополнительныеПараметры) Экспорт
	
	ПараметрыСерверногоТеста = Новый Структура();
	ПараметрыСерверногоТеста.Вставить("ИмяСобытия", "События_НеизвестноеСобытие");
	Результат = Тест_АсинхронныеВызовыВызовСервера.АсинхронныйТестНаСервере(ПереданныеФайлы, ПараметрыСерверногоТеста);
	Результат.Вставить("Фреймворк", ДополнительныеПараметры.Фреймворк);
	ВыполнитьОбработкуОповещения(ДополнительныеПараметры.ОбработатьРезультатыТеста, Результат);

	ПараметрыСерверногоТеста = Новый Структура();
	ПараметрыСерверногоТеста.Вставить("ИмяСобытия", ДополнительныеПараметры.ИмяСобытия);
	Результат = Тест_АсинхронныеВызовыВызовСервера.АсинхронныйТестНаСервере(ПереданныеФайлы, ПараметрыСерверногоТеста);
	Результат.Вставить("Фреймворк", ДополнительныеПараметры.Фреймворк);
	ВыполнитьОбработкуОповещения(ДополнительныеПараметры.ОбработатьРезультатыТеста, Результат);

	ВыполнитьОбработкуОповещения(ДополнительныеПараметры.ОбработатьРезультатыТеста, Неопределено);
	
КонецПроцедуры

Процедура ОбработатьРезультатыТеста(РезультатТеста, ДополнительныеПараметры) Экспорт
	
	ИмяСобытия	= ДополнительныеПараметры.ИмяСобытия;
	Фреймворк	= ДополнительныеПараметры.Фреймворк;

	Если РезультатТеста = Неопределено Тогда
		Фреймворк.ПродолжитьВыполнениеШагов();
		Возврат;
	КонецЕсли;
	
	Если ИмяСобытия = "События_ОбработатьРезультатыТеста" Тогда
		Если РезультатТеста.ЕстьФайл Тогда
			ТекстСообщения = "Файл передан.";
		Иначе
			ТекстСообщения = "Файл ошибочно непередан.";
		КонецЕсли;
		Фреймворк.ПроверитьВхождениеВКоллекцию(РезультатТеста.ИмяФайла, РезультатТеста.КоллекцияФайлов, ТекстСообщения);
	
	Иначе
		ТекстОшибки = "Неизвестное имя события: " + ИмяСобытия;
		Фреймворк.ДобавитьОшибкуСценария(ТекстОшибки);
		
	КонецЕсли;
	
КонецПроцедуры
