Skip to content

Commit bcdd452

Browse files
committed
Библиотека JSON переведена на структуру версии 1.0.10
1 parent 5c342c4 commit bcdd452

File tree

4 files changed

+166
-0
lines changed

4 files changed

+166
-0
lines changed

lib.config

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
<package-def>
2+
<class name="ПарсерJSON" file="src/json.os"/>
3+
</package-def>
File renamed without changes.

tests/json-mock.json

Lines changed: 67 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,67 @@
1+
{
2+
"Null": null,
3+
"Неопределено": undefined,
4+
"Ложь": false,
5+
"Истина": true,
6+
"Число (плавающая точка)": 1.001e-2,
7+
"Число (фиксированная точка)": -1000.001,
8+
"Дата": "2011-01-01T12:00:00Z",
9+
"Строка (двойная кавычка)": "Двойная кавычка",
10+
"Строка (одинарная кавычка)": 'Одинарная кавычка',
11+
"Маскируемые символы": " \\ \/ \b \t \n \f \r \" ",
12+
"Заковыристая строка": "\\n\\",
13+
"Проблемные символы": "Спец. символы: \u0000, \u0001, \u0002, ... , \u001e, \u001f; Юникод символы: \u0421\u0430\u0448\u0430\u0020\u003a\u0029",
14+
"Кириллические символы": "’АБВГҐДЂЃЕЀЁЄЖЗЅИЍІЇЙЈКЛЉМНЊОПРСТЋЌУЎФХЦЧЏШЩЪЫЬЭЮЯ",
15+
"Идентификатор": "a763cfbb-f94f-4c67-8e13-0e96a3a7f353",
16+
"Пустой массив": [],
17+
"Пустой объект": {},
18+
"Массив": [
19+
null,
20+
undefined,
21+
false,
22+
true,
23+
1.001e-2,
24+
-1000.001,
25+
"2011-01-01T12:00:00Z",
26+
"Двойная кавычка",
27+
'Одинарная кавычка',
28+
"a763cfbb-f94f-4c67-8e13-0e96a3a7f353",
29+
[
30+
"Первый элемент",
31+
"Второй элемент"
32+
],
33+
{
34+
"Имя": "Александр",
35+
"Отчество": "Владимирович",
36+
"Фамилия": "Переверзев"
37+
},
38+
{
39+
"ДопустимоеИмяСвойства": true,
40+
"Недопустимое Имя Свойства": false
41+
}
42+
],
43+
"Структура":
44+
{
45+
"Имя": "Александр",
46+
"Отчество": "Владимирович",
47+
"Фамилия": "Переверзев"
48+
},
49+
"Соответствие":
50+
{
51+
"ДопустимоеИмяСвойства": true,
52+
"Недопустимое Имя Свойства": false
53+
},
54+
"Ссылка":
55+
{
56+
"Ссылка": "00000000-0000-0000-0000-000000000000",
57+
"Представление": "Неизвестная ссылка"
58+
},
59+
"COMSafeArray": [
60+
0,
61+
1,
62+
2,
63+
3,
64+
4,
65+
5
66+
]
67+
}

tests/json-test.os

Lines changed: 96 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,96 @@
1+
///////////////////////////////////////////////////////////////////////
2+
//
3+
// Тест для парсера JSON
4+
//
5+
///////////////////////////////////////////////////////////////////////
6+
#Использовать ".."
7+
8+
Перем юТест;
9+
Перем _преобразовательJSON;
10+
11+
////////////////////////////////////////////////////////////////////
12+
// Программный интерфейс
13+
14+
Функция Инициализация()
15+
16+
_преобразовательJSON = Новый ПарсерJSON();
17+
18+
КонецФункции
19+
20+
21+
Функция ПолучитьСписокТестов(ЮнитТестирование) Экспорт
22+
23+
юТест = ЮнитТестирование;
24+
25+
ВсеТесты = Новый Массив;
26+
27+
ВсеТесты.Добавить("ТестДолжен_ПроверитьПростойJSON");
28+
ВсеТесты.Добавить("ТестДолжен_ПроверитьФайлMockНаЧтение");
29+
ВсеТесты.Добавить("ТестДолжен_ПроверитьФайлMockНаЗапись");
30+
31+
Возврат ВсеТесты;
32+
КонецФункции
33+
34+
Процедура ТестДолжен_ПроверитьПростойJSON() Экспорт
35+
36+
тестовыйJSON = "{
37+
| ""firstName"": ""Иван"",
38+
| ""lastName"": ""Иванов"",
39+
| ""address"": {
40+
| ""streetAddress"": ""Московское ш., 101, кв.101"",
41+
| ""city"": ""Ленинград"",
42+
| ""postalCode"": 101101
43+
| },
44+
| ""phoneNumbers"": [
45+
| ""812 123-1234"",
46+
| ""916 123-4567""
47+
| ]
48+
|}";
49+
50+
типаОбъект = _преобразовательJSON.ПрочитатьJSON(тестовыйJSON);
51+
52+
ОбъектСтрокой = _преобразовательJSON.ЗаписатьJSON(типаОбъект);
53+
54+
юТест.ПроверитьРавенство(ПривестиОкончанияСтрок(ОбъектСтрокой), ПривестиОкончанияСтрок(тестовыйJSON));
55+
56+
КонецПроцедуры
57+
58+
Процедура ТестДолжен_ПроверитьФайлMockНаЧтение() Экспорт
59+
60+
КаталогСкрипта = Новый Файл(ТекущийСценарий().Источник).Путь;
61+
ЧтениеТекста = Новый ЧтениеТекста(КаталогСкрипта + "/json-mock.json");
62+
63+
СтрокаJSON = ЧтениеТекста.Прочитать();
64+
ЧтениеТекста.Закрыть();
65+
66+
Объект = _преобразовательJSON.ПрочитатьJSON(СтрокаJSON);
67+
68+
Сообщить("Тип полученного объекта: " + ТипЗнч(Объект));
69+
70+
юТест.ПроверитьРавенство(Тип("Соответствие"), ТипЗнч(Объект));
71+
72+
КонецПроцедуры
73+
74+
Процедура ТестДолжен_ПроверитьФайлMockНаЗапись() Экспорт
75+
КаталогСкрипта = Новый Файл(ТекущийСценарий().Источник).Путь;
76+
ЧтениеТекста = Новый ЧтениеТекста(КаталогСкрипта + "/json-mock.json");
77+
78+
СтрокаJSON = ЧтениеТекста.Прочитать();
79+
ЧтениеТекста.Закрыть();
80+
81+
Объект = _преобразовательJSON.ПрочитатьJSON(СтрокаJSON);
82+
83+
СтрокаJSON2 = _преобразовательJSON.ЗаписатьJSON(Объект);
84+
// assert примитивный, желающие могут сделать проверку получше.
85+
юТест.ПроверитьЛожь(ПустаяСтрока(СтрокаJSON2));
86+
87+
КонецПроцедуры
88+
89+
Функция ПривестиОкончанияСтрок(Знач ИсходныйТекст)
90+
Возврат СтрЗаменить(ИсходныйТекст, Символы.ВК + Символы.ПС, Символы.ПС);
91+
КонецФункции
92+
93+
///////////////////////////////////////////////////////////////////
94+
// Точка входа
95+
96+
Инициализация();

0 commit comments

Comments
 (0)