Skip to content

Commit c46a03f

Browse files
authored
Merge pull request #15 from oscript-library/feature/exceptionType
Типизация исключений, проброс причин, небольшой рефакторинг
2 parents 0fcae29 + f5bbdc9 commit c46a03f

8 files changed

+705
-189
lines changed

packagedef

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,14 @@
11

22
Описание.Имя("asserts")
3-
.Версия("1.5.0")
3+
.Версия("1.6.0")
44
.ВерсияСреды("1.0.21")
55
.ВключитьФайл("src")
66
.ВключитьФайл("tests")
77
.ВключитьФайл("readme.md")
88
.ОпределяетКласс("БДДАссерт", "src/Классы/БДДАссерт.os")
9+
.ОпределяетКласс("ИсключениеОшибкаУтверждения", "src/Классы/ИсключениеОшибкаУтверждения.os")
910
.ОпределяетМодуль("Ожидаем", "src/Модули/Ожидаем.os")
1011
.ОпределяетМодуль("Утверждения", "src/Модули/Утверждения.os")
1112
.РазработкаЗависитОт("1bdd")
1213
.РазработкаЗависитОт("1testrunner")
14+
.РазработкаЗависитОт("collectionos")
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
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+
КонецФункции

src/Классы/БДДАссерт.os

Lines changed: 194 additions & 106 deletions
Large diffs are not rendered by default.
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
Перем Тип;
2+
3+
Процедура ОбработкаПолученияПредставления(Представление, СтандартнаяОбработка)
4+
СтандартнаяОбработка = Ложь;
5+
Представление = СтрШаблон("{Тип = %1}", Тип);
6+
КонецПроцедуры
7+
8+
Тип = "Ошибка утверждения";

src/Модули/Утверждения.os

Lines changed: 251 additions & 81 deletions
Large diffs are not rendered by default.

tests/bdd-assertions-identity-tests.os

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,9 @@
6666
Ожидаем.Что(ПроверяемоеЗначение).Идентично(ОжидаемоеЗначение);
6767
Исключение
6868
// Ожидаемое поведение - исключение должно быть выброшено при сравнении разных типов
69-
Если СтрНайти(ИнформацияОбОшибке().Описание, "НЕ РАВЕН типу ожидаемого значения") > 0 Тогда
69+
Если СтрНайти(
70+
ИнформацияОбОшибке().Описание,
71+
"Ожидали, что проверяемое значение (тип - Строка) имеет тип (Число).") > 0 Тогда
7072
Возврат;
7173
КонецЕсли;
7274
КонецПопытки;

tests/bdd-assertions-tests.os

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -278,3 +278,26 @@
278278

279279
Ожидаем.Что(Контекст).Метод("Вставить", Массив).Не_().ВыбрасываетИсключение("Недостаточно фактических параметров");
280280
КонецПроцедуры
281+
282+
&Тест
283+
Процедура ТестДолжен_Проверить_ЧтоНеВыбрасываетсяИсключение() Экспорт
284+
285+
Контекст = Новый Структура;
286+
287+
Попытка
288+
289+
Ожидаем.Что(Контекст)
290+
.Метод("Вставить")
291+
.Не_()
292+
.ВыбрасываетИсключение();
293+
294+
Исключение
295+
296+
ТекстОшибки = ОписаниеОшибки();
297+
Ожидаем.Что(ТекстОшибки)
298+
.Содержит("Ожидали, что Вставить НЕ ВЫБРОСИТ ИСКЛЮЧЕНИЕ")
299+
.Содержит("Недостаточно фактических параметров");
300+
301+
КонецПопытки;
302+
303+
КонецПроцедуры
Lines changed: 198 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,198 @@
1+
#Использовать ".."
2+
#Использовать collectionos
3+
4+
&Тест
5+
Процедура ОжидаемСодержитВСписке() Экспорт
6+
7+
// Дано
8+
Список = Новый СписокМассив;
9+
Список.Добавить(1);
10+
11+
// Когда
12+
Ожидаем.Что(Список)
13+
.Содержит(1);
14+
15+
// Тогда
16+
17+
КонецПроцедуры
18+
19+
&Тест
20+
Процедура ОжидаемНеСодержитВСписке() Экспорт
21+
22+
// Дано
23+
БылоИсключение = Ложь;
24+
25+
Список = Новый СписокМассив;
26+
Список.Добавить(2);
27+
28+
// Когда
29+
Попытка
30+
Ожидаем.Что(Список)
31+
.Содержит(1);
32+
Исключение
33+
БылоИсключение = Истина;
34+
ОписаниеОшибки = ОписаниеОшибки();
35+
КонецПопытки;
36+
37+
// Тогда
38+
ПроверитьИсключение(
39+
БылоИсключение,
40+
ОписаниеОшибки,
41+
"Ожидали, что проверяемое значение ([2]) СОДЕРЖИТ (1)"
42+
);
43+
44+
КонецПроцедуры
45+
46+
&Тест
47+
Процедура ОжидаемСодержитВМножестве() Экспорт
48+
49+
// Дано
50+
Множество = Новый МножествоСоответствие;
51+
Множество.Добавить(1);
52+
53+
// Когда
54+
Ожидаем.Что(Множество)
55+
.Содержит(1);
56+
57+
// Тогда
58+
59+
КонецПроцедуры
60+
61+
&Тест
62+
Процедура ОжидаемНеСодержитВМножестве() Экспорт
63+
64+
// Дано
65+
БылоИсключение = Ложь;
66+
67+
Множество = Новый МножествоСоответствие;
68+
Множество.Добавить(2);
69+
70+
// Когда
71+
Попытка
72+
Ожидаем.Что(Множество)
73+
.Содержит(1);
74+
Исключение
75+
БылоИсключение = Истина;
76+
ОписаниеОшибки = ОписаниеОшибки();
77+
КонецПопытки;
78+
79+
// Тогда
80+
ПроверитьИсключение(
81+
БылоИсключение,
82+
ОписаниеОшибки,
83+
"Ожидали, что проверяемое значение ([2]) СОДЕРЖИТ (1)"
84+
);
85+
86+
КонецПроцедуры
87+
88+
&Тест
89+
Процедура ОжидаемСодержитВОчереди() Экспорт
90+
91+
// Дано
92+
Очередь = Новый ОчередьМассив;
93+
Очередь.Добавить(1);
94+
95+
// Когда
96+
Ожидаем.Что(Очередь)
97+
.Содержит(1);
98+
99+
// Тогда
100+
101+
КонецПроцедуры
102+
103+
&Тест
104+
Процедура ОжидаемНеСодержитВОчереди() Экспорт
105+
106+
// Дано
107+
БылоИсключение = Ложь;
108+
109+
Очередь = Новый ОчередьМассив;
110+
Очередь.Добавить(2);
111+
112+
// Когда
113+
Попытка
114+
Ожидаем.Что(Очередь)
115+
.Содержит(1);
116+
Исключение
117+
БылоИсключение = Истина;
118+
ОписаниеОшибки = ОписаниеОшибки();
119+
КонецПопытки;
120+
121+
// Тогда
122+
ПроверитьИсключение(
123+
БылоИсключение,
124+
ОписаниеОшибки,
125+
"Ожидали, что проверяемое значение ([2]) СОДЕРЖИТ (1)"
126+
);
127+
128+
КонецПроцедуры
129+
130+
&Тест
131+
Процедура ОжидаемСодержитВКарте() Экспорт
132+
133+
// Дано
134+
Карта = Новый КартаСоответствие;
135+
Карта.Вставить(1, 1);
136+
137+
// Когда
138+
Ожидаем.Что(Карта)
139+
.Содержит(1);
140+
141+
// Тогда
142+
143+
КонецПроцедуры
144+
145+
&Тест
146+
Процедура ОжидаемНеСодержитВКарте() Экспорт
147+
148+
// Дано
149+
БылоИсключение = Ложь;
150+
151+
Карта = Новый КартаСоответствие;
152+
Карта.Вставить(1, 2);
153+
154+
// Когда
155+
Попытка
156+
Ожидаем.Что(Карта)
157+
.Содержит(1);
158+
Исключение
159+
БылоИсключение = Истина;
160+
ОписаниеОшибки = ОписаниеОшибки();
161+
КонецПопытки;
162+
163+
// Тогда
164+
ПроверитьИсключение(
165+
БылоИсключение,
166+
ОписаниеОшибки,
167+
"Ожидали, что проверяемое значение ({1=2}) СОДЕРЖИТ (1)"
168+
);
169+
170+
КонецПроцедуры
171+
172+
Процедура ПроверитьИсключение(БылоИсключение, ОписаниеОшибки, ИскомыйТекстИсключения)
173+
174+
Контекст = Новый ИсключениеОшибкаУтверждения();
175+
176+
Если Не БылоИсключение Тогда
177+
178+
ВызватьИсключение Новый ИнформацияОбОшибке(
179+
"Ожидали, что будет исключение а это не так",
180+
Контекст
181+
);
182+
183+
КонецЕсли;
184+
185+
Если СтрНайти(ОписаниеОшибки, ИскомыйТекстИсключения) = 0 Тогда
186+
187+
ВызватьИсключение Новый ИнформацияОбОшибке(
188+
СтрШаблон(
189+
"Ожидали, что в тексте ошибки будет текст: { %1 }, а был { %2 }",
190+
ИскомыйТекстИсключения,
191+
ОписаниеОшибки
192+
),
193+
Контекст
194+
);
195+
196+
КонецЕсли;
197+
198+
КонецПроцедуры

0 commit comments

Comments
 (0)