Перем миф;
Перем текОптимизация, текПроверкаТипов, текОтладка;

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

Процедура Сетап() Экспорт
	миф=СоздатьОбъект("MetaInfoClasses");
	миф.ПолучитьТекУстановки(текОптимизация, текПроверкаТипов, текОтладка);
КонецПроцедуры

Процедура Сброс() Экспорт
	миф.УстановитьТекУстановки(текОптимизация, текПроверкаТипов, текОтладка);
КонецПроцедуры

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

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

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

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

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

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

Процедура Метод1_СПараметромПоУмолчанию(Список) Экспорт
	Сам().Метод2_СПараметромПоУмолчанию(Список);
КонецПроцедуры

Процедура Метод2_СПараметромПоУмолчанию(Список) Экспорт
КонецПроцедуры

Процедура Метод3_СПараметромПоУмолчанию(Объект) Экспорт
КонецПроцедуры

Процедура Метод4_СПараметромПоУмолчанию(Объект) Экспорт
КонецПроцедуры

Процедура Метод5_СПараметромПоУмолчанию(Объект) Экспорт
КонецПроцедуры

Процедура Метод6_СПараметромПоУмолчанию(Объект) Экспорт
КонецПроцедуры

Процедура Тест_ПроверкиТиповПараметров() Экспорт
	Сам=Сам();
	миф.УстановитьТекУстановки(, 1,);
	Сам.ПроверитьИсключение(Сам, "Метод2_СПараметромПоУмолчанию", "Строка");
	Сам.Метод3_СПараметромПоУмолчанию();
	Сам.ПроверитьИсключение(Сам, "Метод4_СПараметромПоУмолчанию");
	Сам.ПроверитьИсключение(Сам, "Метод5_СПараметромПоУмолчанию");
//!!!!
Сам.ПропуститьТест();
	Сам.ПроверитьИсключение(Сам, "Метод6_СПараметромПоУмолчанию");
КонецПроцедуры

Процедура Тест_ПередачаПараметраПоУмолчанию() Экспорт
	миф.УстановитьТекУстановки(, 1,);
	Сам().Метод1_СПараметромПоУмолчанию();
КонецПроцедуры

Процедура Метод1_СПараметромНеопределенногоТипа(Тип, Значение, Парам) Экспорт
	Тип = ТипЗначенияСтр(Парам);
	Значение = Парам;
КонецПроцедуры

Процедура Метод2_СПараметромНеопределенногоТипа(Тип, Значение, Парам) Экспорт
	Тип = ТипЗначенияСтр(Парам);
	Значение = Парам;
КонецПроцедуры

Процедура Тест_ПередачаПараметраПоУмолчанию_НеопределенныйТип1() Экспорт
Перем Тип, Значение;

	Сам=Сам();
	миф.УстановитьТекУстановки(, 0,);
	
	Сам.Метод1_СПараметромНеопределенногоТипа(Тип, Значение);
//!!!!
Сам.ПропуститьТест();
	Сам.ПроверитьРавенство(Тип, "Строка");
	Сам.ПроверитьРавенство(Значение, "");
КонецПроцедуры

Процедура Тест_ПередачаПараметраПоУмолчанию_НеопределенныйТип2() Экспорт
Перем Тип, Значение;
	
	Сам=Сам();
	миф.УстановитьТекУстановки(, 0,);
	Сам.Метод2_СПараметромНеопределенногоТипа(Тип, Значение);
//!!!!
Сам.ПропуститьТест();
	Сам.ПроверитьРавенство(Тип, "Строка");
	Сам.ПроверитьРавенство(Значение, "123");
КонецПроцедуры
