// тесты проверки работы 1С++ в плане ООП

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

Процедура ТестСозданиеПотомкаВОдномФайле() Экспорт
	Перем Объект;

	Сам = Сам();

	Объект = СоздатьОбъект("ООППотомокВОдномФайле");
	ТипОбъекта = ТипЗначенияСтр(Объект);

	Сам.ПроверитьРавенство(ТипОбъекта, "ООППотомокВОдномФайле");
КонецПроцедуры //ТестСозданиеПотомкаВОдномФайле

Процедура ТестБазовогоКлассаУПотомкаВОдномФайле() Экспорт
	Перем Объект;

	Сам = Сам();

	Объект = СоздатьОбъект("ООППотомокВОдномФайле");
	ТипОбъекта = ТипЗначенияСтр(Объект.ПолучитьБазовыйКласс(""));

	Сам.ПроверитьРавенство(ТипОбъекта, "ООППредокВОдномФайле");
КонецПроцедуры //ТестБазовогоКлассаУПотомкаВОдномФайле

Процедура ТестЧтениеАтрибутаКлассаВОдномФайле() Экспорт
	Перем Объект;

	Сам = Сам();

	Объект = СоздатьОбъект("ООППредокВОдномФайле");

    // конструктор не должен был сработать,
	//    а на самом деле работает конструктор от класса "ООППредокВОдномФайле"
    Сам.ПроверитьРавенство(Объект.АтрибутБазовогоКласса, ПолучитьПустоеЗначение("")); // здесь тест вылетит

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

Процедура ТестЧтениеВПотомкеАтрибутаБазовогоКлассаВОдномФайле1() Экспорт
	Перем Объект;

	Сам = Сам();

	Объект = СоздатьОбъект("ООППотомокВОдномФайле");
	Объект = Объект.ПолучитьБазовыйКласс("");
	АтрибутБазовогоКласса = Объект.АтрибутБазовогоКласса;

	Сам.ПроверитьРавенство(АтрибутБазовогоКласса, 2);
КонецПроцедуры //ТестЧтениеВПотомкеАтрибутаБазовогоКлассаВОдномФайле1

Процедура ТестЧтениеВПотомкеАтрибутаБазовогоКлассаВОдномФайле2() Экспорт
	Перем Объект;

	Сам = Сам();

	Объект = СоздатьОбъект("ООППотомокВОдномФайле");
	АтрибутБазовогоКласса = Объект.АтрибутБазовогоКласса;

	Сам.ПроверитьРавенство(АтрибутБазовогоКласса, 2);
КонецПроцедуры //ТестЧтениеВПотомкеАтрибутаБазовогоКлассаВОдномФайле2

Процедура ТестСозданиеКлассовСОдинаковымиМетодамиВОдномФайле1() Экспорт
	Перем Объект;

	Сам = Сам();

	Объект = СоздатьОбъект("ООППредокВОдномФайлеСОдинаковымиМетодами"); // здесь тест не пройдет

КонецПроцедуры //ТестСозданиеКлассовСОдинаковымиМетодамиВОдномФайле1

Процедура ТестСозданиеКлассовСОдинаковымиМетодамиВОдномФайле2() Экспорт
	Перем Объект;

	Сам = Сам();

	// здесь тест не пройдет
	Объект = СоздатьОбъект("ООППотомокВОдномФайлеСОдинаковымиМетодами");// здесь тест не пройдет

КонецПроцедуры //ТестСозданиеКлассовСОдинаковымиМетодамиВОдномФайле2

Процедура ТестОтправитьСообщениеМодулюХоз_БезОбработчикаСобытия() Экспорт
	Перем Список;

	Сам = Сам();
	Объект = СоздатьОбъект("ООППотомокВОдномФайлеСОдинаковымиМетодами");

	отКого = "Отправитель";
	стрСобытие = "Информация";
	Данные = СоздатьОбъект("ТаблицаЗначений");

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

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