/
EvilBeaver
/
OneScript
Обзор
Документация
Войти
/
EvilBeaver
/
OneScript
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
v1.9.4
tests/xmlwrite.os
274 строки
14 KB
Sergey Batanov
Добавлен тест на ЗаписатьТекст.
08 июл 2018, 22:30
08 июл 2018, 22:30
2b30d49
Код
Авторство
О чём код?
/////////////////////////////////////////////////////////////////////// // // Приемочные тесты объекта ЗаписьXML // // /////////////////////////////////////////////////////////////////////// Перем юТест; //////////////////////////////////////////////////////////////////// // Программный интерфейс Функция ПолучитьСписокТестов(ЮнитТестирование) Экспорт юТест = ЮнитТестирование; ВсеТесты = Новый Массив; ВсеТесты.Добавить("ТестДолжен_ЗаписатьВСтроку"); ВсеТесты.Добавить("ТестДолжен_ЗаписатьВФайл"); ВсеТесты.Добавить("ТестДолжен_ЗаписатьВФайл_BOM"); ВсеТесты.Добавить("ТестДолжен_ЗаписатьВФайл_БезBOM"); ВсеТесты.Добавить("ТестДолжен_ЗаписатьСоответствиеПространстваИмен"); ВсеТесты.Добавить("ТестДолжен_ПроверитьКонтекстПространствИменВоВремяЗаписи"); ВсеТесты.Добавить("ТестДолжен_ЗаписатьВСтрокуСОтступомТабами"); ВсеТесты.Добавить("ТестДолжен_ЗаписатьВСтрокуБезПробелаПередЗакрытием"); ВсеТесты.Добавить("ТестДолжен_ПроверитьПравильныйВыводПробелСлэша"); ВсеТесты.Добавить("ТестДолжен_ЗаписатьТекст"); Возврат ВсеТесты; КонецФункции Процедура ТестДолжен_ЗаписатьВСтроку() Экспорт З = Новый ЗаписьXML; З.УстановитьСтроку("windows-1251"); ЗаписатьСодержимое(З); С = З.Закрыть(); НормализоватьПереводыСтрок(С); юТест.ПроверитьРавенство(ЭталонДокумента(), С); КонецПроцедуры Процедура ТестДолжен_ЗаписатьВСтрокуСОтступомТабами() Экспорт СтрокаОтступа = Символы.Таб + " | "; З = Новый ЗаписьXML(); З.УстановитьСтроку(Новый ПараметрыЗаписиXML("windows-1251",,,, СтрокаОтступа)); ЗаписатьСодержимое(З); С = З.Закрыть(); НормализоватьПереводыСтрок(С); юТест.ПроверитьРавенство(ЭталонДокумента(СтрокаОтступа), С); КонецПроцедуры Процедура ТестДолжен_ЗаписатьВФайл() Экспорт ВремФайл = КаталогВременныхФайлов() + "/os-xml-write-test.xml"; З = Новый ЗаписьXML; З.ОткрытьФайл(ВремФайл, "windows-1251"); С = ""; Попытка ЗаписатьСодержимое(З); З.Закрыть(); Чтение = Новый ЧтениеТекста(ВремФайл, "windows-1251"); С = Чтение.Прочитать(); Чтение.Закрыть(); Исключение УдалитьВременныйФайл(ВремФайл); ВызватьИсключение; КонецПопытки; УдалитьВременныйФайл(ВремФайл); НормализоватьПереводыСтрок(С); юТест.ПроверитьРавенство(ЭталонДокумента(), С); КонецПроцедуры Процедура ПроверитьЗаписьВУТФ_СБОМ_БезБОМ(СБом) ВремФайл = КаталогВременныхФайлов() + "/os-xml-write-test.xml"; З = Новый ЗаписьXML; З.ОткрытьФайл(ВремФайл, "UTF-8", СБОМ); С = ""; Попытка З.ЗаписатьНачалоЭлемента("root"); З.ЗаписатьКонецЭлемента(); З.Закрыть(); Ф = Новый Файл(ВремФайл); Чтение = Новый ЧтениеТекста(ВремФайл); Содержимое = Чтение.Прочитать(); Чтение.Закрыть(); Исключение УдалитьВременныйФайл(ВремФайл); ВызватьИсключение; КонецПопытки; РазмерФайла = Ф.Размер(); УдалитьВременныйФайл(ВремФайл); ТеоретическийРазмерФайла = СтрДлина(Содержимое) + ?(СБОМ, 3, 0); // + размер BOM юТест.ПроверитьРавенство(РазмерФайла, ТеоретическийРазмерФайла); КонецПроцедуры Процедура ТестДолжен_ЗаписатьВФайл_BOM() Экспорт ПроверитьЗаписьВУТФ_СБОМ_БезБОМ(Истина); КонецПроцедуры Процедура ТестДолжен_ЗаписатьВФайл_БезBOM() Экспорт ПроверитьЗаписьВУТФ_СБОМ_БезБОМ(Ложь); КонецПроцедуры Функция ЭталонДокумента(Знач СтрокаОтступа = " ") Текст = СтрЗаменить( "<?xml version=""1.0"" encoding=""windows-1251""?> |<Привет xmlns:тест=""http://beaversoft.ru/oscript/test""> | <Сообщение>Это текст <---></Сообщение> |</Привет>", Символы.Таб, СтрокаОтступа); НормализоватьПереводыСтрок(Текст); Возврат Текст; КонецФункции Процедура ЗаписатьСодержимое(ЗаписьXML) ЗаписьXML.ЗаписатьОбъявлениеXML(); ЗаписьXML.ЗаписатьНачалоЭлемента("Привет"); ЗаписьXML.ЗаписатьСоответствиеПространстваИмен("тест","http://beaversoft.ru/oscript/test"); ЗаписьXML.ЗаписатьНачалоЭлемента("Сообщение"); ЗаписьXML.ЗаписатьТекст("Это текст <--->"); ЗаписьXML.ЗаписатьКонецЭлемента(); ЗаписьXML.ЗаписатьКонецЭлемента(); КонецПроцедуры Процедура УдалитьВременныйФайл(Знач ВремФайл) Ф = Новый Файл(ВремФайл); Если Ф.Существует() Тогда //УдалитьФайлы(Ф.ПолноеИмя); КонецЕсли; КонецПроцедуры Процедура НормализоватьПереводыСтрок(Строка) Строка = СтрЗаменить(Строка, Символы.ВК + Символы.ПС, Символы.ПС); КонецПроцедуры Процедура ТестДолжен_ЗаписатьСоответствиеПространстваИмен() Экспорт ЗаписьXML = Новый ЗаписьXML; ЗаписьXML.УстановитьСтроку(); ЗаписьXML.ЗаписатьОбъявлениеXML(); ЗаписьXML.ЗаписатьНачалоЭлемента("opm-metadata"); ЗаписьXML.ЗаписатьСоответствиеПространстваИмен("", "http://oscript.io/schemas/opm-metadata/1.0"); ЗаписьXML.ЗаписатьНачалоЭлемента("test"); ЗаписьXML.ЗаписатьСоответствиеПространстваИмен("v2", "http://oscript.io/schemas/opm-metadata/2.0"); юТест.ПроверитьРавенство(ЗаписьXML.НайтиПрефикс("http://oscript.io/schemas/opm-metadata/2.0"), "v2", "Пространство имён 2"); юТест.ПроверитьРавенство(ЗаписьXML.НайтиПрефикс("http://oscript.io/schemas/opm-metadata/1.0"), "", "Пространство имён по-умолчанию"); юТест.ПроверитьРавенство(ЗаписьXML.НайтиПрефикс("http://oscript.io/schemas/opm-metadata/x.x"), Неопределено, "Не заданное пространство имён"); ЗаписьXML.ЗаписатьКонецЭлемента(); ЗаписьXML.ЗаписатьКонецЭлемента(); Текст = ЗаписьXML.Закрыть(); Чтение = Новый ЧтениеXML; Чтение.УстановитьСтроку(Текст); Чтение.ПерейтиКСодержимому(); юТест.ПроверитьРавенство(Чтение.ПолучитьАтрибут("xmlns"), "http://oscript.io/schemas/opm-metadata/1.0"); Чтение.Закрыть(); КонецПроцедуры Процедура ТестДолжен_ПроверитьКонтекстПространствИменВоВремяЗаписи() Экспорт ЗаписьXML = Новый ЗаписьXML; ЗаписьXML.УстановитьСтроку(); // Проверим, что скрипт не падает, когда ничего не начали записывать НеПадает = ЗаписьXML.КонтекстПространствИмен.СоответствияПространствИмен(); ЗаписьXML.ЗаписатьНачалоЭлемента("Корень"); юТест.ПроверитьРавенство(ЗаписьXML.КонтекстПространствИмен.Глубина, 1); ЗаписьXML.ЗаписатьСоответствиеПространстваИмен("", "Пространство"); ЗаписьXML.ЗаписатьСоответствиеПространстваИмен("П1", "ЕщёПространство"); юТест.ПроверитьРавенство(ЗаписьXML.КонтекстПространствИмен.ПространствоИменПоУмолчанию, "Пространство"); юТест.ПроверитьРавенство(ЗаписьXML.КонтекстПространствИмен.НайтиURIПространстваИмен("П1"), "ЕщёПространство"); ЗаписьXML.ЗаписатьНачалоЭлемента("Дитё"); юТест.ПроверитьРавенство(ЗаписьXML.КонтекстПространствИмен.ПространствоИменПоУмолчанию, "Пространство"); юТест.ПроверитьРавенство(ЗаписьXML.КонтекстПространствИмен.НайтиURIПространстваИмен("П1"), "ЕщёПространство"); ЗаписьXML.ЗаписатьСоответствиеПространстваИмен("П2", "Пространство2"); юТест.ПроверитьРавенство(ЗаписьXML.КонтекстПространствИмен.НайтиURIПространстваИмен("П2"), "Пространство2"); ЗаписьXML.ЗаписатьКонецЭлемента(); юТест.ПроверитьРавенство(ЗаписьXML.КонтекстПространствИмен.ПространствоИменПоУмолчанию, "Пространство"); юТест.ПроверитьРавенство(ЗаписьXML.КонтекстПространствИмен.НайтиURIПространстваИмен("П1"), "ЕщёПространство"); юТест.ПроверитьРавенство(ЗаписьXML.КонтекстПространствИмен.НайтиURIПространстваИмен("П2"), Неопределено); ЗаписьXML.ЗаписатьКонецЭлемента(); КонецПроцедуры Процедура ТестДолжен_ЗаписатьВСтрокуБезПробелаПередЗакрытием() Экспорт ЗаписьXML = Новый ЗаписьXML; ЗаписьXML.УстановитьСтроку(); ЗаписьXML.ЗаписатьНачалоЭлемента("Элемент"); ЗаписьXML.ЗаписатьАтрибут("Атрибут", "Значение"); ЗаписьXML.ЗаписатьКонецЭлемента(); СтрокаПроверки = ЗаписьXML.Закрыть(); юТест.ПроверитьРавенство(СтрокаПроверки, "<Элемент Атрибут=""Значение""/>"); КонецПроцедуры Процедура ТестДолжен_ПроверитьПравильныйВыводПробелСлэша() Экспорт ЗаписьXML = Новый ЗаписьXML; ЗаписьXML.УстановитьСтроку(); ЗаписьXML.ЗаписатьНачалоЭлемента("Элемент"); ЗаписьXML.ЗаписатьАтрибут("Атрибут", XmlСтрока(" /")); ЗаписьXML.ЗаписатьКонецЭлемента(); СтрокаПроверки = ЗаписьXML.Закрыть(); юТест.ПроверитьРавенство(СтрокаПроверки, "<Элемент Атрибут="" /""/>"); ЗаписьXML = Новый ЗаписьXML; ЗаписьXML.УстановитьСтроку(); ЗаписьXML.ЗаписатьНачалоЭлемента("Элемент"); ЗаписьXML.ЗаписатьТекст(XmlСтрока(" /")); ЗаписьXML.ЗаписатьКонецЭлемента(); СтрокаПроверки = ЗаписьXML.Закрыть(); юТест.ПроверитьРавенство(СтрокаПроверки, "<Элемент> /</Элемент>"); КонецПроцедуры Процедура ТестДолжен_ЗаписатьТекст() Экспорт Запись = Новый ЗаписьXML; Запись.УстановитьСтроку(); Запись.ЗаписатьНачалоЭлемента("root"); Запись.ЗаписатьТекст("123"); Запись.ЗаписатьКонецЭлемента(); Результат = Запись.Закрыть(); юТест.ПроверитьРавенство(Результат, "<root>123</root>"); КонецПроцедуры