/
smwwiki
/
OneScript_fork
Обзор
Документация
Войти
/
smwwiki
/
OneScript_fork
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
develop
tests/text-write.os
315 строк
15 KB
Sergey Batanov
Перенесён тест ПрочитатьИзФайлаСРазнымиПереводамиСтрок.
03 окт 2016, 09:42
03 окт 2016, 09:42
00955bc
Код
Авторство
О чём код?
Перем юТест; Функция ПолучитьСписокТестов(ЮнитТестирование) Экспорт юТест = ЮнитТестирование; ВсеТесты = Новый Массив; ВсеТесты.Добавить("ТестДолжен_ПроверитьЧтоВозможнаЗаписьUTF8БезBOMСтандартно"); ВсеТесты.Добавить("ТестДолжен_ПроверитьЧтоВозможнаЗаписьUTF8БезBOMСтандартноСПеречислениемКодировкаТекста"); ВсеТесты.Добавить("ТестДолжен_ПроверитьЧтоВозможнаЗаписьUTF8БезBOMСПеречислениемКодировкаТекста"); ВсеТесты.Добавить("ТестДолжен_ПроверитьЧтоНеоткрытыйФайлБросаетПравильноеИсключениеВМетодеЗаписать"); ВсеТесты.Добавить("ТестДолжен_ПроверитьЧтоНеоткрытыйФайлБросаетПравильноеИсключениеВМетодеЗаписатьСтроку"); ВсеТесты.Добавить("ТестДолжен_ПроверитьЧтоРаботаетКонструкторПоИмениФайлаСНезаполненнымиНеобязательнымиПолями"); ВсеТесты.Добавить("ТестДолжен_ПроверитьЧтоЗаписьСтрокиВФайлПроисходитСразуБезКеширования"); ВсеТесты.Добавить("ТестДолжен_ПроверитьРаботуРазделителей"); ВсеТесты.Добавить("ТестДолжен_ПроверитьРаботуНеобычныхРазделителей1"); ВсеТесты.Добавить("ТестДолжен_ПроверитьРаботуНеобычныхРазделителей2"); ВсеТесты.Добавить("ТестДолжен_ПроверитьРаботуНеобычныхРазделителей3"); ВсеТесты.Добавить("ТестДолжен_ПрочитатьИзФайлаСРазнымиПереводамиСтрок"); Возврат ВсеТесты; КонецФункции Процедура ТестДолжен_ПроверитьЧтоВозможнаЗаписьUTF8БезBOMСтандартно() Экспорт Путь = ПолучитьИмяВременногоФайла("txt"); ЗТ = Новый ЗаписьТекста(Путь, "windows-1251"); ЗТ.Закрыть(); ЗТ = Новый ЗаписьТекста(Путь,"UTF-8",,Истина); ЗТ.Записать("Привет"); ЗТ.Закрыть(); Файл = Новый Файл(Путь); Попытка юТест.ПроверитьРавенство(12, Файл.Размер()); Исключение УдалитьФайлы(Путь); ВызватьИсключение; КонецПопытки; УдалитьФайлы(Путь); КонецПроцедуры Процедура ТестДолжен_ПроверитьЧтоВозможнаЗаписьUTF8БезBOMСтандартноСПеречислениемКодировкаТекста() Экспорт Путь = ПолучитьИмяВременногоФайла("txt"); ЗТ = Новый ЗаписьТекста(Путь, КодировкаТекста.ANSI); ЗТ.Закрыть(); ЗТ = Новый ЗаписьТекста(Путь,КодировкаТекста.UTF8,,Истина); ЗТ.Записать("Привет"); ЗТ.Закрыть(); Файл = Новый Файл(Путь); Попытка юТест.ПроверитьРавенство(12, Файл.Размер()); Исключение УдалитьФайлы(Путь); ВызватьИсключение; КонецПопытки; УдалитьФайлы(Путь); КонецПроцедуры Процедура ТестДолжен_ПроверитьЧтоВозможнаЗаписьUTF8БезBOMСПеречислениемКодировкаТекста() Экспорт Путь = ПолучитьИмяВременногоФайла("txt"); ЗТ = Новый ЗаписьТекста(Путь,КодировкаТекста.UTF8NoBOM); ЗТ.Записать("Привет"); ЗТ.Закрыть(); Файл = Новый Файл(Путь); Попытка юТест.ПроверитьРавенство(12, Файл.Размер()); Исключение УдалитьФайлы(Путь); ВызватьИсключение; КонецПопытки; УдалитьФайлы(Путь); КонецПроцедуры Процедура ТестДолжен_ПроверитьЧтоНеоткрытыйФайлБросаетПравильноеИсключениеВМетодеЗаписать() Экспорт Запись = Новый ЗаписьТекста(); Попытка Запись.Записать("---"); Исключение юТест.ПроверитьРавенство(ИнформацияОбОшибке().Описание, "Файл не открыт", "Метод Записать должен бросать правильное исключение"); Возврат; КонецПопытки; ВызватьИсключение "Не было брошено исключение"; КонецПроцедуры Процедура ТестДолжен_ПроверитьЧтоНеоткрытыйФайлБросаетПравильноеИсключениеВМетодеЗаписатьСтроку() Экспорт Запись = Новый ЗаписьТекста(); Попытка Запись.ЗаписатьСтроку("---"); Исключение юТест.ПроверитьРавенство(ИнформацияОбОшибке().Описание, "Файл не открыт", "Метод ЗаписатьСтроку должен бросать правильное исключение"); Возврат; КонецПопытки; ВызватьИсключение "Не было брошено исключение"; КонецПроцедуры Процедура ТестДолжен_ПроверитьЧтоРаботаетКонструкторПоИмениФайлаСНезаполненнымиНеобязательнымиПолями() Экспорт Перем ИмяФайла, Запись; ИмяФайла = ПолучитьИмяВременногоФайла("txt"); Попытка Запись = Новый ЗаписьТекста(ИмяФайла); Исключение ВызватьИсключение "Не работает конструктор ЗаписьТекста(ИмяФайла,,,)"; КонецПопытки; Запись.Закрыть(); Попытка Запись = Новый ЗаписьТекста(ИмяФайла, КодировкаТекста.ANSI); Исключение ВызватьИсключение "Не работает конструктор ЗаписьТекста(ИмяФайла, Кодировка,,)"; КонецПопытки; Запись.Закрыть(); Попытка Запись = Новый ЗаписьТекста(ИмяФайла, КодировкаТекста.ANSI, Символы.ПС); Исключение ВызватьИсключение "Не работает конструктор ЗаписьТекста(ИмяФайла, Кодировка, ПереводСтрок,)"; КонецПопытки; Запись.Закрыть(); КонецПроцедуры Процедура ТестДолжен_ПроверитьЧтоЗаписьСтрокиВФайлПроисходитСразуБезКеширования() Экспорт Перем ИмяФайла, Запись; ИмяФайла = ПолучитьИмяВременногоФайла("txt"); СтрокаДляФайла = "---"; Запись = Новый ЗаписьТекста(ИмяФайла); Запись.Записать(СтрокаДляФайла); Файл = Новый Файл(ИмяФайла); Попытка юТест.ПроверитьРавенство(6, Файл.Размер()); Исключение Запись.Закрыть(); УдалитьФайлы(ИмяФайла); ВызватьИсключение; КонецПопытки; Запись.Закрыть(); УдалитьФайлы(ИмяФайла); КонецПроцедуры Функция ЭкранироватьПереносыСтрок(Знач Строка1) Возврат СтрЗаменить(СтрЗаменить(Строка1, Символы.ПС, "<LF>"), Символы.ВК, "<CR>"); КонецФункции Процедура ПодробноеСравнениеСтрок(Знач Строка1, Знач Строка2, Знач ТекстСообщения) Если Строка1 = Строка2 Тогда Возврат; КонецЕсли; Строка1 = ЭкранироватьПереносыСтрок(Строка1); Строка2 = ЭкранироватьПереносыСтрок(Строка2); юТест.ПроверитьРавенство(Строка1, Строка2, ТекстСообщения); КонецПроцедуры Процедура ПроверитьЗаписьТекстаСРазделителемСтрокВФайле(Знач Текст, Знач РазделительСтрокВФайле, Знач НаименованиеТеста) ИмяФайла = ПолучитьИмяВременногоФайла("txt"); Запись = Новый ЗаписьТекста; Запись.Открыть(ИмяФайла, "UTF-8", Символы.ПС, Ложь, РазделительСтрокВФайле); Запись.Записать(Текст); Запись.Закрыть(); Чтение = Новый ЧтениеТекста; Чтение.Открыть(ИмяФайла, "UTF-8", Символы.ПС, РазделительСтрокВФайле); ПроверяемыйТекст = Чтение.Прочитать(); ПодробноеСравнениеСтрок(ПроверяемыйТекст, Текст, "Не сработало запись-чтение текста (" + НаименованиеТеста + ")"); КонецПроцедуры Процедура ТестДолжен_ПроверитьРаботуРазделителей() Экспорт ТекстДляПроверки = "1 |2 |3" ; ПроверитьЗаписьТекстаСРазделителемСтрокВФайле(ТекстДляПроверки, Символы.ПС, "ПС"); ПроверитьЗаписьТекстаСРазделителемСтрокВФайле(ТекстДляПроверки, Символы.ВК + Символы.ПС, "ВК+ПС"); ПроверитьЗаписьТекстаСРазделителемСтрокВФайле(ТекстДляПроверки, Символы.ВК, "ВК"); КонецПроцедуры Процедура ТестДолжен_ПроверитьРаботуНеобычныхРазделителей1() Экспорт ИмяФайла = ПолучитьИмяВременногоФайла("txt"); Запись = Новый ЗаписьТекста; Запись.Открыть(ИмяФайла, , "/"); Запись.ЗаписатьСтроку("123"); Запись.ЗаписатьСтроку("123 |456 |789" ); Запись.Закрыть(); Чтение = Новый ЧтениеТекста; Чтение.Открыть(ИмяФайла); юТест.ПроверитьРавенство(Чтение.ПрочитатьСтроку(), "123/123", "Запись строки с разделителем /"); юТест.ПроверитьРавенство(Чтение.ПрочитатьСтроку(), "456", "Запись строки с разделителем /"); юТест.ПроверитьРавенство(Чтение.ПрочитатьСтроку(), "789/", "Запись строки с разделителем /"); КонецПроцедуры Процедура ТестДолжен_ПроверитьРаботуНеобычныхРазделителей2() Экспорт ИмяФайла = ПолучитьИмяВременногоФайла("txt"); Запись = Новый ЗаписьТекста; Запись.Открыть(ИмяФайла, , , , "/"); Запись.ЗаписатьСтроку("123"); Запись.ЗаписатьСтроку("123 |456 |789" ); Запись.Закрыть(); Чтение = Новый ЧтениеТекста; Чтение.Открыть(ИмяФайла); юТест.ПроверитьРавенство(Чтение.ПрочитатьСтроку(), "123/123/456/789/", "Запись строки с разделителем в файле /"); юТест.ПроверитьРавенство(Чтение.ПрочитатьСтроку(), Неопределено, "Запись строки с разделителем в файле /"); КонецПроцедуры Процедура ТестДолжен_ПроверитьРаботуНеобычныхРазделителей3() Экспорт ИмяФайла = ПолучитьИмяВременногоФайла("txt"); Запись = Новый ЗаписьТекста; Запись.Открыть(ИмяФайла, , "-", , "/"); Запись.ЗаписатьСтроку("123"); Запись.ЗаписатьСтроку("123 |456 |789" ); Запись.Закрыть(); Чтение = Новый ЧтениеТекста; Чтение.Открыть(ИмяФайла); юТест.ПроверитьРавенство(Чтение.ПрочитатьСтроку(), "123-123/456/789-", "Запись строки с разделителем в файле /"); юТест.ПроверитьРавенство(Чтение.ПрочитатьСтроку(), Неопределено, "Запись строки с разделителем в файле /"); КонецПроцедуры Функция КаталогИсходников() Файл = Новый Файл(ТекущийСценарий().Источник); Возврат Файл.Путь; КонецФункции Процедура ТестДолжен_ПрочитатьИзФайлаСРазнымиПереводамиСтрок() Экспорт ПутьФайла = КаталогИсходников() + "/testdata/ObjectModule.txt"; Текст = Новый ЧтениеТекста; Текст.Открыть(ПутьФайла,"UTF-8"); КоличествоСтрок = 0; Пока Истина Цикл Стр = Текст.ПрочитатьСтроку(); Если Стр = Неопределено Тогда Прервать; КонецЕсли; КоличествоСтрок = КоличествоСтрок + 1; КонецЦикла; Текст.Открыть(ПутьФайла,"UTF-8"); Стр = Текст.Прочитать(); юТест.ПроверитьРавенство(6, КоличествоСтрок); юТест.ПроверитьРавенство(125, СтрДлина(Стр)); КонецПроцедуры