-
Notifications
You must be signed in to change notification settings - Fork 119
Expand file tree
/
Copy pathcross-delegate-stack.os
More file actions
99 lines (66 loc) · 4.34 KB
/
Copy pathcross-delegate-stack.os
File metadata and controls
99 lines (66 loc) · 4.34 KB
1
2
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
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
#stack
///////////////////////////////////////////////////////////////////////
// Тест класса Действие/Action
///////////////////////////////////////////////////////////////////////
Перем юТест;
////////////////////////////////////////////////////////////////////
// Программный интерфейс
Функция ПолучитьСписокТестов(ЮнитТестирование) Экспорт
юТест = ЮнитТестирование;
ВсеТесты = Новый Массив;
ВсеТесты.Добавить("ТестДолжен_ВыполнитьДействиеОбъектаТеста_Стэковый");
ВсеТесты.Добавить("ТестДолжен_ВыполнитьДействиеОбъектаТеста_Родной");
ВсеТесты.Добавить("ТестДолжен_ПроверитьКоличествоПараметров_Стэковый");
ВсеТесты.Добавить("ТестДолжен_ПроверитьКоличествоПараметров_Родной");
Возврат ВсеТесты;
КонецФункции
Процедура ТестДолжен_ВыполнитьДействиеОбъектаТеста(Знач ТипДелегата)
Делегат = ТестовыйДелегат(ТипДелегата);
Делегат.Выполнить("123", 456);
КонецПроцедуры
Процедура ТестДолжен_ПроверитьКоличествоПараметров(Знач ТипДелегата)
Делегат = ТестовыйДелегат(ТипДелегата);
ЕстьОшибка = Ложь;
Попытка
Делегат.Выполнить("123");
Исключение
ЕстьОшибка = Истина;
КонецПопытки;
юТест.ПроверитьИстину(ЕстьОшибка, "Вызов с недостаточным количеством параметров должен бросать исключение");
ЕстьОшибка = Ложь;
Попытка
Делегат.Выполнить("123", 456, '00010101');
Исключение
ЕстьОшибка = Истина;
КонецПопытки;
юТест.ПроверитьИстину(ЕстьОшибка, "Вызов с избыточным количеством параметров должен бросать исключение");
КонецПроцедуры
Процедура ТестДолжен_ВыполнитьДействиеОбъектаТеста_Стэковый() Экспорт
ТестДолжен_ВыполнитьДействиеОбъектаТеста("#stack");
КонецПроцедуры
Процедура ТестДолжен_ВыполнитьДействиеОбъектаТеста_Родной() Экспорт
ТестДолжен_ВыполнитьДействиеОбъектаТеста("#native");
КонецПроцедуры
Процедура ТестДолжен_ПроверитьКоличествоПараметров_Родной() Экспорт
ТестДолжен_ПроверитьКоличествоПараметров("#native")
КонецПроцедуры
Процедура ТестДолжен_ПроверитьКоличествоПараметров_Стэковый() Экспорт
ТестДолжен_ПроверитьКоличествоПараметров("#stack")
КонецПроцедуры
Функция ТестовыйДелегат(Знач ТипДелегата)
ПутьКСкрипту = юТест.ИмяВременногоФайла("os");
ИмяКласса = "Класс" + СтрЗаменить(Новый УникальныйИдентификатор, "-", "");
ТекстКласса = ТипДелегата +
"
|
|Процедура Тест(Парам, Парам2) Экспорт
| Сообщить(Парам + Парам2);
|КонецПроцедуры";
ЗаписьТекста = Новый ЗаписьТекста(ПутьКСкрипту);
ЗаписьТекста.Записать(ТекстКласса);
ЗаписьТекста.Закрыть();
ПодключитьСценарий(ПутьКСкрипту, ИмяКласса);
Класс = Новый(ИмяКласса);
Делегат = Новый Действие(Класс, "Тест");
Возврат Делегат;
КонецФункции