Skip to content

Commit 1961b4a

Browse files
committed
Для функции Равно в случае неравенства значения выдаем полезное дополнительное сообщение, если типы не совпадают.
Важно для случаев, когда визуальное представление совпадает, например, число 10 сверяем со строкой 10
1 parent a19d1dd commit 1961b4a

File tree

1 file changed

+33
-29
lines changed

1 file changed

+33
-29
lines changed

src/bdd-asserts.os

Lines changed: 33 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -10,13 +10,13 @@
1010
ПроверяемоеЗначение = ПроверяемоеЗначениеПараметр;
1111
ДопСообщениеОшибки = Сообщение;
1212
ФлагОтрицания = Ложь;
13-
13+
1414
Возврат ЭтотОбъект;
1515
КонецФункции
1616

1717
Функция Не_() Экспорт
1818
ФлагОтрицания = Истина;
19-
19+
2020
Возврат ЭтотОбъект;
2121
КонецФункции
2222

@@ -31,7 +31,7 @@
3131
Иначе
3232
ПараметрыМетода = ПараметрыМетодаПараметр;
3333
КонецЕсли;
34-
34+
3535
Возврат ЭтотОбъект;
3636
КонецФункции
3737

@@ -40,7 +40,7 @@
4040
СообщениеОшибки = СформироватьСообщениеОбОшибке(Формат(ПроверяемоеЗначение, "БЛ=Ложь; БИ=Истина"), "является ИСТИНОЙ.");
4141
ВызватьОшибкуПроверки(СообщениеОшибки);
4242
КонецЕсли;
43-
43+
4444
Возврат ЭтотОбъект;
4545
КонецФункции
4646

@@ -53,7 +53,7 @@
5353
СообщениеОшибки = СформироватьСообщениеОбОшибке(Формат(ПроверяемоеЗначение, "БЛ=Ложь; БИ=Истина"), "является ЛОЖЬЮ.");
5454
ВызватьОшибкуПроверки(СообщениеОшибки);
5555
КонецЕсли;
56-
56+
5757
Возврат ЭтотОбъект;
5858
КонецФункции
5959

@@ -64,9 +64,13 @@
6464
Функция Равно(Знач ОжидаемоеЗначение) Экспорт
6565
Если Не ЛогическоеВыражениеВерно(ПроверяемоеЗначение = ОжидаемоеЗначение) Тогда
6666
СообщениеОшибки = СформироватьСообщениеОбОшибке(ПроверяемоеЗначение, "РАВНО (" + ОжидаемоеЗначение + ").");
67+
Если ТипЗнч(ПроверяемоеЗначение) <> ТипЗнч(ОжидаемоеЗначение) Тогда
68+
СообщениеОшибки = СообщениеОшибки + СтрШаблон("%3 Тип проверяемого значения (%1) НЕ РАВЕН типу ожидаемого значения (%2).",
69+
ТипЗнч(ПроверяемоеЗначение), ТипЗнч(ОжидаемоеЗначение), Символы.ПС);
70+
КонецЕсли;
6771
ВызватьОшибкуПроверки(СообщениеОшибки);
6872
КонецЕсли;
69-
73+
7074
Возврат ЭтотОбъект;
7175
КонецФункции
7276

@@ -75,7 +79,7 @@
7579
СообщениеОшибки = СформироватьСообщениеОбОшибке(ПроверяемоеЗначение, "БОЛЬШЕ (" + МеньшееЗначение + ").");
7680
ВызватьОшибкуПроверки(СообщениеОшибки);
7781
КонецЕсли;
78-
82+
7983
Возврат ЭтотОбъект;
8084
КонецФункции
8185

@@ -84,7 +88,7 @@
8488
СообщениеОшибки = СформироватьСообщениеОбОшибке(ПроверяемоеЗначение, "БОЛЬШЕ ИЛИ РАВНО (" + МеньшееИлиРавноеЗначение + ").");
8589
ВызватьОшибкуПроверки(СообщениеОшибки);
8690
КонецЕсли;
87-
91+
8892
Возврат ЭтотОбъект;
8993
КонецФункции
9094

@@ -97,7 +101,7 @@
97101
СообщениеОшибки = СформироватьСообщениеОбОшибке(ПроверяемоеЗначение, "МЕНЬШЕ ИЛИ РАВНО (" + БольшееИлиРавноеЗначение + ").");
98102
ВызватьОшибкуПроверки(СообщениеОшибки);
99103
КонецЕсли;
100-
104+
101105
Возврат ЭтотОбъект;
102106
КонецФункции
103107

@@ -110,7 +114,7 @@
110114
СообщениеОшибки = СформироватьСообщениеОбОшибке(ПроверяемоеЗначение, "МЕНЬШЕ (" + БольшееЗначение + ").");
111115
ВызватьОшибкуПроверки(СообщениеОшибки);
112116
КонецЕсли;
113-
117+
114118
Возврат ЭтотОбъект;
115119
КонецФункции
116120

@@ -119,7 +123,7 @@
119123
СообщениеОшибки = СформироватьСообщениеОбОшибке(ПроверяемоеЗначение, "является ЗАПОЛНЕННЫМ.");
120124
ВызватьОшибкуПроверки(СообщениеОшибки);
121125
КонецЕсли;
122-
126+
123127
Возврат ЭтотОбъект;
124128
КонецФункции
125129

@@ -128,7 +132,7 @@
128132
СообщениеОшибки = СформироватьСообщениеОбОшибке(ПроверяемоеЗначение, "СУЩЕСТВУЕТ.");
129133
ВызватьОшибкуПроверки(СообщениеОшибки);
130134
КонецЕсли;
131-
135+
132136
Возврат ЭтотОбъект;
133137
КонецФункции
134138

@@ -137,7 +141,7 @@
137141
СообщениеОшибки = СформироватьСообщениеОбОшибке(ПроверяемоеЗначение, "является НЕОПРЕДЕЛЕНО.");
138142
ВызватьОшибкуПроверки(СообщениеОшибки);
139143
КонецЕсли;
140-
144+
141145
Возврат ЭтотОбъект;
142146
КонецФункции
143147

@@ -150,7 +154,7 @@
150154
СообщениеОшибки = СформироватьСообщениеОбОшибке(ПроверяемоеЗначение, "является NULL.");
151155
ВызватьОшибкуПроверки(СообщениеОшибки);
152156
КонецЕсли;
153-
157+
154158
Возврат ЭтотОбъект;
155159
КонецФункции
156160

@@ -165,7 +169,7 @@
165169
СообщениеОшибки = СформироватьСообщениеОбОшибке("тип - " + ТипПроверяемогоЗначения, "имеет тип (" + ОжидаемыйТип + ").");
166170
ВызватьОшибкуПроверки(СообщениеОшибки);
167171
КонецЕсли;
168-
172+
169173
Возврат ЭтотОбъект;
170174
КонецФункции
171175

@@ -174,13 +178,13 @@
174178
СообщениеОшибки = СформироватьСообщениеОбОшибке(ПроверяемоеЗначение, "МЕЖДУ (" + НачальноеЗначение + ") и (" + КонечноеЗначение + ").");
175179
ВызватьОшибкуПроверки(СообщениеОшибки);
176180
КонецЕсли;
177-
181+
178182
Возврат ЭтотОбъект;
179183
КонецФункции
180184

181185
Функция Содержит(Знач ИскомоеЗначение) Экспорт
182186
Перем ИскомоеЗначениеНайдено;
183-
187+
184188
ТипПроверяемоегоЗначения = ТипЗнч(ПроверяемоеЗначение);
185189
Если ТипПроверяемоегоЗначения = Тип("Строка") Тогда
186190
ИскомоеЗначениеНайдено = Найти(ПроверяемоеЗначение, ИскомоеЗначение) > 0;
@@ -197,23 +201,23 @@
197201
ИначеЕсли ТипПроверяемоегоЗначения = Тип("СписокЗначений") Тогда
198202
ИскомоеЗначениеНайдено = ПроверяемоеЗначение.НайтиПоЗначению(ИскомоеЗначение) <> Неопределено;
199203
КонецЕсли;
200-
204+
201205
Если ИскомоеЗначениеНайдено = Неопределено Тогда
202206
СообщениеОшибки = "Утверждение ""Содержит"" не умеет работать с типом <" + ТипПроверяемоегоЗначения + ">." + ФорматДСО(ДопСообщениеОшибки);
203207
ВызватьИсключение СообщениеОшибки;
204208
КонецЕсли;
205-
209+
206210
Если Не ЛогическоеВыражениеВерно(ИскомоеЗначениеНайдено) Тогда
207211
СообщениеОшибки = СформироватьСообщениеОбОшибке(ПроверяемоеЗначение, "СОДЕРЖИТ (" + ИскомоеЗначение + ").");
208212
ВызватьОшибкуПроверки(СообщениеОшибки);
209213
КонецЕсли;
210-
214+
211215
Возврат ЭтотОбъект;
212216
КонецФункции
213217

214218
Функция ИмеетДлину(Знач ОжидаемаяДлина) Экспорт
215219
Перем ФактическаяДлина;
216-
220+
217221
ТипПроверяемоегоЗначения = ТипЗнч(ПроверяемоеЗначение);
218222
Если ТипПроверяемоегоЗначения = Тип("Строка") Тогда
219223
ФактическаяДлина = СтрДлина(ПроверяемоеЗначение);
@@ -225,40 +229,40 @@
225229
Или ТипПроверяемоегоЗначения = Тип("СписокЗначений") Тогда
226230
ФактическаяДлина = ПроверяемоеЗначение.Количество();
227231
КонецЕсли;
228-
232+
229233
Если ФактическаяДлина = Неопределено Тогда
230234
СообщениеОшибки = "Утверждение ""ИмеетДлину"" не умеет работать с типом <" + ТипПроверяемоегоЗначения + ">." + ФорматДСО(ДопСообщениеОшибки);
231235
ВызватьИсключение СообщениеОшибки;
232236
КонецЕсли;
233-
237+
234238
Если Не ЛогическоеВыражениеВерно(ФактическаяДлина = ОжидаемаяДлина) Тогда
235239
СообщениеОшибки = СформироватьСообщениеОбОшибке("<" +ПроверяемоеЗначение + "> с длиной " + ФактическаяДлина, "ИМЕЕТ ДЛИНУ (" + ОжидаемаяДлина + ").");
236240
ВызватьОшибкуПроверки(СообщениеОшибки);
237241
КонецЕсли;
238-
242+
239243
Возврат ЭтотОбъект;
240244
КонецФункции
241245

242246
Функция ВыбрасываетИсключение(Знач ФрагментИсключения = "") Экспорт
243247
Контекст = ПроверяемоеЗначение;
244248
ИсключениеВозникло = Ложь;
245-
249+
246250
Попытка
247251
Рефлектор = Новый Рефлектор;
248252
Рефлектор.ВызватьМетод(Контекст, ИмяМетода, ПараметрыМетода);
249253
Исключение
250254
ИсключениеВозникло = Истина;
251255
ТекстИсключения = ОписаниеОшибки();
252256
КонецПопытки;
253-
257+
254258
Если Не ЛогическоеВыражениеВерно(ИсключениеВозникло И Найти(ТекстИсключения, ФрагментИсключения) > 0) Тогда
255259
СообщениеОшибки = "Ожидали, что " + ИмяМетода
256260
+ ?(ФлагОтрицания, " НЕ ", " ")
257261
+ "ВЫБРОСИТ ИСКЛЮЧЕНИЕ"
258262
+ ?(ЗначениеЗаполнено(ФрагментИсключения), " СОДЕРЖАЩЕЕ ТЕКСТ <" + ФрагментИсключения + ">, а был текст <" + ТекстИсключения + ">.", "");
259263
ВызватьОшибкуПроверки(СообщениеОшибки);
260264
КонецЕсли;
261-
265+
262266
Возврат ЭтотОбъект;
263267
КонецФункции
264268

@@ -267,7 +271,7 @@
267271
Если ДопСообщениеОшибки = "" Тогда
268272
Возврат "";
269273
КонецЕсли;
270-
274+
271275
Возврат Символы.ПС + ДопСообщениеОшибки;
272276
КонецФункции
273277

@@ -280,7 +284,7 @@
280284
Результат = ФлагОтрицания <> ЛогическоеВыражение;
281285
ФлагОтрицанияДляСообщения = ФлагОтрицания;
282286
ФлагОтрицания = Ложь;
283-
287+
284288
Возврат Результат;
285289
КонецФункции
286290

0 commit comments

Comments
 (0)