/
smwwiki
/
OneScript_fork
Обзор
Документация
Войти
/
smwwiki
/
OneScript_fork
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
develop
tests/json/test-json_writer.os
209 строк
11 KB
EvilBeaver
Влиты изменения из latest
18 фев 2023, 19:21
18 фев 2023, 19:21
9d98c86
Код
Авторство
О чём код?
#Использовать asserts Перем юТест; Перем ТекстПроверки; Функция ПолучитьСписокТестов(Тестирование) Экспорт юТест = Тестирование; СписокТестов = Новый Массив; СписокТестов.Добавить("Тест_Должен_СверитьСтрокуСоСпецСимволами"); СписокТестов.Добавить("Тест_Должен_СверитьСтрокуЭкранированнымиКириллическимиСимволами"); СписокТестов.Добавить("Тест_Должен_ПроверитьИсключенияДляНедопустимыхТипов"); СписокТестов.Добавить("Тест_Должен_СверитьХешСуммуСгенерированнойСтрокиJSON"); СписокТестов.Добавить("Тест_Должен_СверитьХешСуммуСгенерированнойМетодомЗаписатьJSONСтруктуры"); СписокТестов.Добавить("Тест_Должен_СверитьХешСуммуСгенерированнойМетодомЗаписатьJSONСтруктурыСФиксированнымиКоллекциями"); СписокТестов.Добавить("Тест_Должен_ПроверитьПустуюСтрокуПриЗакрытии"); СписокТестов.Добавить("Тест_Должен_ПроверитьСохранениеУстановленнойСтроки"); Возврат СписокТестов; КонецФункции Процедура Тест_Должен_СверитьХешСуммуСгенерированнойСтрокиJSON() Экспорт Запись = Новый ЗаписьJson(); Запись.УстановитьСтроку(Новый ПараметрыЗаписиJSON(ПереносСтрокJSON.Windows)); Запись.ЗаписатьНачалоОбъекта(); Запись.ЗаписатьИмяСвойства("firstName"); Запись.ЗаписатьЗначение("Иван"); Запись.ЗаписатьИмяСвойства("lastName"); Запись.ЗаписатьЗначение("""Иванов"""); Запись.ЗаписатьИмяСвойства("address"); Запись.ЗаписатьНачалоОбъекта(); Запись.ЗаписатьИмяСвойства("streetAddress"); Запись.ЗаписатьЗначение("Московское ш., 101, кв.101"); Запись.ЗаписатьИмяСвойства("city"); Запись.ЗаписатьЗначение("Ленинград"); Запись.ЗаписатьИмяСвойства("postalCode"); Запись.ЗаписатьЗначение(101101); Запись.ЗаписатьИмяСвойства("float"); Запись.ЗаписатьЗначение(1.54); Запись.ЗаписатьИмяСвойства("undefined"); Запись.ЗаписатьЗначение(Неопределено); Запись.ЗаписатьКонецОбъекта(); Запись.ЗаписатьИмяСвойства("phoneNumbers"); Запись.ЗаписатьНачалоМассива(); Запись.ЗаписатьЗначение("812 123-1234"); Запись.ЗаписатьЗначение("916 123-4567"); Запись.ЗаписатьКонецМассива(); Запись.ЗаписатьКонецОбъекта(); Текст = Запись.Закрыть(); Хеширование = Новый ХешированиеДанных(ХешФункция.CRC32); Хеширование.Добавить(Текст); юТест.ПроверитьРавенство(Хеширование.ХешСумма, 2627237007); КонецПроцедуры Процедура Тест_Должен_СверитьСтрокуЭкранированнымиКириллическимиСимволами() Экспорт ЗаписьJSON = Новый ЗаписьJSON; Параметры = Новый ПараметрыЗаписиJSON(ПереносСтрокJSON.Windows, , , ЭкранированиеСимволовJSON.СимволыВнеASCII); ЗаписьJSON.УстановитьСтроку(Параметры); ЗаписатьJSON(ЗаписьJSON, "Символы кириллицы"); юТест.ПроверитьРавенство(ЗаписьJSON.Закрыть(), """\\u0421\\u0438\\u043c\\u0432\\u043e\\u043b\\u044b \\u043a\\u0438\\u0440\\u0438\\u043b\\u043b\\u0438\\u0446\\u044b"""); КонецПроцедуры Процедура Тест_Должен_СверитьСтрокуСоСпецСимволами() Экспорт ЗаписьJSON = Новый ЗаписьJSON; ЗаписьJSON.УстановитьСтроку(); ЗаписатьJSON(ЗаписьJSON, Символ(1) + Символ(31)); юТест.ПроверитьРавенство(ЗаписьJSON.Закрыть(), """\u0001\u001f"""); КонецПроцедуры Процедура Тест_Должен_СверитьХешСуммуСгенерированнойМетодомЗаписатьJSONСтруктурыСФиксированнымиКоллекциями() Экспорт Запись = Новый ЗаписьJson(); Запись.УстановитьСтроку(Новый ПараметрыЗаписиJSON(ПереносСтрокJSON.Windows)); Структура = Новый Структура(); МассивОбычный = Новый Массив(); МассивОбычный.Добавить("1"); ВложенныйМассив = Новый Массив(); ВложенныйМассив.Добавить("2.1"); ВложенныйМассив.Добавить("2.2"); ФиксМассив = Новый ФиксированныйМассив(ВложенныйМассив); МассивОбычный.Добавить(ФиксМассив); Структура.Вставить("МассивОбычный", МассивОбычный); соответствие = Новый Соответствие(); соответствие.Вставить("ЭлементСоответствия", "ЗначениеСоовтетствия"); ФиксированноеСоответствие = Новый ФиксированноеСоответствие(соответствие); Структура.Вставить("ФиксированноеСоответствие", ФиксированноеСоответствие); ФиксированнаяСтруктура = Новый ФиксированнаяСтруктура(Структура); ЗаписатьJSON(Запись, ФиксированнаяСтруктура); Текст = Запись.Закрыть(); Хеширование = Новый ХешированиеДанных(ХешФункция.CRC32); Хеширование.Добавить(Текст); юТест.ПроверитьРавенство(Хеширование.ХешСумма, 3499253905); КонецПроцедуры Процедура Тест_Должен_СверитьХешСуммуСгенерированнойМетодомЗаписатьJSONСтруктуры() Экспорт Текст = Новый ТекстовыйДокумент(); Текст.Прочитать("json/json-mock_struct.json", КодировкаТекста.UTF8); Чтение = Новый ЧтениеJSON; Чтение.УстановитьСтроку(Текст.ПолучитьТекст()); Структура = ПрочитатьJSON(Чтение); Запись = Новый ЗаписьJson(); Запись.УстановитьСтроку(Новый ПараметрыЗаписиJSON(ПереносСтрокJSON.Windows)); ЗаписатьJSON(Запись, Структура); Текст = Запись.Закрыть(); Хеширование = Новый ХешированиеДанных(ХешФункция.CRC32); Хеширование.Добавить(Текст); юТест.ПроверитьРавенство(Хеширование.ХешСумма, 3352482152); КонецПроцедуры Процедура Тест_Должен_ПроверитьПустуюСтрокуПриЗакрытии() Экспорт Файл = ПолучитьИмяВременногоФайла(".json"); Соотв=Новый Соответствие(); Соотв.Вставить("value",0); ЗаписьJSON = Новый ЗаписьJSON; ЗаписьJSON.УстановитьСтроку(); ЗаписатьJSON(ЗаписьJSON, Соотв); Соотв["value"]=1; ЗаписьJSON.ОткрытьФайл(Файл); ЗаписатьJSON(ЗаписьJSON, Соотв); Результат = ЗаписьJSON.Закрыть(); УдалитьФайлы(Файл); юТест.ПроверитьРавенство(Результат, ""); КонецПроцедуры Процедура Тест_Должен_ПроверитьСохранениеУстановленнойСтроки() Экспорт Файл = ПолучитьИмяВременногоФайла(".json"); ЗаписьJSON = Новый ЗаписьJSON; ЗаписьJSON.УстановитьСтроку(); ЗаписьJSON.ЗаписатьБезОбработки("{"); Попытка ЗаписьJSON.ОткрытьФайл(Файл+"/*"); Исключение КонецПопытки; ЗаписьJSON.ЗаписатьБезОбработки("}"); Результат = ЗаписьJSON.Закрыть(); юТест.ПроверитьРавенство(Результат, "{}"); КонецПроцедуры Процедура ПопыткаЗаписатьЗначение(Зн) ЗаписьJSON = Новый ЗаписьJSON; ЗаписьJSON.УстановитьСтроку(); Попытка ЗаписьJSON.ЗаписатьЗначение(зн); Исключение ЗаписьJSON.Закрыть(); возврат; КонецПопытки; ЗаписьJSON.Закрыть(); ВызватьИсключение "Должно было быть выдано исключение для типа "+ТипЗнч(Зн)+", но его не было"; КонецПроцедуры Процедура Тест_Должен_ПроверитьИсключенияДляНедопустимыхТипов() Экспорт Массив = Новый Массив(); ПопыткаЗаписатьЗначение(Массив); Структура = Новый Структура(); ПопыткаЗаписатьЗначение(Структура); КонецПроцедуры