Skip to content

Commit 18b5ffe

Browse files
committed
EvilBeaver#1531: тесты на кросс-вызовы делегатов.
1 parent 109564d commit 18b5ffe

2 files changed

Lines changed: 196 additions & 0 deletions

File tree

tests/cross-delegate-native.os

Lines changed: 97 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,97 @@
1+
///////////////////////////////////////////////////////////////////////
2+
// Тест класса Действие/Action
3+
///////////////////////////////////////////////////////////////////////
4+
5+
Перем юТест;
6+
7+
////////////////////////////////////////////////////////////////////
8+
// Программный интерфейс
9+
10+
Функция ПолучитьСписокТестов(ЮнитТестирование) Экспорт
11+
12+
юТест = ЮнитТестирование;
13+
14+
ВсеТесты = Новый Массив;
15+
16+
ВсеТесты.Добавить("ТестДолжен_ВыполнитьДействиеОбъектаТеста_Стэковый");
17+
ВсеТесты.Добавить("ТестДолжен_ВыполнитьДействиеОбъектаТеста_Родной");
18+
19+
ВсеТесты.Добавить("ТестДолжен_ПроверитьКоличествоПараметров_Стэковый");
20+
ВсеТесты.Добавить("ТестДолжен_ПроверитьКоличествоПараметров_Родной");
21+
22+
Возврат ВсеТесты;
23+
24+
КонецФункции
25+
26+
Процедура ТестДолжен_ВыполнитьДействиеОбъектаТеста(Знач ТипДелегата)
27+
28+
Делегат = ТестовыйДелегат(ТипДелегата);
29+
Делегат.Выполнить("123", 456);
30+
31+
КонецПроцедуры
32+
33+
Процедура ТестДолжен_ПроверитьКоличествоПараметров(Знач ТипДелегата)
34+
35+
Делегат = ТестовыйДелегат(ТипДелегата);
36+
37+
ЕстьОшибка = Ложь;
38+
Попытка
39+
Делегат.Выполнить("123");
40+
Исключение
41+
ЕстьОшибка = Истина;
42+
КонецПопытки;
43+
44+
юТест.ПроверитьИстину(ЕстьОшибка, "Вызов с недостаточным количеством параметров должен бросать исключение");
45+
46+
ЕстьОшибка = Ложь;
47+
Попытка
48+
Делегат.Выполнить("123", 456, '00010101');
49+
Исключение
50+
ЕстьОшибка = Истина;
51+
КонецПопытки;
52+
53+
юТест.ПроверитьИстину(ЕстьОшибка, "Вызов с избыточным количеством параметров должен бросать исключение");
54+
55+
КонецПроцедуры
56+
57+
Процедура ТестДолжен_ВыполнитьДействиеОбъектаТеста_Стэковый() Экспорт
58+
ТестДолжен_ВыполнитьДействиеОбъектаТеста("#stack");
59+
КонецПроцедуры
60+
61+
Процедура ТестДолжен_ВыполнитьДействиеОбъектаТеста_Родной() Экспорт
62+
ТестДолжен_ВыполнитьДействиеОбъектаТеста("#native");
63+
КонецПроцедуры
64+
65+
Процедура ТестДолжен_ПроверитьКоличествоПараметров_Родной() Экспорт
66+
ТестДолжен_ПроверитьКоличествоПараметров("#native")
67+
КонецПроцедуры
68+
69+
Процедура ТестДолжен_ПроверитьКоличествоПараметров_Стэковый() Экспорт
70+
ТестДолжен_ПроверитьКоличествоПараметров("#stack")
71+
КонецПроцедуры
72+
73+
Функция ТестовыйДелегат(Знач ТипДелегата)
74+
75+
ПутьКСкрипту = юТест.ИмяВременногоФайла("os");
76+
ИмяКласса = "Класс" + СтрЗаменить(Новый УникальныйИдентификатор, "-", "");
77+
78+
ТекстКласса = ТипДелегата +
79+
"
80+
|
81+
|Процедура Тест(Парам, Парам2) Экспорт
82+
| Сообщить(Парам + Парам2);
83+
|КонецПроцедуры";
84+
85+
ЗаписьТекста = Новый ЗаписьТекста(ПутьКСкрипту);
86+
ЗаписьТекста.Записать(ТекстКласса);
87+
ЗаписьТекста.Закрыть();
88+
89+
ПодключитьСценарий(ПутьКСкрипту, ИмяКласса);
90+
91+
Класс = Новый(ИмяКласса);
92+
93+
Делегат = Новый Действие(Класс, "Тест");
94+
95+
Возврат Делегат;
96+
97+
КонецФункции

tests/cross-delegate-stack.os

Lines changed: 99 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,99 @@
1+
#stack
2+
3+
///////////////////////////////////////////////////////////////////////
4+
// Тест класса Действие/Action
5+
///////////////////////////////////////////////////////////////////////
6+
7+
Перем юТест;
8+
9+
////////////////////////////////////////////////////////////////////
10+
// Программный интерфейс
11+
12+
Функция ПолучитьСписокТестов(ЮнитТестирование) Экспорт
13+
14+
юТест = ЮнитТестирование;
15+
16+
ВсеТесты = Новый Массив;
17+
18+
ВсеТесты.Добавить("ТестДолжен_ВыполнитьДействиеОбъектаТеста_Стэковый");
19+
ВсеТесты.Добавить("ТестДолжен_ВыполнитьДействиеОбъектаТеста_Родной");
20+
21+
ВсеТесты.Добавить("ТестДолжен_ПроверитьКоличествоПараметров_Стэковый");
22+
ВсеТесты.Добавить("ТестДолжен_ПроверитьКоличествоПараметров_Родной");
23+
24+
Возврат ВсеТесты;
25+
26+
КонецФункции
27+
28+
Процедура ТестДолжен_ВыполнитьДействиеОбъектаТеста(Знач ТипДелегата)
29+
30+
Делегат = ТестовыйДелегат(ТипДелегата);
31+
Делегат.Выполнить("123", 456);
32+
33+
КонецПроцедуры
34+
35+
Процедура ТестДолжен_ПроверитьКоличествоПараметров(Знач ТипДелегата)
36+
37+
Делегат = ТестовыйДелегат(ТипДелегата);
38+
39+
ЕстьОшибка = Ложь;
40+
Попытка
41+
Делегат.Выполнить("123");
42+
Исключение
43+
ЕстьОшибка = Истина;
44+
КонецПопытки;
45+
46+
юТест.ПроверитьИстину(ЕстьОшибка, "Вызов с недостаточным количеством параметров должен бросать исключение");
47+
48+
ЕстьОшибка = Ложь;
49+
Попытка
50+
Делегат.Выполнить("123", 456, '00010101');
51+
Исключение
52+
ЕстьОшибка = Истина;
53+
КонецПопытки;
54+
55+
юТест.ПроверитьИстину(ЕстьОшибка, "Вызов с избыточным количеством параметров должен бросать исключение");
56+
57+
КонецПроцедуры
58+
59+
Процедура ТестДолжен_ВыполнитьДействиеОбъектаТеста_Стэковый() Экспорт
60+
ТестДолжен_ВыполнитьДействиеОбъектаТеста("#stack");
61+
КонецПроцедуры
62+
63+
Процедура ТестДолжен_ВыполнитьДействиеОбъектаТеста_Родной() Экспорт
64+
ТестДолжен_ВыполнитьДействиеОбъектаТеста("#native");
65+
КонецПроцедуры
66+
67+
Процедура ТестДолжен_ПроверитьКоличествоПараметров_Родной() Экспорт
68+
ТестДолжен_ПроверитьКоличествоПараметров("#native")
69+
КонецПроцедуры
70+
71+
Процедура ТестДолжен_ПроверитьКоличествоПараметров_Стэковый() Экспорт
72+
ТестДолжен_ПроверитьКоличествоПараметров("#stack")
73+
КонецПроцедуры
74+
75+
Функция ТестовыйДелегат(Знач ТипДелегата)
76+
77+
ПутьКСкрипту = юТест.ИмяВременногоФайла("os");
78+
ИмяКласса = "Класс" + СтрЗаменить(Новый УникальныйИдентификатор, "-", "");
79+
80+
ТекстКласса = ТипДелегата +
81+
"
82+
|
83+
|Процедура Тест(Парам, Парам2) Экспорт
84+
| Сообщить(Парам + Парам2);
85+
|КонецПроцедуры";
86+
87+
ЗаписьТекста = Новый ЗаписьТекста(ПутьКСкрипту);
88+
ЗаписьТекста.Записать(ТекстКласса);
89+
ЗаписьТекста.Закрыть();
90+
91+
ПодключитьСценарий(ПутьКСкрипту, ИмяКласса);
92+
93+
Класс = Новый(ИмяКласса);
94+
95+
Делегат = Новый Действие(Класс, "Тест");
96+
97+
Возврат Делегат;
98+
99+
КонецФункции

0 commit comments

Comments
 (0)