Skip to content

Commit

Permalink
Тесты для ПрочитатьJSON к EvilBeaver#1373
Browse files Browse the repository at this point in the history
  • Loading branch information
Mr-Rm committed Apr 17, 2024
1 parent 1ddd39a commit 6bc8225
Showing 1 changed file with 183 additions and 0 deletions.
183 changes: 183 additions & 0 deletions tests/global-json.os
Original file line number Diff line number Diff line change
@@ -0,0 +1,183 @@
Перем юТест;

Функция ПолучитьСписокТестов(Тестирование) Экспорт

юТест = Тестирование;

СписокТестов = Новый Массив;

СписокТестов.Добавить("Тест_ДолженПроверить_ПолучениеМассива");
СписокТестов.Добавить("Тест_ДолженПроверить_ПолучениеСтруктуры");
СписокТестов.Добавить("Тест_ДолженПроверить_ПолучениеСоответствия");
СписокТестов.Добавить("Тест_ДолженПроверить_ПолучениеЧисла");
СписокТестов.Добавить("Тест_ДолженПроверить_ПолучениеСтроки");
СписокТестов.Добавить("Тест_ДолженПроверить_ПолучениеПустогоМассива");
СписокТестов.Добавить("Тест_ДолженПроверить_ПолучениеПустойСтруктуры");
СписокТестов.Добавить("Тест_ДолженПроверить_ПолучениеПустогоСоответствия");
СписокТестов.Добавить("Тест_ДолженПроверить_ПолучениеВложенныхМассивов");

// issue #1373
СписокТестов.Добавить("Тест_ДолженПроверить_ОднострочныйКомментарийВКонцеМассива");
СписокТестов.Добавить("Тест_ДолженПроверить_ОднострочныйКомментарийВнутриСтуктуры");
СписокТестов.Добавить("Тест_ДолженПроверить_ОднострочныйКомментарийВНачалеМассива");
СписокТестов.Добавить("Тест_ДолженПроверить_МногострочныйКомментарийВнутриСтуктуры");
СписокТестов.Добавить("Тест_ДолженПроверить_МногострочныйКомментарийВнутриМассива");

Возврат СписокТестов;

КонецФункции

Функция Прочитать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, Результат.Количество(), 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]);
КонецПроцедуры

0 comments on commit 6bc8225

Please sign in to comment.