-
Notifications
You must be signed in to change notification settings - Fork 7
Expand file tree
/
Copy pathУтверждения.os
More file actions
363 lines (261 loc) · 15.7 KB
/
Copy pathУтверждения.os
File metadata and controls
363 lines (261 loc) · 15.7 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
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
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
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
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
Процедура Проверить(Условие, ДопСообщениеОшибки = "") Экспорт
Если Условие Тогда
Возврат;
КонецЕсли;
СообщениеОшибки = СтрШаблон(
"Переданный параметр (%1) не является Истиной, а хотели, чтобы являлся. %2",
Формат(Условие, "БЛ=ложь; БИ=истина"),
ФорматДСО(ДопСообщениеОшибки)
);
ВызватьОшибкуУтверждения(СообщениеОшибки);
КонецПроцедуры
Процедура ПроверитьИстину(Условие, ДопСообщениеОшибки = "") Экспорт
Проверить(Условие, ДопСообщениеОшибки);
КонецПроцедуры
Процедура ПроверитьЛожь(Условие, ДопСообщениеОшибки = "") Экспорт
Если Не Условие Тогда
Возврат;
КонецЕсли;
СообщениеОшибки = СтрШаблон(
"Переданный параметр (%1) не является Ложью, а хотели, чтобы являлся. %2",
Формат(Условие, "БЛ=ложь; БИ=истина"),
ФорматДСО(ДопСообщениеОшибки)
);
ВызватьОшибкуУтверждения(СообщениеОшибки);
КонецПроцедуры
Процедура ПроверитьДату(Дата, Период, ДопСообщениеОшибки = "") Экспорт
Если Дата > Период.ДатаНачала И Дата < Период.ДатаОкончания Тогда
Возврат;
КонецЕсли;
СообщениеОшибки = СтрШаблон(
"Переданный параметр (%1) не входит в период %2, а хотели, чтобы входил. %3",
Формат(Дата, "ДФ='dd.MM.yyyy HH:mm:ss'"),
ПредставлениеПериода(Период.ДатаНачала, Период.ДатаОкончания, "ФП = Истина")
);
ВызватьОшибкуУтверждения(СообщениеОшибки);
КонецПроцедуры
Процедура ПроверитьРавенствоДатСТочностью2Секунды(Дата, Дата2, ДопСообщениеОшибки = "") Экспорт
Если Дата > Дата2 - 2 И Дата < Дата2 + 2 Тогда
Возврат;
КонецЕсли;
СообщениеОшибки = СтрШаблон(
"Переданная дата (%1) не равна дате (%2) с точностью до 2-х секунд, а хотели, чтобы они равнялись. %3",
Формат(Дата, "ДФ='dd.MM.yyyy HH:mm:ss'"),
Формат(Дата2, "ДФ='dd.MM.yyyy HH:mm:ss'"),
ФорматДСО(ДопСообщениеОшибки)
);
ВызватьОшибкуУтверждения(СообщениеОшибки);
КонецПроцедуры
Процедура ПроверитьРавенство(ПервоеЗначение, ВтороеЗначение, ДопСообщениеОшибки = "") Экспорт
Если ПервоеЗначение <> ВтороеЗначение Тогда
СообщениеОшибки = "Сравниваемые значения ("+ПервоеЗначение+"; "+ВтороеЗначение+") не равны, а хотели, чтобы были равны." + ФорматДСО(ДопСообщениеОшибки);
ВызватьОшибкуУтверждения(СообщениеОшибки);
КонецЕсли;
КонецПроцедуры
Процедура ПроверитьНеРавенство(ПервоеЗначение, ВтороеЗначение, ДопСообщениеОшибки = "") Экспорт
Если ПервоеЗначение <> ВтороеЗначение Тогда
Возврат;
КонецЕсли;
СообщениеОшибки = СтрШаблон(
"Сравниваемые значения (%1; %2) равны, а хотели, чтобы были не равны. %3",
ПервоеЗначение,
ВтороеЗначение,
ФорматДСО(ДопСообщениеОшибки)
);
ВызватьОшибкуУтверждения(СообщениеОшибки);
КонецПроцедуры
Процедура ПроверитьБольше(Больше, Меньше, ДопСообщениеОшибки = "") Экспорт
Если Больше > Меньше Тогда
Возврат;
КонецЕсли;
СообщениеОшибки = СтрШаблон(
"Первый параметр (%1) меньше или равен второму (%2) а хотели, чтобы был больше. %3",
Больше,
Меньше,
ФорматДСО(ДопСообщениеОшибки)
);
ВызватьОшибкуУтверждения(СообщениеОшибки);
КонецПроцедуры
Процедура ПроверитьБольшеИлиРавно(Больше, Меньше, ДопСообщениеОшибки = "") Экспорт
Если Больше >= Меньше Тогда
Возврат;
КонецЕсли;
СообщениеОшибки = СтрШаблон(
"Первый параметр (%1) меньше второго (%2) а хотели, чтобы был больше или равен. %3",
Больше,
Меньше,
ФорматДСО(ДопСообщениеОшибки)
);
ВызватьОшибкуУтверждения(СообщениеОшибки);
КонецПроцедуры
Процедура ПроверитьМеньше(Меньше, Больше, ДопСообщениеОшибки = "") Экспорт
Если Больше > Меньше Тогда
Возврат;
КонецЕсли;
СообщениеОшибки = СтрШаблон(
"Первый параметр (%1) больше или равен второму (%2) а хотели, чтобы был меньше. %3",
Меньше,
Больше,
ФорматДСО(ДопСообщениеОшибки)
);
ВызватьОшибкуУтверждения(СообщениеОшибки);
КонецПроцедуры
Процедура ПроверитьМеньшеИлиРавно(Меньше, Больше, ДопСообщениеОшибки = "") Экспорт
Если Больше >= Меньше Тогда
Возврат;
КонецЕсли;
СообщениеОшибки = СтрШаблон(
"Первый параметр (%1) больше второго (%2) а хотели, чтобы был больше или равен. %3",
Меньше,
Больше,
ФорматДСО(ДопСообщениеОшибки)
);
ВызватьОшибкуУтверждения(СообщениеОшибки);
КонецПроцедуры
// проверка идет через ЗначениеЗаполнено, но мутабельные значение всегда считаем заполненными
Процедура ПроверитьЗаполненность(ПроверяемоеЗначение, ДопСообщениеОшибки = "") Экспорт
Попытка
Заполнено = ЗначениеЗаполнено(ПроверяемоеЗначение);
Исключение
Заполнено = Истина;
КонецПопытки;
Если Заполнено Тогда
Возврат;
КонецЕсли;
ВызватьОшибкуУтверждения(
СтрШаблон(
"Значение (%1) не заполнено, а ожидалась заполненность %2",
ПроверяемоеЗначение,
ФорматДСО(ДопСообщениеОшибки)
)
);
КонецПроцедуры
Процедура ПроверитьНеЗаполненность(ПроверяемоеЗначение, ДопСообщениеОшибки = "") Экспорт
СообщениеОшибки = СтрШаблон(
"Значение (%1) заполнено, а ожидалась незаполненность",
ПроверяемоеЗначение,
ФорматДСО(ДопСообщениеОшибки)
);
Попытка
Заполнено = ЗначениеЗаполнено(ПроверяемоеЗначение);
Исключение
Заполнено = Истина;
КонецПопытки;
Если Заполнено Тогда
ВызватьОшибкуУтверждения(СообщениеОшибки);
КонецЕсли;
КонецПроцедуры
Процедура ПроверитьТип(Значение, ТипИлиИмяТипа, ДопСообщениеОшибки = "") Экспорт
Если ТипЗнч(ТипИлиИмяТипа) = Тип("Строка") Тогда
ОжидаемыйТип = Тип(ТипИлиИмяТипа);
ИначеЕсли ТипЗнч(ТипИлиИмяТипа) = Тип("Тип") Тогда
ОжидаемыйТип = ТипИлиИмяТипа;
Иначе
ТекстИсключения = СтрШаблон(
"ПроверитьТип: Тип значения параметра ТипИлиИмяТипа должен быть <Тип> или <Строка>, а получили <%1>. %2",
ТипЗнч(ТипИлиИмяТипа),
ФорматДСО(ДопСообщениеОшибки)
);
ВызватьОшибкуУтверждения(ТекстИсключения);
КонецЕсли;
Если ТипЗнч(Значение) = ОжидаемыйТип Тогда
Возврат;
КонецЕсли;
ОшибкаПроверки = СтрШаблон(
"Типом значения <%1> является <%2>, а ожидался тип <%3>. %4",
Значение,
ТипЗнч(Значение),
ТипИлиИмяТипа,
ФорматДСО(ДопСообщениеОшибки)
);
ВызватьОшибкуУтверждения(ОшибкаПроверки);
КонецПроцедуры
Процедура ПроверитьЧтоВСтрокеСодержатсяТолькоЦифры(Знач ИсходнаяСтрока, ДопСообщениеОшибки = "") Экспорт
// Порт из testrunner в составе oscript-engine
СообщениеОшибки = СтрШаблон(
"Строка (%1) содержит не только цифры, а ожидалась обратное %2",
ИсходнаяСтрока,
ФорматДСО(ДопСообщениеОшибки)
);
ТолькоЦифры = Ложь;
ДлинаСтроки = СтрДлина(ИсходнаяСтрока);
Для Сч = 1 По ДлинаСтроки Цикл
ТекущийСимвол = КодСимвола(Сред(ИсходнаяСтрока, Сч, 1));
Если 48 <= ТекущийСимвол И ТекущийСимвол <= 57 Тогда
ТолькоЦифры = Истина;
Иначе
ТолькоЦифры = Ложь;
Прервать;
КонецЕсли;
КонецЦикла;
Если НЕ ТолькоЦифры Тогда
ВызватьОшибкуУтверждения(СообщениеОшибки);
КонецЕсли;
КонецПроцедуры
Процедура ПроверитьВхождение(Строка, ПодстрокаПоиска, ДопСообщениеОшибки = "") Экспорт
Если СтрНайти(Строка, ПодстрокаПоиска) <> 0 Тогда
Возврат;
КонецЕсли;
СообщениеОшибки = СтрШаблон(
"Искали в <%1> подстроку <%2>, но не нашли. %3",
Строка,
ПодстрокаПоиска,
ФорматДСО(ДопСообщениеОшибки)
);
ВызватьОшибкуУтверждения(СообщениеОшибки);
КонецПроцедуры
Процедура ПроверитьКодСОшибкой( Код, Ошибка, ДопСообщениеОшибки = "" ) Экспорт
ИнформацияОбОшибке = Неопределено;
Попытка
Сценарий = ЗагрузитьСценарийИзСтроки(Код);
СообщениеОшибки = СтрШаблон("Ожидали ошибку '%1', но ее не было", Ошибка);
Исключение
ИнформацияОбОшибке = ИнформацияОбОшибке();
ОписаниеОшибки = ИнформацияОбОшибке.Описание;
Если СтрНайти(ОписаниеОшибки, Ошибка ) <> 0 Тогда
Возврат;
КонецЕсли;
СообщениеОшибки = СтрШаблон("Ожидали ошибку '%1', а была ошибка %2", Ошибка, ОписаниеОшибки);
КонецПопытки;
ВызватьОшибкуУтверждения(СтрШаблон("%1 %2", СообщениеОшибки, ФорматДСО(ДопСообщениеОшибки)), ИнформацияОбОшибке);
КонецПроцедуры
// Проверяет существование метода у объекта
//
// Выбрасывает исключение, если метод отсутствует
//
// Параметры:
// Объект - Любой - Объект, у которого требуется проверить наличие метода
//
// ИмяМетода - Строка - Имя метода, наличие которого требуется проверить
//
// ДопСообщениеОшибки - Строка - Необязательный. Дополнительное пояснение проверки.
// Включается в текст исключения в случае, если проверка не была пройдена
Процедура ПроверитьМетодСуществует(Знач Объект, Знач ИмяМетода, Знач ДопСообщениеОшибки = "") Экспорт
Если Новый Рефлектор.МетодСуществует(Объект, ИмяМетода) Тогда
Возврат
КонецЕсли;
ВызватьОшибкуУтверждения(
СтрШаблон(
"Ожидали, что объект имеет метод с именем %1. %2",
ИмяМетода,
ФорматДСО(ДопСообщениеОшибки)
)
);
КонецПроцедуры
Функция ФорматДСО(ДопСообщениеОшибки)
Если ДопСообщениеОшибки = "" Тогда
Возврат "";
КонецЕсли;
Возврат Символы.ПС + ДопСообщениеОшибки;
КонецФункции
Функция ПредставлениеПериода(ДатаНачала, ДатаОкончания, ФорматнаяСтрока = Неопределено)
Возврат СтрШаблон("с %1 по %2", ДатаНачала, ДатаОкончания);
КонецФункции
Процедура ВызватьОшибкуУтверждения(ТекстИсключения, Причина = Неопределено)
Контекст = Новый ИсключениеОшибкаУтверждения();
Если Число(Лев(Новый СистемнаяИнформация().Версия, 1)) >= 2 Тогда
ВызватьИсключение Новый ИнформацияОбОшибке(ТекстИсключения, Контекст, Причина);
Иначе
ВызватьИсключение Новый ИнформацияОбОшибке(ТекстИсключения, Контекст);
КонецЕсли;
КонецПроцедуры