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

Процедура ТестКоманднаяСтрока() Экспорт
// ENTERPRISE /M /D"G:\1C++\Testing 1C++\" /N /U"G:\1C++\Testing 1C++\" /T"g:\" /Lrus  /Обработка:ЗагрузчикЮнитТестов /Команда:Тестировать /Close 

	Сам = Сам();
	Система = СоздатьОбъект("Система");
	КоманднаяСтрока = Система.КоманднаяСтрока();
	
	Сам().ПроверитьНеравенство(КоманднаяСтрока, "");
КонецПроцедуры

Процедура ТестКоманднаяСтрока1() Экспорт

	Сам = Сам();
	ОбАнализаКоманднойСтроки = СоздатьОбъект("Общие.АнализКоманднойСтроки1С");
	Параметр = ОбАнализаКоманднойСтроки.ПолучитьПараметр( "/D" );
	
	Сам().ПроверитьНеравенство(Параметр, "");
КонецПроцедуры

Процедура ТестКоманднаяСтрокаКоличествоПараметров() Экспорт

	Сам = Сам();
	ОбАнализаКоманднойСтроки = СоздатьОбъект("Общие.АнализКоманднойСтроки1С");
	КолПараметров = ОбАнализаКоманднойСтроки.ПолучитьКоличествоПараметров();
	Сам.ПроверитьБольшеИлиРавно(КолПараметров, 1);
КонецПроцедуры

Процедура ТестПутьПриложения1С() Экспорт
// C:\Program Files\1Cv77\Bin25\1CV7.exe

	Сам = Сам();
	Система = СоздатьОбъект("Система");
	ПутьПриложения1С = Система.ПутьПриложения1С();
	
	Сам.ПроверитьНеравенство(ПутьПриложения1С, "");
	
	Сам.ПроверитьБольше(Найти(Врег(ПутьПриложения1С), ".EXE"), 0);
	Сам.ПроверитьБольше(Найти(Врег(ПутьПриложения1С), "1CV"), 0);
КонецПроцедуры

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

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

	Система=СоздатьОбъект("Система");
	Система.ЗакрытьФорму(Конт2);

	Сам.ПроверитьРавенство(ТипЗначенияСтр(Конт1), "");
	
	Конт3=ОткрытьФормуСПроверкой("Первое открытие");
	Сам.ПроверитьНеравенство(Конт1, Конт3);
	Сам.ПроверитьРавенство(Конт3.ПолеВвода, "");
	Система.ЗакрытьФорму(Конт3);
КонецПроцедуры

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

Процедура ТестЗакрытияФормы_ПроверкаКонтекстФорма_СохраняюВПеременной() Экспорт
	Сам = Сам();
	
	Конт = ОткрытьФормуСПроверкой("Первое открытие");
	
	// проверю форму и реквизит контекста после удаления, 
	// 1С раньше падала при использовании после закрытия формы
	лФорма = Конт.Форма;
	Сам.ПроверитьРавенство(ТипЗначения(лФорма), 100);
	Сам.ПроверитьРавенство(ТипЗначенияСтр(лФорма.Заголовок()), "Строка");

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

Процедура Тест_Уснуть() Экспорт
	Время=_GetPerformanceCounter();
	
	Система=СоздатьОбъект("Система");
	Система.Уснуть(210);
		
	Сам().ПроверитьБольшеИлиРавно(_GetPerformanceCounter()-Время, 200);
КонецПроцедуры
