Skip to content
Navigation Menu
{{ message }}
forked from EvilBeaver/OneScript
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathglobal-json.os
More file actions
362 lines (303 loc) · 20.4 KB
/
Copy pathglobal-json.os
File metadata and controls
362 lines (303 loc) · 20.4 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
Перем юТест;
Функция ПолучитьСписокТестов(Тестирование) Экспорт
юТест = Тестирование;
СписокТестов = Новый Массив;
СписокТестов.Добавить("Тест_ДолженПроверить_ПолучениеМассива");
СписокТестов.Добавить("Тест_ДолженПроверить_ПолучениеСтруктуры");
СписокТестов.Добавить("Тест_ДолженПроверить_ПолучениеСоответствия");
СписокТестов.Добавить("Тест_ДолженПроверить_ПолучениеЧисла");
СписокТестов.Добавить("Тест_ДолженПроверить_ПолучениеСтроки");
СписокТестов.Добавить("Тест_ДолженПроверить_ПолучениеПустогоМассива");
СписокТестов.Добавить("Тест_ДолженПроверить_ПолучениеПустойСтруктуры");
СписокТестов.Добавить("Тест_ДолженПроверить_ПолучениеПустогоСоответствия");
СписокТестов.Добавить("Тест_ДолженПроверить_ПолучениеВложенныхМассивов");
// issue #1373
СписокТестов.Добавить("Тест_ДолженПроверить_ОднострочныйКомментарийВКонцеМассива");
СписокТестов.Добавить("Тест_ДолженПроверить_ОднострочныйКомментарийВнутриСтуктуры");
СписокТестов.Добавить("Тест_ДолженПроверить_ОднострочныйКомментарийВНачалеМассива");
СписокТестов.Добавить("Тест_ДолженПроверить_МногострочныйКомментарийВнутриСтуктуры");
СписокТестов.Добавить("Тест_ДолженПроверить_МногострочныйКомментарийВнутриМассива");
СписокТестов.Добавить("Тест_ДолженПроверить_ПродолжениеЧтения");
СписокТестов.Добавить("Тест_ДолженПроверить_ПродолжениеЧтенияСИзменениемСтруктуры");
СписокТестов.Добавить("Тест_ДолженВызватьОшибку_ДляUndefined");
СписокТестов.Добавить("Тест_ДолженВызватьОшибку_ПриНезакрытомМассиве");
СписокТестов.Добавить("Тест_ДолженВызватьОшибку_ПриНезакрытомОбъекте");
СписокТестов.Добавить("Тест_ДолженВызватьОшибку_ПриНезакрытомВложенномМассиве");
СписокТестов.Добавить("Тест_ДолженВызватьОшибку_ПриНезакрытомВложенномОбъекте");
СписокТестов.Добавить("Тест_ДолженВызватьОшибку_ПриПропущенномЗначенииСвойства");
СписокТестов.Добавить("Тест_ДолженВызватьОшибку_ПриНезакрытомКомментарии");
СписокТестов.Добавить("Тест_ДолженВызватьОшибку_ПриНедопустимомКлючеСтруктуры");
СписокТестов.Добавить("Тест_ДолженПроверить_ПроизвольныйКлючСоответствия");
СписокТестов.Добавить("Тест_ДолженВызватьОшибку_ПриПустомЗначенииВнутриМассива");
СписокТестов.Добавить("Тест_ДолженВызватьОшибку_ПриПустомЗначенииВКонцеМассива");
СписокТестов.Добавить("Тест_ДолженВызватьОшибку_ПриПустомЗначенииСвойства");
СписокТестов.Добавить("Тест_ДолженПроверить_ЗапятуюВКонцеМассива");
СписокТестов.Добавить("Тест_ДолженПроверить_ЗапятуюВКонцеОбъекта");
Возврат СписокТестов;
КонецФункции
Функция ПрочитатьJSONИзСтроки(Стр, Знач ВСоответствие=Ложь)
Чтение = Новый ЧтениеJSON();
Чтение.УстановитьСтроку(Стр);
Результат = ПрочитатьJSON(Чтение, ВСоответствие);
Чтение.Закрыть();
Возврат Результат;
КонецФункции
Процедура Тест_ДолженПроверить_ПолучениеМассива() Экспорт
Текст = "[123,456,789]";
Результат = ПрочитатьJSONИзСтроки(Текст);
юТест.ПроверитьРавенство(Тип("Массив"), ТипЗнч(Результат));
юТест.ПроверитьРавенство(3, Результат.Количество());
юТест.ПроверитьРавенство(456, Результат[1]);
КонецПроцедуры
Процедура Тест_ДолженПроверить_ПолучениеСтруктуры() Экспорт
Текст = "{""Поле1"":123,""Поле2"":456}";
Результат = ПрочитатьJSONИзСтроки(Текст);
юТест.ПроверитьРавенство(Тип("Структура"), ТипЗнч(Результат) );
юТест.ПроверитьРавенство(2, Результат.Количество());
юТест.ПроверитьРавенство(456, Результат.Поле2);
КонецПроцедуры
Процедура Тест_ДолженПроверить_ПолучениеСоответствия() Экспорт
Текст = "{""Поле1"":123,""Поле2"":456}";
Результат = ПрочитатьJSONИзСтроки(Текст,Истина);
юТест.ПроверитьРавенство(Тип("Соответствие"), ТипЗнч(Результат));
юТест.ПроверитьРавенство(2, Результат.Количество());
юТест.ПроверитьРавенство(456, Результат["Поле2"]);
КонецПроцедуры
Процедура Тест_ДолженПроверить_ПолучениеЧисла() Экспорт
Текст = "321";
Результат = ПрочитатьJSONИзСтроки(Текст);
юТест.ПроверитьРавенство(Тип("Число"), ТипЗнч(Результат));
юТест.ПроверитьРавенство(321, Результат);
КонецПроцедуры
Процедура Тест_ДолженПроверить_ПолучениеСтроки() Экспорт
Текст = """абв""";
Результат = ПрочитатьJSONИзСтроки(Текст);
юТест.ПроверитьРавенство(ТипЗнч(Результат), Тип("Строка"));
юТест.ПроверитьРавенство(Результат, "абв");
КонецПроцедуры
Процедура Тест_ДолженПроверить_ПолучениеПустогоМассива() Экспорт
Текст = "[]";
Результат = ПрочитатьJSONИзСтроки(Текст);
юТест.ПроверитьРавенство(Тип("Массив"), ТипЗнч(Результат) );
юТест.ПроверитьРавенство(0, Результат.Количество());
КонецПроцедуры
Процедура Тест_ДолженПроверить_ПолучениеПустойСтруктуры() Экспорт
Текст = "{}";
Результат = ПрочитатьJSONИзСтроки(Текст);
юТест.ПроверитьРавенство(Тип("Структура"), ТипЗнч(Результат));
юТест.ПроверитьРавенство(Результат.Количество(), 0);
КонецПроцедуры
Процедура Тест_ДолженПроверить_ПолучениеПустогоСоответствия() Экспорт
Текст = "{}";
Результат = ПрочитатьJSONИзСтроки(Текст,Истина);
юТест.ПроверитьРавенство(Тип("Соответствие"), ТипЗнч(Результат));
юТест.ПроверитьРавенство(Результат.Количество(), 0);
КонецПроцедуры
Процедура Тест_ДолженПроверить_ПолучениеВложенныхМассивов() Экспорт
Текст = "[[123,456],789,[-3,-2,""-0""],{""Ф"":[""Ы"",222]}]";
Результат = ПрочитатьJSONИзСтроки(Текст);
юТест.ПроверитьРавенство(Тип("Массив"), ТипЗнч(Результат));
юТест.ПроверитьРавенство(4, Результат.Количество());
юТест.ПроверитьРавенство(Тип("Число"), ТипЗнч(Результат[1]));
юТест.ПроверитьРавенство(789, Результат[1]);
юТест.ПроверитьРавенство(Тип("Массив"), ТипЗнч(Результат[2]));
юТест.ПроверитьРавенство(3, Результат[2].Количество());
юТест.ПроверитьРавенство("-0", Результат[2][2]);
юТест.ПроверитьРавенство(Тип("Структура"), ТипЗнч(Результат[3]));
КонецПроцедуры
Процедура Тест_ДолженПроверить_ОднострочныйКомментарийВКонцеМассива() Экспорт
Текст = "[
|{
| ""NAME"": ""n1"",
| ""Method"": ""m1"",
| ""PATH"": ""p1""
|},
|{
| ""NAME"": ""n2"",
| //""Method"": ""m2"",
| ""PATH"": ""p2""
|}
|//},
|//{
|// ""NAME"": """",
|]";
Результат = ПрочитатьJSONИзСтроки(Текст);
юТест.ПроверитьРавенство(2, Результат.Количество());
юТест.ПроверитьРавенство("p2", Результат[1].PATH);
КонецПроцедуры
Процедура Тест_ДолженПроверить_ОднострочныйКомментарийВнутриСтуктуры() Экспорт
Текст = "
|{
| ""test"": //fail
| ""pass""
|}";
Результат = ПрочитатьJSONИзСтроки(Текст);
юТест.ПроверитьРавенство("pass", Результат.test);
КонецПроцедуры
Процедура Тест_ДолженПроверить_ОднострочныйКомментарийВНачалеМассива() Экспорт
Текст = "
|[// !!!
|""fail"",""pass""]
|";
Результат = ПрочитатьJSONИзСтроки(Текст);
юТест.ПроверитьРавенство("pass", Результат[1]);
КонецПроцедуры
Процедура Тест_ДолженПроверить_МногострочныйКомментарийВнутриСтуктуры() Экспорт
Текст = "
|{
| ""test"": /*fail
| ""??""*/ ""ok""
|}";
Результат = ПрочитатьJSONИзСтроки(Текст);
юТест.ПроверитьРавенство("ok", Результат.test);
КонецПроцедуры
Процедура Тест_ДолженПроверить_МногострочныйКомментарийВнутриМассива() Экспорт
Текст = "
|[
| ""test"", /*fail
| ""??""]*/ ""ok""
|]";
Результат = ПрочитатьJSONИзСтроки(Текст);
юТест.ПроверитьРавенство("ok", Результат[1]);
КонецПроцедуры
Процедура Тест_ДолженПроверить_ПродолжениеЧтения() Экспорт
Текст = "[123,456] {""аб"":""вг"",""де"":""жз"",""ик"":""лм""}";
Чтение = Новый ЧтениеJSON();
Чтение.УстановитьСтроку(Текст);
Результат1 = ПрочитатьJSON(Чтение);
Результат2 = ПрочитатьJSON(Чтение);
Чтение.Закрыть();
юТест.ПроверитьРавенство(Тип("Массив"), ТипЗнч(Результат1));
юТест.ПроверитьРавенство(2, Результат1.Количество());
юТест.ПроверитьРавенство(Тип("Структура"), ТипЗнч(Результат2));
юТест.ПроверитьРавенство(3, Результат2.Количество());
КонецПроцедуры
Процедура Тест_ДолженПроверить_ПродолжениеЧтенияСИзменениемСтруктуры() Экспорт
Текст = "{""аб"":""вг"",""де"":""жз""} {""ик"":""лм""}";
Чтение = Новый ЧтениеJSON();
Чтение.УстановитьСтроку(Текст);
Результат1 = ПрочитатьJSON(Чтение);
Результат2 = ПрочитатьJSON(Чтение,Истина);
Чтение.Закрыть();
юТест.ПроверитьРавенство(Тип("Структура"), ТипЗнч(Результат1));
юТест.ПроверитьРавенство(2, Результат1.Количество());
юТест.ПроверитьРавенство(Тип("Соответствие"), ТипЗнч(Результат2));
юТест.ПроверитьРавенство(1, Результат2.Количество());
юТест.ПроверитьРавенство("лм", Результат2["ик"]);
КонецПроцедуры
Процедура Тест_ДолженВызватьОшибку_ДляUndefined() Экспорт
Текст = "[123,undefined,456]";
Попытка
Результат = ПрочитатьJSONИзСтроки(Текст);
Исключение
Возврат;
КонецПопытки;
ВызватьИсключение "Должно было быть выдано исключение, но его не было";
КонецПроцедуры
Процедура Тест_ДолженВызватьОшибку_ПриНезакрытомМассиве() Экспорт
Текст = "[[[123,456]]";
Попытка
Результат = ПрочитатьJSONИзСтроки(Текст);
Исключение
Возврат;
КонецПопытки;
ВызватьИсключение "Должно было быть выдано исключение, но его не было";
КонецПроцедуры
Процедура Тест_ДолженВызватьОшибку_ПриНезакрытомОбъекте() Экспорт
Текст = "{""aбв"":456";
Попытка
Результат = ПрочитатьJSONИзСтроки(Текст);
Исключение
Возврат;
КонецПопытки;
ВызватьИсключение "Должно было быть выдано исключение, но его не было";
КонецПроцедуры
Процедура Тест_ДолженВызватьОшибку_ПриНезакрытомВложенномМассиве() Экспорт
Текст = "{""aбв"":[456,789}";
Попытка
Результат = ПрочитатьJSONИзСтроки(Текст);
Исключение
Возврат;
КонецПопытки;
ВызватьИсключение "Должно было быть выдано исключение, но его не было";
КонецПроцедуры
Процедура Тест_ДолженВызватьОшибку_ПриНезакрытомВложенномОбъекте() Экспорт
Текст = "[{""aбв"":456]";
Попытка
Результат = ПрочитатьJSONИзСтроки(Текст);
Исключение
Возврат;
КонецПопытки;
ВызватьИсключение "Должно было быть выдано исключение, но его не было";
КонецПроцедуры
Процедура Тест_ДолженВызватьОшибку_ПриПропущенномЗначенииСвойства() Экспорт
Текст = "{""aбв"":}";
Попытка
Результат = ПрочитатьJSONИзСтроки(Текст);
Исключение
Возврат;
КонецПопытки;
ВызватьИсключение "Должно было быть выдано исключение, но его не было";
КонецПроцедуры
Процедура Тест_ДолженВызватьОшибку_ПриНезакрытомКомментарии() Экспорт
Текст = "[123,456 /*]";
Попытка
Результат = ПрочитатьJSONИзСтроки(Текст);
Исключение
Возврат;
КонецПопытки;
ВызватьИсключение "Должно было быть выдано исключение, но его не было";
КонецПроцедуры
Процедура Тест_ДолженВызватьОшибку_ПриНедопустимомКлючеСтруктуры() Экспорт
Текст = "{""123"":""456""}";
Попытка
Результат = ПрочитатьJSONИзСтроки(Текст);
Исключение
Возврат;
КонецПопытки;
ВызватьИсключение "Должно было быть выдано исключение, но его не было";
КонецПроцедуры
Процедура Тест_ДолженПроверить_ПроизвольныйКлючСоответствия() Экспорт
Текст = "{""%/$!"":""456""}";
Результат = ПрочитатьJSONИзСтроки(Текст, Истина);
юТест.ПроверитьРавенство("456", Результат["%/$!"]);
КонецПроцедуры
Процедура Тест_ДолженВызватьОшибку_ПриПустомЗначенииВнутриМассива() Экспорт
Текст = "[123,,456]";
Попытка
Результат = ПрочитатьJSONИзСтроки(Текст);
Исключение
Возврат;
КонецПопытки;
ВызватьИсключение "Должно было быть выдано исключение, но его не было";
КонецПроцедуры
Процедура Тест_ДолженВызватьОшибку_ПриПустомЗначенииВКонцеМассива() Экспорт
Текст = "[123,456,,]";
Попытка
Результат = ПрочитатьJSONИзСтроки(Текст);
Исключение
Возврат;
КонецПопытки;
ВызватьИсключение "Должно было быть выдано исключение, но его не было";
КонецПроцедуры
Процедура Тест_ДолженВызватьОшибку_ПриПустомЗначенииСвойства() Экспорт
Текст = "{""аб"": , ""еж"":""кл""}";;
Попытка
Результат = ПрочитатьJSONИзСтроки(Текст);
Исключение
Возврат;
КонецПопытки;
ВызватьИсключение "Должно было быть выдано исключение, но его не было";
КонецПроцедуры
Процедура Тест_ДолженПроверить_ЗапятуюВКонцеМассива() Экспорт
Текст = "[123,456,789,]";
Результат = ПрочитатьJSONИзСтроки(Текст);
юТест.ПроверитьРавенство(3, Результат.Количество());
юТест.ПроверитьРавенство(789, Результат[2]);
КонецПроцедуры
Процедура Тест_ДолженПроверить_ЗапятуюВКонцеОбъекта() Экспорт
Текст = "{""аб"":""гд"",""еж"":""кл"",}";
Результат = ПрочитатьJSONИзСтроки(Текст);
юТест.ПроверитьРавенство(2, Результат.Количество());
юТест.ПроверитьРавенство("кл", Результат["еж"]);
КонецПроцедуры
You can’t perform that action at this time.
