
Функция Конт(Конт) Возврат Конт; КонецФункции
Функция Сам() Возврат Конт(Контекст); КонецФункции

Процедура TurboBLВключен() Экспорт
	Сам = Сам();
	Сам.ПроверитьНастройку("EnableTurboBL", 1);
	Сам.ПроверитьНастройку("TurboBL", 1);
КонецПроцедуры

Процедура ПроверитьПолучениеАтрибутаКонтекста(Парам1, Парам3=)
	Делегат=СоздатьОбъект("ДелегатФормы");
	Конт=Делегат.ОткрытьФорму(Парам1,, Парам3);
	Сам().ПроверитьРавенство(Конт.АтрибутМодуля, 1);
КонецПроцедуры

Процедура ТестПолученияАтрибутаМодуляЧерезКонтекстФормы() Экспорт
	ПроверитьПолучениеАтрибутаКонтекста("Отчет.новый1#");
	ПроверитьПолучениеАтрибутаКонтекста("Отчет", КаталогИБ()+"ExtForms\ОтчетНовый1.ert");
	ПроверитьПолучениеАтрибутаКонтекста("Документ.Новый1");
	ПроверитьПолучениеАтрибутаКонтекста("Справочник.Новый2");
КонецПроцедуры

Процедура ПроверитьВызовМетодаКонтекста(Парам1, Парам3=)
	Сам = Сам();
	Делегат=СоздатьОбъект("ДелегатФормы");
	Конт=Делегат.ОткрытьФорму(Парам1,, Парам3);
	
	Сам.ПроверитьРавенство(Конт.АтрибутМодуля, 1);
	Сам.ПроверитьРавенство(Конт.ПолучитьРеквизит_АтрибутМодуля(), 1);
	Конт.УстановитьРеквизит_АтрибутМодуля(2);
	Сам.ПроверитьРавенство(Конт.АтрибутМодуля, 2);
КонецПроцедуры

Процедура ТестВызовМетодаЧерезКонтекст() Экспорт
	ПроверитьВызовМетодаКонтекста("Отчет.новый1#");
	ПроверитьВызовМетодаКонтекста("Отчет", КаталогИБ()+"ExtForms\ОтчетНовый1.ert");
КонецПроцедуры

Процедура Тест_ПолучениеУстановкаСпособаВызоваМетодаКонтекста() Экспорт
	Сам = Сам();
	Конт=Сам.ОткрытьФорму("Отчет#",, КаталогИБ()+"ExtForms\ОтчетНовый1.ert");
	Сам.ПроверитьРавенство(Конт.__ВызыватьМетодыКакСобытия(), 1);
	Сам.ПроверитьРавенство(Конт.__ВызыватьМетодыКакСобытия("0"), 1);
	Сам.ПроверитьРавенство(Конт.__CallMethodsAsEvents(''), 0);
	Сам.ПроверитьРавенство(Конт.__ВызыватьМетодыКакСобытия(1), 0);
	Сам.ПроверитьРавенство(Конт.__ВызыватьМетодыКакСобытия(), 1);
КонецПроцедуры

Процедура ТестВызовВложенногоМетодаКонтекста() Экспорт
	Сам = Сам();
	Конт=Сам.ОткрытьФорму("Отчет",, КаталогИБ()+"ExtForms\ОтчетНовый1.ert");
	
	Сам.ПроверитьРавенство(Конт.АтрибутМодуля, 1);
	Сам.ПроверитьРавенство(Конт.ПолучитьРеквизит_АтрибутМодуля(), 1);
	Сам.ПроверитьРавенство(Конт.ВложенныйВызов(), 1);
КонецПроцедуры

Функция ЗаполнитьТзНаФорме(Конт)
	тзНаФорме=Конт.тзНаФорме;
	тзНаФорме.КоличествоСтрок(2);
	тзНаФорме.ТекущаяСтрока(1);
	Возврат тзНаФорме;
КонецФункции

Процедура Тест_НомерСтрокиТзНаФорме_Совместимость() Экспорт
	Сам = Сам();
	Конт=Сам.ОткрытьФорму("Отчет#",, КаталогИБ()+"ExtForms\ОтчетНовый1.ert");
	//Сам.ПроверитьРавенство(Конт.__ВызыватьМетодыКакСобытия(), 1);
	
	тзНаФорме=ЗаполнитьТзНаФорме(Конт);
	тзНаФорме.ПолучитьСтрокуПоНомеру(2);
	Конт.ПолучитьРеквизит_АтрибутМодуля();
	Сам.ПроверитьРавенство(тзНаФорме.НомерСтроки, 1);
КонецПроцедуры

Процедура Тест_НомерСтрокиТзНаФорме() Экспорт
	Сам = Сам();
	Делегат1=СоздатьОбъект("ДелегатФормы");
	Конт1=Делегат1.ОткрытьФорму("Отчет#",, КаталогИБ()+"ExtForms\ОтчетНовый1.ert");
	Конт1.__ВызыватьМетодыКакСобытия(1);
	
	Делегат2=СоздатьОбъект("ДелегатФормы");
	Конт2=Делегат2.ОткрытьФорму("Отчет#",, КаталогИБ()+"ExtForms\ОтчетНовый1.ert");
	Конт2.__ВызыватьМетодыКакСобытия(0);
	Сам.ПроверитьНеравенство(Конт1, Конт2);
	
	тзНаФорме1=ЗаполнитьТзНаФорме(Конт1);
	тзНаФорме1.ПолучитьСтрокуПоНомеру(2);
	Конт1.ПолучитьРеквизит_АтрибутМодуля();
	Сам.ПроверитьРавенство(тзНаФорме1.НомерСтроки, 1);
	
	тзНаФорме2=ЗаполнитьТзНаФорме(Конт2);
	тзНаФорме2.ПолучитьСтрокуПоНомеру(2);
	Конт2.ПолучитьРеквизит_АтрибутМодуля();
	Сам.ПроверитьРавенство(тзНаФорме2.НомерСтроки, 2);
КонецПроцедуры


// -------------------------------------   --------------------------------------------------------
//
// тесты проверки работы таблиц (ИсходнаяТаблица) после вызова методов контекстов через ТурбоБЛ
//
// -------------------------------------   --------------------------------------------------------

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

Процедура ПроверитьПодключениеВторойТаблицы(Таблица, ТестовыйОбъект)
	ТестовоеВыражение=55;
	Таблица.Вывести();
	ТестовыйОбъект.ПроверитьРавенство(Таблица.Область(1, 1).Текст, "55");
КонецПроцедуры

Процедура Тест_ТаблицаВоВстроенномОтчете() Экспорт
	TurboBLВключен();

	Сам=Сам();

	Путь=КаталогИБ()+"UnitTests\FormEx\ТестИсходнойТаблицы.mxl";
	//Таблица=СоздатьОбъект("Таблица");
	////Сам.ЭмулироватьПадение1С(); Таблица.ИсходнаяТаблица(Путь);
	//Таблица.ИсходнаяТаблица(Путь);
	//ПроверитьПодключениеТаблицы(Таблица, Сам);
	
	Конт = 0;
	Сам().ОткрытьФорму("Отчет.новый1#", Конт);
	Конт = Сам().КонтекстФормы;

	//Таблица = Конт.ПолучитьТаблицу(); // TODO возможно лучше использовать способ без вызова ТурбоБЛ
	Таблица = глТаблица; // TODO возможно лучше использовать способ без вызова ТурбоБЛ
	Таблица.ИсходнаяТаблица(Путь);
	ПроверитьПодключениеТаблицы(Таблица, Сам);
	
	Конт.Сформировать();

	ПроверитьПодключениеТаблицы(Таблица, Сам);
	
	Таблица.ИсходнаяТаблица(Путь);
	ПроверитьПодключениеТаблицы(Таблица, Сам);
	
	Конт.Сформировать();

	ПроверитьПодключениеТаблицы(Таблица, Сам);
	
	Таблица.ИсходнаяТаблица(Путь);
	ПроверитьПодключениеТаблицы(Таблица, Сам);
	
	Конт.Сформировать();

	ПроверитьПодключениеТаблицы(Таблица, Сам);
	
	Таблица.ИсходнаяТаблица(Путь);
	ПроверитьПодключениеТаблицы(Таблица, Сам);
КонецПроцедуры

Процедура Тест_ТаблицаВоВнешнемОтчете() Экспорт
	TurboBLВключен();

	Сам=Сам();

	Путь=КаталогИБ()+"UnitTests\FormEx\ТестИсходнойТаблицы.mxl";
	//Таблица=СоздатьОбъект("Таблица");
	////Сам.ЭмулироватьПадение1С(); Таблица.ИсходнаяТаблица(Путь);
	//Таблица.ИсходнаяТаблица(Путь);
	//ПроверитьПодключениеТаблицы(Таблица, Сам);
	
	Конт = 0;
	Сам().ОткрытьФорму("Отчет#", Конт, КаталогИБ()+"ExtForms\ОтчетНовый1.ert");
	Конт = Сам().КонтекстФормы;

	//Таблица = Конт.ПолучитьТаблицу(); // TODO возможно лучше использовать способ без вызова ТурбоБЛ
	Таблица = глТаблица; // TODO возможно лучше использовать способ без вызова ТурбоБЛ
	Таблица.ИсходнаяТаблица(Путь);
	ПроверитьПодключениеТаблицы(Таблица, Сам);
	
	Конт.Сформировать();

	ПроверитьПодключениеТаблицы(Таблица, Сам);
	
	Таблица.ИсходнаяТаблица(Путь);
	ПроверитьПодключениеТаблицы(Таблица, Сам);
	
	Конт.Сформировать();

	ПроверитьПодключениеТаблицы(Таблица, Сам);
	
	Таблица.ИсходнаяТаблица(Путь);
	ПроверитьПодключениеТаблицы(Таблица, Сам);
	
	Конт.Сформировать();

	ПроверитьПодключениеТаблицы(Таблица, Сам);
	
	Таблица.ИсходнаяТаблица(Путь);
	ПроверитьПодключениеТаблицы(Таблица, Сам);
КонецПроцедуры


Процедура Тест_ТаблицаВоВнешнемОтчете_ИсходнаяТаблицаИзОтчета() Экспорт
	TurboBLВключен();

	Сам=Сам();

	Путь=КаталогИБ()+"UnitTests\FormEx\ТестИсходнойТаблицы.mxl";
	//Таблица=СоздатьОбъект("Таблица");
	////Сам.ЭмулироватьПадение1С(); Таблица.ИсходнаяТаблица(Путь);
	//Таблица.ИсходнаяТаблица(Путь);
	//ПроверитьПодключениеТаблицы(Таблица, Сам);
	
	Конт = 0;
	Сам().ОткрытьФорму("Отчет#", Конт, КаталогИБ()+"ExtForms\ОтчетНовый1.ert");
	Конт = Сам().КонтекстФормы;

	//Таблица = Конт.ПолучитьТаблицу(); // TODO возможно лучше использовать способ без вызова ТурбоБЛ
	Таблица = глТаблица; // TODO возможно лучше использовать способ без вызова ТурбоБЛ
	//Таблица.ИсходнаяТаблица(Путь);
	ПроверитьПодключениеТаблицы(Таблица, Сам);
	
	Конт.Сформировать();
	Конт.Сформировать();
	Конт.Сформировать();

	ПроверитьПодключениеТаблицы(Таблица, Сам);
	
	Конт.Сформировать();
	Конт.Сформировать();
	Конт.Сформировать();

	ПроверитьПодключениеТаблицы(Таблица, Сам);
	
	Конт.Сформировать();
	Конт.Сформировать();
	Конт.Сформировать();

	ПроверитьПодключениеТаблицы(Таблица, Сам);
	
КонецПроцедуры

// копия теста ВыполняемыйМодульТесты::ТестGetMethOfContextДляМодуляВстроенногоОтчета()
Процедура ТестПолучениеМетодовИСвойствИзКонтекстаВстроенногоОтчета() Экспорт
	ВМТесты = СоздатьОбъект("ВыполняемыйМодульТесты");
	ВМТесты.ТестGetMethOfContextДляМодуляВстроенногоОтчета();
КонецПроцедуры	// ТестМодуляФормыОтчета

// копия теста ВыполняемыйМодульТесты::ТестGetMethOfContextДляМодуляВнешнегоОтчета()
Процедура ТестПолучениеМетодовИСвойствИзКонтекстаВнешнегоОтчета() Экспорт
	ВМТесты = СоздатьОбъект("ВыполняемыйМодульТесты");
	ВМТесты.ТестGetMethOfContextДляМодуляВнешнегоОтчета();
КонецПроцедуры	// ТестМодуляФормыОтчета
