diff --git a/tests/global-json.os b/tests/global-json.os new file mode 100644 index 000000000..018c0cbbf --- /dev/null +++ b/tests/global-json.os @@ -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]); +КонецПроцедуры +