Перем гИндикатор;

Процедура ОбработчикСобытияСПараметром (Параметр)
	гИндикатор = Параметр;
КонецПроцедуры

//-----------------------------------------------------------------------------

Процедура ОбработчикСобытияБезПараметров (Параметр)
КонецПроцедуры

//-----------------------------------------------------------------------------

Процедура ОбработчикСобытияСДвумяПараметрами (Параметр1, Параметр2)
КонецПроцедуры

//-----------------------------------------------------------------------------

Процедура ОбработчикСМодификациейПараметра (Параметр)
	Параметр = гИндикатор;
КонецПроцедуры

//-----------------------------------------------------------------------------

Процедура АвтоСобытие1 (Параметр)
	Параметр = гИндикатор;
КонецПроцедуры

//-----------------------------------------------------------------------------

Процедура СобытиеСДвумяПараметрами (Параметр1, Параметр2)
	гИндикатор = Параметр1 + Параметр2;
КонецПроцедуры

//-----------------------------------------------------------------------------

Процедура СобытиеСТремяПараметрами (Параметр1, Параметр2, Параметр3)
	гИндикатор = Параметр1 + Параметр2 + Параметр3;
КонецПроцедуры

//-----------------------------------------------------------------------------

Процедура СобытиеСЧетырьмяПараметрами (Параметр1, Параметр2, Параметр3, Параметр4)
	гИндикатор = Параметр1 + Параметр2 + Параметр3 + Параметр4;
КонецПроцедуры


//-----------------------------------------------------------------------------

Процедура СобытиеСПятьюПараметрами (Параметр1, Параметр2, Параметр3, Параметр4, Параметр5)
	гИндикатор = Параметр1 + Параметр2 + Параметр3 + Параметр4 + Параметр5;
КонецПроцедуры

//-----------------------------------------------------------------------------

Процедура СобытиеСШестьюПараметрами (Параметр1, Параметр2, Параметр3, Параметр4, Параметр5, Параметр6)
	гИндикатор = Параметр1 + Параметр2 + Параметр3 + Параметр4 + Параметр5 + Параметр6;
КонецПроцедуры

//-----------------------------------------------------------------------------

Процедура СобытиеССемьюПараметрами (Параметр1, Параметр2, Параметр3, Параметр4, Параметр5, Параметр6, Параметр7)
	гИндикатор = Параметр1 + Параметр2 + Параметр3 + Параметр4 + Параметр5 + Параметр6 + Параметр7;
КонецПроцедуры

//-----------------------------------------------------------------------------

Процедура СобытиеСВосемьюПараметрами (Параметр1, Параметр2, Параметр3, Параметр4, Параметр5, Параметр6, Параметр7,
	Параметр8)
	гИндикатор = Параметр1 + Параметр2 + Параметр3 + Параметр4 + Параметр5 + Параметр6 + Параметр7 + Параметр8;
КонецПроцедуры

//-----------------------------------------------------------------------------

Процедура СобытиеБезПараметров ()
	гИндикатор = 1;
КонецПроцедуры

//-----------------------------------------------------------------------------

Процедура тестПодписатьсяНаСобытие () Экспорт
	Если глТестовыйСтенд = 0 Тогда
		Возврат;
	КонецЕсли;
	
	Т = СоздатьОбъект ("ТестерСобытий");
	
	Т.ПодписатьсяНаСобытие ("Тест", "ОбработчикСобытияСПараметром");
	
	ВсеНормально = 0;
	Попытка
		Т.ПодписатьсяНаСобытие ("выпывапыапывапыва", "ОбработчикСобытияСПараметром");
	Исключение
		ВсеНормально = 1;
	КонецПопытки;
	
	Проверить (ВсеНормально);
КонецПроцедуры

//-----------------------------------------------------------------------------

Процедура тестПодписатьсяНаСобытие_НеверныйОбработчик () Экспорт
	Если глТестовыйСтенд = 0 Тогда
		Возврат;
	КонецЕсли;
	
	Т = СоздатьОбъект ("ТестерСобытий");
	
	ВсеНормально = 0;
	
	Попытка
		Т.ПодписатьсяНаСобытие ("Тест", "ывапывапыапыапап");
	Исключение
		ВсеНормально = 1;
	КонецПопытки;
	
	Проверить (ВсеНормально);
КонецПроцедуры

//-----------------------------------------------------------------------------

Процедура тестВызовСобытия () Экспорт
	Если глТестовыйСтенд = 0 Тогда
		Возврат;
	КонецЕсли;
	
	Т = СоздатьОбъект ("ТестерСобытий");
	Т.ПодписатьсяНаСобытие ("Тест", "ОбработчикСобытияСПараметром");
	гИндикатор = 0;
	Т.Test (23);
	ПроверитьРавенство (гИндикатор, 23);
	Т.Test (44);
	ПроверитьРавенство (гИндикатор, 44);
КонецПроцедуры

//-----------------------------------------------------------------------------

Процедура тестВызовСМодификациейАргумента () Экспорт
	Если глТестовыйСтенд = 0 Тогда
		Возврат;
	КонецЕсли;
	
	Т = СоздатьОбъект ("ТестерСобытий");
	Т.ПодписатьсяНаСобытие ("ТестСМодификациейПараметра", "ОбработчикСМодификациейПараметра");
	
	гИндикатор = 10;
	ПроверитьРавенство (Т.ТестСМодификациейПараметра (20), 10);
	
	гИндикатор = 40;
	ПроверитьРавенство (Т.ТестСМодификациейПараметра (50), 40);
КонецПроцедуры

//-----------------------------------------------------------------------------

Процедура тестВызовСобытияВГМ () Экспорт
	Если глТестовыйСтенд = 0 Тогда
		Возврат;
	КонецЕсли;
	
	Т = СоздатьОбъект ("ТестерСобытий");
	Т.ПодписатьсяНаСобытие ("ТестСМодификациейПараметра", "ОбработчикСобытияВГМ", 1);
	
	глИндикатор = 10;
	ПроверитьРавенство (Т.ТестСМодификациейПараметра (20), 10);
	
	глИндикатор = 50;
	ПроверитьРавенство (Т.ТестСМодификациейПараметра (10), 50);
КонецПроцедуры

//-----------------------------------------------------------------------------

Процедура тестОтписатьсяОтСобытия () Экспорт
	Если глТестовыйСтенд = 0 Тогда
		Возврат;
	КонецЕсли;
	
	Т = СоздатьОбъект ("ТестерСобытий");
	Т.ПодписатьсяНаСобытие ("ТестСМодификациейПараметра", "ОбработчикСМодификациейПараметра");
	
	гИндикатор = 10;
	ПроверитьРавенство (Т.ТестСМодификациейПараметра (20), 10);
	
	Т.ОтписатьсяОтСобытия ("ТестСМодификациейПараметра", "ОбработчикСМодификациейПараметра");
	гИндикатор = 50;
	ПроверитьРавенство (Т.ТестСМодификациейПараметра (20), 20);
КонецПроцедуры

//-----------------------------------------------------------------------------

Процедура тестАвтоСобытия () Экспорт
	Если глТестовыйСтенд = 0 Тогда
		Возврат;
	КонецЕсли;
	
	Т = СоздатьОбъект ("ТестерСобытий");
	
	// текущий модуль
	гИндикатор = 30;
	ПроверитьРавенство (Т.ТестАвтоСобытия1 (10), 30);
	
	// ГМ
	//глИндикатор = 10;
	//ПроверитьРавенство (Т.ТестАвтоСобытия2 (50), 10);
КонецПроцедуры

//-----------------------------------------------------------------------------

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

//-----------------------------------------------------------------------------

Процедура тестСобытиеСТремяПараметрами () Экспорт
	Если глТестовыйСтенд = 0 Тогда
		Возврат;
	КонецЕсли;
	
	Т = СоздатьОбъект ("ТестерСобытий");
	Т.ПодписатьсяНаСобытие ("СобытиеСТремяПараметрами", "СобытиеСТремяПараметрами");
	гИндикатор = 0;
	Т.ТестСобытияСТремяПараметрами (2, 3, 4);
	ПроверитьРавенство (гИндикатор, 9);
КонецПроцедуры

//-----------------------------------------------------------------------------

Процедура тестСобытиеСЧетырьмяПараметрами () Экспорт
	Если глТестовыйСтенд = 0 Тогда
		Возврат;
	КонецЕсли;
	
	Т = СоздатьОбъект ("ТестерСобытий");
	Т.ПодписатьсяНаСобытие ("СобытиеСЧетырьмяПараметрами", "СобытиеСЧетырьмяПараметрами");
	гИндикатор = 0;
	Т.ТестСобытияСЧетырьмяПараметрами (2, 3, 4, 5);
	ПроверитьРавенство (гИндикатор, 14);
КонецПроцедуры

//-----------------------------------------------------------------------------

Процедура тестСобытиеСПятьюПараметрами () Экспорт
	Если глТестовыйСтенд = 0 Тогда
		Возврат;
	КонецЕсли;
	
	Т = СоздатьОбъект ("ТестерСобытий");
	Т.ПодписатьсяНаСобытие ("СобытиеСПятьюПараметрами", "СобытиеСПятьюПараметрами");
	гИндикатор = 0;
	Т.ТестСобытияСПятьюПараметрами (2, 3, 4, 5, 6);
	ПроверитьРавенство (гИндикатор, 20);
КонецПроцедуры

//-----------------------------------------------------------------------------

Процедура тестСобытиеСШестьюПараметрами () Экспорт
	Если глТестовыйСтенд = 0 Тогда
		Возврат;
	КонецЕсли;
	
	Т = СоздатьОбъект ("ТестерСобытий");
	Т.ПодписатьсяНаСобытие ("СобытиеСШестьюПараметрами", "СобытиеСШестьюПараметрами");
	гИндикатор = 0;
	Т.ТестСобытияСШестьюПараметрами (2, 3, 4, 5, 6, 7);
	ПроверитьРавенство (гИндикатор, 27);
КонецПроцедуры

//-----------------------------------------------------------------------------

Процедура тестСобытиеССемьюПараметрами () Экспорт
	Если глТестовыйСтенд = 0 Тогда
		Возврат;
	КонецЕсли;
	
	Т = СоздатьОбъект ("ТестерСобытий");
	Т.ПодписатьсяНаСобытие ("СобытиеССемьюПараметрами", "СобытиеССемьюПараметрами");
	гИндикатор = 0;
	Т.ТестСобытияССемьюПараметрами (2, 3, 4, 5, 6, 7, 8);
	ПроверитьРавенство (гИндикатор, 35);
КонецПроцедуры

//-----------------------------------------------------------------------------

Процедура тестСобытиеСВосемьюПараметрами () Экспорт
	Если глТестовыйСтенд = 0 Тогда
		Возврат;
	КонецЕсли;
	
	Т = СоздатьОбъект ("ТестерСобытий");
	Т.ПодписатьсяНаСобытие ("СобытиеСВосемьюПараметрами", "СобытиеСВосемьюПараметрами");
	гИндикатор = 0;
	Т.ТестСобытияСВосемьюПараметрами (2, 3, 4, 5, 6, 7, 8, 9);
	ПроверитьРавенство (гИндикатор, 44);
КонецПроцедуры

//-----------------------------------------------------------------------------

Процедура тестСобытиеБезПараметров () Экспорт
	Если глТестовыйСтенд = 0 Тогда
		Возврат;
	КонецЕсли;
	
	Т = СоздатьОбъект ("ТестерСобытий");
	Т.ПодписатьсяНаСобытие ("СобытиеБезПараметров", "СобытиеБезПараметров");
	гИндикатор = 0;
	Т.ТестСобытияБезПараметров ();
	ПроверитьРавенство (гИндикатор, 1);
КонецПроцедуры
