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

Функция Информатор()
	Возврат СоздатьОбъект("Информатор");
КонецФункции

Процедура ТестСоздатьОбъект() Экспорт
	Объект = Информатор();
КонецПроцедуры

Процедура ТестПолучитьТаблицуМетодовДляСтроки() Экспорт
	Сам = Сам();

	Информатор = Информатор();                    
	табМетодов = Информатор.ПолучитьТаблицуМетодов("Строка");

	Сам.ПроверитьРавенство(ТипЗначенияСтр(табМетодов), "ТаблицаЗначений");
	Сам.ПроверитьРавенство(табМетодов.КоличествоСтрок(), 0);

КонецПроцедуры

Процедура ТестПолучитьТаблицуСвойствДляСтроки() Экспорт
	Сам = Сам();

	Информатор = Информатор();                    
	ТабСвойств = Информатор.ПолучитьТаблицуСвойств("Строка");	

	Сам.ПроверитьРавенство(ТипЗначенияСтр(ТабСвойств), "ТаблицаЗначений");
	Сам.ПроверитьРавенство(ТабСвойств.КоличествоСтрок() , 0);

КонецПроцедуры

Процедура ТестПолучитьТаблицуМетодовДляТаблицыЗначений() Экспорт
	Сам = Сам();

	Таб = СоздатьОбъект("ТаблицаЗначений");

	Информатор = Информатор();                    
	табМетодов = Информатор.ПолучитьТаблицуМетодов(Таб);
//табМетодов.ВыбратьСтроку("");
	
	Сам.ПроверитьРавенство(ТипЗначенияСтр(табМетодов), "ТаблицаЗначений");
	Сам.ПроверитьРавенство(табМетодов.КоличествоСтрок(), 30);
КонецПроцедуры

Процедура ТестПолучитьТаблицуСвойствДляТаблицыЗначений() Экспорт
	Сам = Сам();

	Таб = СоздатьОбъект("ТаблицаЗначений");

	Информатор = Информатор();                    
	ТабСвойств = Информатор.ПолучитьТаблицуСвойств(Таб);	

	Сам.ПроверитьРавенство(ТипЗначенияСтр(ТабСвойств), "ТаблицаЗначений");
	Сам.ПроверитьРавенство(ТабСвойств.КоличествоСтрок() , 1);

КонецПроцедуры

Процедура ТестМетодСуществует() Экспорт
	Сам = Сам();

	Таб = СоздатьОбъект("ТаблицаЗначений");

	Информатор = Информатор();                    

	Сам.ПроверитьРавенство(Информатор.МетодСуществует(Таб, "КоличествоСтрок"), 1);
	Сам.ПроверитьРавенство(Информатор.МетодСуществует(Таб, "НесуществующийМетод"), 0);

КонецПроцедуры


Процедура ТестМетодСуществует_НеверныеПараметры() Экспорт
	Сам = Сам();

	Таб = СоздатьОбъект("ТаблицаЗначений");

	Информатор = Информатор();                    
                                                                  
	Сам.ПроверитьИсключениеДляЛюбогоМетода(Информатор, "МетодСуществует", "НеКонтекст", 1); // 1 парам не контекст
	Сам.ПроверитьИсключениеДляЛюбогоМетода(Информатор, "МетодСуществует", Таб, 1); // 2 парам не строка

КонецПроцедуры

Процедура ТестСвойствоСуществует() Экспорт
	Сам = Сам();

	Таб = СоздатьОбъект("ТаблицаЗначений");

	Информатор = Информатор();                    

	Сам.ПроверитьРавенство(Информатор.СвойствоСуществует(Таб, "НомерСтроки"), 1);
	Сам.ПроверитьРавенство(Информатор.СвойствоСуществует(Таб, "НесуществующееСвойство"), 0);

КонецПроцедуры

Процедура ТестСвойствоСуществует_НеверныеПараметры() Экспорт
	Сам = Сам();

	Таб = СоздатьОбъект("ТаблицаЗначений");

	Информатор = Информатор();                    
                                                                  
	Сам.ПроверитьИсключениеДляЛюбогоМетода(Информатор, "СвойствоСуществует", "НеКонтекст", 1); // 1 парам не контекст
	Сам.ПроверитьИсключениеДляЛюбогоМетода(Информатор, "СвойствоСуществует", Таб, 1); // 2 парам не строка

КонецПроцедуры

Процедура ТестЯвляетсяОбъектом() Экспорт
	Сам = Сам();

	Таб = СоздатьОбъект("ТаблицаЗначений");

	Информатор = Информатор();                    
                                                                  
	Сам.ПроверитьРавенство(Информатор.ЯвляетсяОбъектом(Таб, "ТаблицаЗначений"), 1);
	Сам.ПроверитьРавенство(Информатор.ЯвляетсяОбъектом(Таб, "тАБЛИЦАзНАЧЕНИЙ"), 1);
	Сам.ПроверитьРавенство(Информатор.ЯвляетсяОбъектом("Строка", "Строка"), 1);

	Сам.ПроверитьРавенство(Информатор.ЯвляетсяОбъектом("ТаблицаЗначений", "ТаблицаЗначений"), 1);

КонецПроцедуры

Процедура ТестЯвляетсяОбъектом_НеверныеПараметры() Экспорт
	Сам = Сам();

	Таб = СоздатьОбъект("ТаблицаЗначений");
	Информатор = Информатор();                    
                                                                  
	Сам.ПроверитьРавенство(Информатор.ЯвляетсяОбъектом(Таб, "НеверныйТип"), 0);
	Сам.ПроверитьРавенство(Информатор.ЯвляетсяОбъектом("", "НеверныйТип"), 0);
	Сам.ПроверитьРавенство(Информатор.ЯвляетсяОбъектом(Таб, "СписокЗначений"), 0);

	Сам.ПроверитьРавенство(Информатор.ЯвляетсяОбъектом(1, ""), 0);
                                                           
	Сам.ПроверитьИсключениеДляЛюбогоМетода(Информатор, "ЯвляетсяОбъектом", 1, "СписокЗначений"); // 1 парам не строка и не объект

КонецПроцедуры

Процедура ТестСамЯвляетсяОбъектом() Экспорт
  Сам = Сам();
  Информатор = Информатор();
  
  Сам.ПроверитьРавенство(Информатор.ЯвляетсяОбъектом(Сам, ""),0);

  Сам.ПроверитьРавенство(Информатор.ЯвляетсяОбъектом(Сам, "ИнформаторТесты"),1);
  Сам.ПроверитьРавенство(Информатор.ЯвляетсяОбъектом(Сам, "ТестовыйСлучайСДанными"),1);
  Сам.ПроверитьРавенство(Информатор.ЯвляетсяОбъектом(Сам, "ТестовыйСлучай"),1);

  Сам.ПроверитьРавенство(Информатор.ЯвляетсяОбъектом(Сам, "ВыполняемыйМодуль"),1);

  Сам.ПроверитьРавенство(Информатор.ЯвляетсяОбъектом(Сам, "ТестовыйСлучай1"),0);
КонецПроцедуры


Процедура ТестТестовыйСлучайФормыЯвляетсяОбъектом() Экспорт
  Информатор = Информатор();
  Объект = СоздатьОбъект("ТестовыйСлучайФормы"); // множественное наследование

  Сам().ПроверитьРавенство(Информатор.ЯвляетсяОбъектом(Объект, "ТестовыйСлучай"),1);
  
  Сам().ПроверитьРавенство(Информатор.ЯвляетсяОбъектом(Объект, "ТестовыйСлучайСДанными"),1);

  Сам().ПроверитьРавенство(Информатор.ЯвляетсяОбъектом(Объект, "ДелегатФормы"),1);

  Сам().ПроверитьРавенство(Информатор.ЯвляетсяОбъектом(Объект, "ВыполняемыйМодуль"),1);

  Сам().ПроверитьРавенство(Информатор.ЯвляетсяОбъектом(Объект, "ТестовыйСлучай1"),0);
КонецПроцедуры


Процедура ТестЯвляетсяФункцией() Экспорт
	Сам = Сам();

	Таб = СоздатьОбъект("ТаблицаЗначений");

	Информатор = Информатор();                    
                                                                  
	Сам.ПроверитьРавенство(Информатор.ЯвляетсяФункцией(Таб, "КоличествоКолонок"), 1);
	Сам.ПроверитьРавенство(Информатор.ЯвляетсяФункцией(Таб, "кОЛИЧЕСТВОкОЛОНОК"), 1);

	Сам.ПроверитьРавенство(Информатор.ЯвляетсяФункцией(Таб, "УдалитьСтроку"), 0);
	Сам.ПроверитьРавенство(Информатор.ЯвляетсяФункцией(Таб, "уДАЛИТЬсТРОКУ"), 0);

КонецПроцедуры

Процедура ТестЯвляетсяФункцией_ДляКОП() Экспорт
	Сам = Сам();

	Объект = СоздатьОбъект("ООППредок");

	Информатор = Информатор();                    
                                                                  
	Сам.ПроверитьРавенство(Информатор.ЯвляетсяФункцией(Объект, "ОткрытаяФункция"), 1);
	Сам.ПроверитьРавенство(Информатор.ЯвляетсяФункцией(Объект, "оТКРЫТАЯфУНКЦИЯ"), 1);

	Сам.ПроверитьРавенство(Информатор.ЯвляетсяФункцией(Объект, "ОткрытаяПроцедура"), 0);
	Сам.ПроверитьРавенство(Информатор.ЯвляетсяФункцией(Объект, "оТКРЫТАЯпРОЦЕДУРА"), 0);

КонецПроцедуры

Процедура ТестЯвляетсяФункцией_НеверныеПараметры() Экспорт
	Сам = Сам();

	Таб = СоздатьОбъект("ТаблицаЗначений");
	Информатор = Информатор();                    
                                                                  
	Сам.ПроверитьРавенство(Информатор.ЯвляетсяОбъектом(Таб, "НеверныйМетод"), 0);
	Сам.ПроверитьРавенство(Информатор.ЯвляетсяОбъектом("", "НеверныйТип"), 0);
                                                           
	Сам.ПроверитьИсключениеДляЛюбогоМетода(Информатор, "ЯвляетсяОбъектом", 1, "СписокЗначений"); // 1 парам не строка и не объект

КонецПроцедуры

Процедура ТестКоманднаяСтрока() Экспорт
// 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);
КонецПроцедуры

Процедура ТестТипЗначенияСтрВнутр() Экспорт
	Сам = Сам();
	Информатор = Информатор();                    

	Объект = СоздатьОбъект("Документ");
	ТипОбъекта = Информатор.ТипЗначенияСтрВнутр(Объект);
	Сам.ПроверитьРавенство(ТипОбъекта, "CDocContext");

	Объект = СоздатьОбъект("Документ.Новый1");
	ТипОбъекта = Информатор.ТипЗначенияСтрВнутр(Объект);
	Сам.ПроверитьРавенство(ТипОбъекта, "CDocContext");

	Объект = СоздатьОбъект("Справочник");
	ТипОбъекта = Информатор.ТипЗначенияСтрВнутр(Объект);
	Сам.ПроверитьРавенство(ТипОбъекта, "CSubcContext");

	Объект = СоздатьОбъект("Справочник.Новый2");
	ТипОбъекта = Информатор.ТипЗначенияСтрВнутр(Объект);
	Сам.ПроверитьРавенство(ТипОбъекта, "CSubcContext");

	//Объект = СоздатьОбъект("Регистр.Новый1");
	//ТипОбъекта = Информатор.ТипЗначенияСтрВнутр(Объект);
	//Сам.ПроверитьРавенство(ТипОбъекта, "CRegActContext");

	Объект = СоздатьОбъект("Регистры");
	ТипОбъекта = ТипЗначенияСтр(Объект);
	Сам.ПроверитьРавенство(ТипОбъекта, "НеизвестныйОбъект"); // невозможно получить

	ТипОбъекта = Информатор.ТипЗначенияСтрВнутр(Объект);
	Сам.ПроверитьРавенство(ТипОбъекта, "CAllRegsContext");
КонецПроцедуры


Процедура ТестТипЗначенияСтрВнутрНеверныеПараметры() Экспорт
	Сам = Сам();
	Информатор = Информатор();                    

	Объект = 1;
	Сам.ПроверитьИсключениеДляЛюбогоМетода(Информатор, "ТипЗначенияСтрВнутр", Объект); //ТипОбъекта = Информатор.ТипЗначенияСтрВнутр(Объект);

	Объект = "1";
	Сам.ПроверитьИсключениеДляЛюбогоМетода(Информатор, "ТипЗначенияСтрВнутр", Объект); //ТипОбъекта = Информатор.ТипЗначенияСтрВнутр(Объект);
КонецПроцедуры