Skip to content

Commit 4cea388

Browse files
committed
Добавлены утверждения в стиле BDD
1 parent 3073de2 commit 4cea388

File tree

4 files changed

+509
-0
lines changed

4 files changed

+509
-0
lines changed

lib.config

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
11
<package-def>
22
<module name="Утверждения" file="src/xunit-legacy.os"/>
3+
<module name="Ожидаем" file="src/bdd-asserts.os"/>
34
</package-def>

src/bdd-asserts.os

Lines changed: 235 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,235 @@
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+
100+
Функция Существует() Экспорт
101+
Если Не ЛогическоеВыражениеВерно(ПроверяемоеЗначение <> Неопределено И ПроверяемоеЗначение <> Null) Тогда
102+
СообщениеОшибки = СформироватьСообщениеОбОшибке(ПроверяемоеЗначение, "СУЩЕСТВУЕТ.");
103+
ВызватьОшибкуПроверки(СообщениеОшибки);
104+
КонецЕсли;
105+
106+
Возврат ЭтотОбъект;
107+
КонецФункции
108+
109+
Функция ЭтоНеопределено() Экспорт
110+
Если Не ЛогическоеВыражениеВерно(ПроверяемоеЗначение = Неопределено) Тогда
111+
СообщениеОшибки = СформироватьСообщениеОбОшибке(ПроверяемоеЗначение, "является НЕОПРЕДЕЛЕНО.");
112+
ВызватьОшибкуПроверки(СообщениеОшибки);
113+
КонецЕсли;
114+
115+
Возврат ЭтотОбъект;
116+
КонецФункции
117+
118+
Функция ЭтоNull() Экспорт
119+
Если Не ЛогическоеВыражениеВерно(ПроверяемоеЗначение = Null) Тогда
120+
СообщениеОшибки = СформироватьСообщениеОбОшибке(ПроверяемоеЗначение, "является NULL.");
121+
ВызватьОшибкуПроверки(СообщениеОшибки);
122+
КонецЕсли;
123+
124+
Возврат ЭтотОбъект;
125+
КонецФункции
126+
127+
Функция ИмеетТип(ТипИлиИмяТипа) Экспорт
128+
ОжидаемыйТип = ?(ТипЗнч(ТипИлиИмяТипа) = Тип("Строка"), Тип(ТипИлиИмяТипа), ТипИлиИмяТипа);
129+
ТипПроверяемогоЗначения = ТипЗнч(ПроверяемоеЗначение);
130+
Если Не ЛогическоеВыражениеВерно(ТипПроверяемогоЗначения = ОжидаемыйТип) Тогда
131+
СообщениеОшибки = СформироватьСообщениеОбОшибке("тип - " + ТипПроверяемогоЗначения, "имеет тип (" + ОжидаемыйТип + ").");
132+
ВызватьОшибкуПроверки(СообщениеОшибки);
133+
КонецЕсли;
134+
135+
Возврат ЭтотОбъект;
136+
КонецФункции
137+
138+
Функция Между(НачальноеЗначение, КонечноеЗначение) Экспорт
139+
Если Не ЛогическоеВыражениеВерно(ПроверяемоеЗначение >= НачальноеЗначение И ПроверяемоеЗначение <= КонечноеЗначение) Тогда
140+
СообщениеОшибки = СформироватьСообщениеОбОшибке(ПроверяемоеЗначение, "МЕЖДУ (" + НачальноеЗначение + ") и (" + КонечноеЗначение + ").");
141+
ВызватьОшибкуПроверки(СообщениеОшибки);
142+
КонецЕсли;
143+
144+
Возврат ЭтотОбъект;
145+
КонецФункции
146+
147+
Функция Содержит(ИскомоеЗначение) Экспорт
148+
Перем ИскомоеЗначениеНайдено;
149+
150+
ТипПроверяемоегоЗначения = ТипЗнч(ПроверяемоеЗначение);
151+
Если ТипПроверяемоегоЗначения = Тип("Строка") Тогда
152+
ИскомоеЗначениеНайдено = Найти(ПроверяемоеЗначение, ИскомоеЗначение) > 0;
153+
ИначеЕсли ТипПроверяемоегоЗначения = Тип("Массив") Или ТипПроверяемоегоЗначения = Тип("ФиксированныйМассив") Тогда
154+
ИскомоеЗначениеНайдено = ПроверяемоеЗначение.Найти(ИскомоеЗначение) <> Неопределено;
155+
ИначеЕсли ТипПроверяемоегоЗначения = Тип("Структура") Или ТипПроверяемоегоЗначения = Тип("ФиксированнаяСтруктура")
156+
Или ТипПроверяемоегоЗначения = Тип("Соответствие") Или ТипПроверяемоегоЗначения = Тип("ФиксированноеСоответствие") Тогда
157+
Для каждого КлючЗначение Из ПроверяемоеЗначение Цикл
158+
ИскомоеЗначениеНайдено = КлючЗначение.Значение = ИскомоеЗначение;
159+
Если ИскомоеЗначениеНайдено Тогда
160+
Прервать;
161+
КонецЕсли;
162+
КонецЦикла;
163+
ИначеЕсли ТипПроверяемоегоЗначения = Тип("СписокЗначений") Тогда
164+
ИскомоеЗначениеНайдено = ПроверяемоеЗначение.НайтиПоЗначению(ИскомоеЗначение) <> Неопределено;
165+
КонецЕсли;
166+
167+
Если ИскомоеЗначениеНайдено = Неопределено Тогда
168+
СообщениеОшибки = "Утверждение ""Содержит"" не умеет работать с типом <" + ТипПроверяемоегоЗначения + ">." + ФорматДСО(ДопСообщениеОшибки);
169+
ВызватьИсключение СообщениеОшибки;
170+
КонецЕсли;
171+
172+
Если Не ЛогическоеВыражениеВерно(ИскомоеЗначениеНайдено) Тогда
173+
СообщениеОшибки = СформироватьСообщениеОбОшибке(ПроверяемоеЗначение, "СОДЕРЖИТ (" + ИскомоеЗначение + ").");
174+
ВызватьОшибкуПроверки(СообщениеОшибки);
175+
КонецЕсли;
176+
177+
Возврат ЭтотОбъект;
178+
КонецФункции
179+
180+
Функция ИмеетДлину(ОжидаемаяДлина) Экспорт
181+
Перем ФактическаяДлина;
182+
183+
ТипПроверяемоегоЗначения = ТипЗнч(ПроверяемоеЗначение);
184+
Если ТипПроверяемоегоЗначения = Тип("Строка") Тогда
185+
ФактическаяДлина = СтрДлина(ПроверяемоеЗначение);
186+
ИначеЕсли ТипПроверяемоегоЗначения = Тип("Массив") Или ТипПроверяемоегоЗначения = Тип("ФиксированныйМассив")
187+
Или ТипПроверяемоегоЗначения = Тип("Структура") Или ТипПроверяемоегоЗначения = Тип("ФиксированнаяСтруктура")
188+
Или ТипПроверяемоегоЗначения = Тип("Соответствие") Или ТипПроверяемоегоЗначения = Тип("ФиксированноеСоответствие")
189+
Или ТипПроверяемоегоЗначения = Тип("СписокЗначений") Тогда
190+
ФактическаяДлина = ПроверяемоеЗначение.Количество();
191+
КонецЕсли;
192+
193+
Если ФактическаяДлина = Неопределено Тогда
194+
СообщениеОшибки = "Утверждение ""ИмеетДлину"" не умеет работать с типом <" + ТипПроверяемоегоЗначения + ">." + ФорматДСО(ДопСообщениеОшибки);
195+
ВызватьИсключение СообщениеОшибки;
196+
КонецЕсли;
197+
198+
Если Не ЛогическоеВыражениеВерно(ФактическаяДлина = ОжидаемаяДлина) Тогда
199+
СообщениеОшибки = СформироватьСообщениеОбОшибке("<" +ПроверяемоеЗначение + "> с длиной " + ФактическаяДлина, "ИМЕЕТ ДЛИНУ (" + ОжидаемаяДлина + ").");
200+
ВызватьОшибкуПроверки(СообщениеОшибки);
201+
КонецЕсли;
202+
203+
Возврат ЭтотОбъект;
204+
КонецФункции
205+
206+
// { Helpers
207+
Функция ФорматДСО(ДопСообщениеОшибки)
208+
Если ДопСообщениеОшибки = "" Тогда
209+
Возврат "";
210+
КонецЕсли;
211+
212+
Возврат Символы.ПС + ДопСообщениеОшибки;
213+
КонецФункции
214+
215+
Процедура ВызватьОшибкуПроверки(СообщениеОшибки)
216+
Префикс = "["+ СтатусыРезультатаТестирования.ОшибкаПроверки + "]";
217+
ВызватьИсключение Префикс + " " + СообщениеОшибки;
218+
КонецПроцедуры
219+
220+
Функция ЛогическоеВыражениеВерно(ЛогическоеВыражение)
221+
Результат = ФлагОтрицания <> ЛогическоеВыражение;
222+
ФлагОтрицания = Ложь;
223+
224+
Возврат Результат;
225+
КонецФункции
226+
227+
Функция СформироватьСообщениеОбОшибке(ПроверяемоеЗначение, Ожидание)
228+
Возврат "Ожидали, что проверяемое значение (" + ПроверяемоеЗначение + ")" + ?(ФлагОтрицания, " НЕ ", " ") + Ожидание + ФорматДСО(ДопСообщениеОшибки);
229+
КонецФункции
230+
// } Helpers
231+
232+
СтатусыРезультатаТестирования = Новый Структура;
233+
СтатусыРезультатаТестирования.Вставить("ОшибкаПроверки", "Failed");
234+
СтатусыРезультатаТестирования.Вставить("НеизвестнаяОшибка", "Broken");
235+
СтатусыРезультатаТестирования.Вставить("ТестПропущен", "Pending");

tests/add-tests-here.txt

Whitespace-only changes.

0 commit comments

Comments
 (0)