epf_Iterator/test/Тест_Итератор/Ext/ObjectModule.bsl
Dmitry 686dcfa9ce
реализация первых 21 тестов
реализованы тесты:
- Тест_СоздатьНовый
- Тест_Клонировать
- Тест_Начать
- Тест_НачатьС
- Тест_ВзятьИз
- Тест_РазделитьСтроку
- Тест_УстановитьКонтекст
- Тест_Собрать
- Тест_СобратьСтроку
- Тест_Контекст
- Тест_Карта
- Тест_Фильтр
- Тест_Свернуть
- Тест_ВзятьНеБольше
- Тест_Пропустить
- Тест_Срез
- Тест_Хвост
- Тест_Обратить
- Тест_Транспонировать
- Тест_Сортировать
- Тест_Перемешать
2022-08-31 17:13:33 +03:00

459 lines
24 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

Перем КонтекстЯдра;
Перем Ожидаем;
Перем Утверждения;
Перем СтроковыеУтилиты;
// { интерфейс тестирования
Процедура Инициализация(КонтекстЯдраПараметр) Экспорт
КонтекстЯдра = КонтекстЯдраПараметр;
Утверждения = КонтекстЯдра.Плагин("БазовыеУтверждения");
Ожидаем = КонтекстЯдра.Плагин("УтвержденияBDD");
СтроковыеУтилиты = КонтекстЯдра.Плагин("СтроковыеУтилиты");
КонецПроцедуры
Процедура ЗаполнитьНаборТестов(НаборТестов) Экспорт
НаборТестов.Добавить("ТестДолжен_ПроверитьСозданиеИтератора");
НаборТестов.НачатьГруппу("Тесты итератора", Истина);
НаборТестов.Добавить("Тест_СоздатьНовый");
НаборТестов.Добавить("Тест_Клонировать");
НаборТестов.Добавить("Тест_Начать");
НаборТестов.Добавить("Тест_НачатьС");
НаборТестов.Добавить("Тест_ВзятьИз");
НаборТестов.Добавить("Тест_РазделитьСтроку");
НаборТестов.Добавить("Тест_УстановитьКонтекст");
НаборТестов.Добавить("Тест_Собрать");
НаборТестов.Добавить("Тест_СобратьСтроку");
НаборТестов.Добавить("Тест_Контекст");
НаборТестов.Добавить("Тест_Карта");
НаборТестов.Добавить("Тест_Фильтр");
НаборТестов.Добавить("Тест_Свернуть");
НаборТестов.Добавить("Тест_ВзятьНеБольше");
НаборТестов.Добавить("Тест_Пропустить");
НаборТестов.Добавить("Тест_Срез");
НаборТестов.Добавить("Тест_Хвост");
НаборТестов.Добавить("Тест_Обратить");
НаборТестов.Добавить("Тест_Транспонировать");
НаборТестов.Добавить("Тест_Сортировать");
НаборТестов.Добавить("Тест_Перемешать");
НаборТестов.Добавить("Тест_ВГраница");
НаборТестов.Добавить("Тест_Количество");
НаборТестов.Добавить("Тест_Вставить");
НаборТестов.Добавить("Тест_Добавить");
НаборТестов.Добавить("Тест_Найти");
НаборТестов.Добавить("Тест_Очистить");
НаборТестов.Добавить("Тест_Получить");
НаборТестов.Добавить("Тест_Удалить");
НаборТестов.Добавить("Тест_Установить");
НаборТестов.Добавить("Тест_Пустой");
НаборТестов.Добавить("Тест_Содержит");
НаборТестов.Добавить("Тест_Первый");
НаборТестов.Добавить("Тест_Последний");
НаборТестов.Добавить("Тест_СнятьПервый");
НаборТестов.Добавить("Тест_СнятьПоследний");
НаборТестов.Добавить("Тест_Дополнить");
НаборТестов.Добавить("Тест_ТолькоУникальные");
НаборТестов.Добавить("Тест_РазностьС");
НаборТестов.Добавить("Тест_УдалитьЗначение");
НаборТестов.Добавить("Тест_УдалитьВсеВхождения");
НаборТестов.Добавить("Тест_УдалитьВсеВхожденияТипа");
НаборТестов.Добавить("Тест_СделатьПлоским");
НаборТестов.Добавить("Тест_СброситьПозицию");
НаборТестов.Добавить("Тест_Следующий");
НаборТестов.Добавить("Тест_ТекущийИндекс");
НаборТестов.Добавить("Тест_ТекущийЭлемент");
НаборТестов.Добавить("Тест_СледующийЭлемент");
НаборТестов.Добавить("Тест_УстановитьИндекс");
НаборТестов.Добавить("Тест_Продвинуть");
НаборТестов.Добавить("Тест_ИндексКорректен");
НаборТестов.Добавить("Тест_Максимум");
НаборТестов.Добавить("Тест_Минимум");
НаборТестов.Добавить("Тест_Сумма");
НаборТестов.Добавить("Тест_Произведение");
НаборТестов.Добавить("Тест_Среднее");
НаборТестов.Добавить("Тест_Медиана");
НаборТестов.Добавить("Тест_КакСтроки");
НаборТестов.Добавить("Тест_КакЧисла");
НаборТестов.Добавить("Тест_КакДаты");
НаборТестов.Добавить("Тест_КакБулево");
НаборТестов.Добавить("Тест_ВерноВсе");
НаборТестов.Добавить("Тест_ВерноЛюбое");
НаборТестов.Добавить("Тест_ВерноТолькоОдно");
КонецПроцедуры
Процедура ПередЗапускомТеста() Экспорт
КонецПроцедуры
Процедура ПослеЗапускаТеста() Экспорт
КонецПроцедуры
Функция ПутьКФайлу_ОбъектаТестирования()
ПутьКЭтойОбработке = ЭтотОбъект["ИспользуемоеИмяФайла"];
Файл_Этот = Новый Файл(ПутьКЭтойОбработке);
Возврат СтрШаблон("%1%2Итератор.epf", Файл_Этот.Путь, ПолучитьРазделительПути());
КонецФункции
Функция Итератор()
ОЗООД = Новый ОписаниеЗащитыОтОпасныхДействий;
ОЗООД.ПредупреждатьОбОпасныхДействиях = Ложь;
Возврат ВнешниеОбработки.Создать(ПутьКФайлу_ОбъектаТестирования(), Ложь, ОЗООД);
КонецФункции
// } интерфейс тестирования
// { блок юнит-тестов - сами тесты
Процедура ТестДолжен_ПроверитьСозданиеИтератора() Экспорт
Ожидаем.Что(Итератор().Метаданные().Синоним).Равно("Итератор");
КонецПроцедуры
Процедура Тест_СоздатьНовый() Экспорт
Итератор_1 = Итератор();
Итератор_2 = Итератор_1.СоздатьНовый();
Ожидаем.Что(Итератор_2).Не_().Равно(Итератор_1);
Ожидаем.Что(Итератор_2.Метаданные().Синоним).Равно("Итератор");
КонецПроцедуры
Процедура Тест_Клонировать() Экспорт
Итератор_1 = Итератор().ВзятьИз(СтрРазделить("1,2,3", ","));
Итератор_2 = Итератор_1.Клонировать();
Итератор_1.СнятьПоследний();
Ожидаем.Что(Итератор_2).Не_().Равно(Итератор_1);
Ожидаем.Что(Итератор_1.Количество()).Меньше(Итератор_2.Количество());
КонецПроцедуры
Процедура Тест_Начать() Экспорт
Итератор = Итератор().ВзятьИз(СтрРазделить("1,2,3", ","));
Итератор.Начать();
Ожидаем.Что(Итератор.Пустой()).ЭтоИстина();
КонецПроцедуры
Процедура Тест_НачатьС() Экспорт
Итератор = Итератор().НачатьС("тест");
Ожидаем.Что(Итератор.Количество()).Равно(1);
КонецПроцедуры
Процедура Тест_ВзятьИз() Экспорт
Итератор = Итератор().ВзятьИз(СтрРазделить("1,2,3", ","));
Ожидаем.Что(Итератор.Количество()).Равно(3);
КонецПроцедуры
Процедура Тест_РазделитьСтроку() Экспорт
Итератор = Итератор().РазделитьСтроку("1,2,3", ",");
Ожидаем.Что(Итератор.Количество()).Равно(3);
КонецПроцедуры
Процедура Тест_УстановитьКонтекст() Экспорт
Итератор = Итератор().УстановитьКонтекст(1234);
Ожидаем.Что(Итератор.Контекст()).Равно(1234);
КонецПроцедуры
Процедура Тест_Собрать() Экспорт
Итератор = Итератор().РазделитьСтроку("1,2,3", ",");
Результат = Итератор.Собрать();
Ожидаем.Что(Результат.Количество()).Равно(3);
Ожидаем.Что(Результат).ИмеетТип(Тип("Массив"));
КонецПроцедуры
Процедура Тест_СобратьСтроку() Экспорт
Итератор = Итератор().РазделитьСтроку("1,2,3", ",");
Результат = Итератор.СобратьСтроку("/");
Ожидаем.Что(Результат).Равно("1/2/3");
КонецПроцедуры
Процедура Тест_Контекст() Экспорт
Итератор = Итератор().УстановитьКонтекст(4321);
Ожидаем.Что(Итератор.Контекст()).Равно(4321);
КонецПроцедуры
Процедура Тест_Карта() Экспорт
Результат = Итератор()
.УстановитьКонтекст(10)
.Начать()
.Добавить(1)
.Добавить(2)
.Добавить(3)
.Карта("Результат = Элемент + Элемент * _")
.КакСтроки()
.СобратьСтроку(" ");
Ожидаем.Что(Результат).Равно("11 22 33");
КонецПроцедуры
Процедура Тест_Фильтр() Экспорт
Результат = Итератор()
.УстановитьКонтекст(2)
.ПоДиапазону(1,10)
.Фильтр("Условие = 0 = Элемент % _")
.КакСтроки()
.СобратьСтроку(" ");
Ожидаем.Что(Результат).Равно("2 4 6 8 10");
КонецПроцедуры
Процедура Тест_Свернуть() Экспорт
Результат = Итератор()
.УстановитьКонтекст(10)
.ПоДиапазону(1,3)
.Свернуть("Результат = Результат + Элемент * _ ", 0);
Ожидаем.Что(Результат).Равно(10 + 20 + 30);
КонецПроцедуры
Процедура Тест_ВзятьНеБольше() Экспорт
Результат = Итератор()
.ПоДиапазону(1,10)
.КакСтроки()
.ВзятьНеБольше(5)
.СобратьСтроку(" ");
Ожидаем.Что(Результат).Равно("1 2 3 4 5");
КонецПроцедуры
Процедура Тест_Пропустить() Экспорт
Результат = Итератор()
.ПоДиапазону(1,10)
.КакСтроки()
.Пропустить(5)
.СобратьСтроку(" ");
Ожидаем.Что(Результат).Равно("6 7 8 9 10");
КонецПроцедуры
Процедура Тест_Срез() Экспорт
Результат = Итератор()
.ПоДиапазону(1,10)
.КакСтроки()
.Срез(3, 4)
.СобратьСтроку(" ");
Ожидаем.Что(Результат).Равно("4 5 6 7");
КонецПроцедуры
Процедура Тест_Хвост() Экспорт
Результат = Итератор()
.ПоДиапазону(1,10)
.КакСтроки()
.Хвост(3)
.СобратьСтроку(" ");
Ожидаем.Что(Результат).Равно("8 9 10");
КонецПроцедуры
Процедура Тест_Обратить() Экспорт
Результат = Итератор()
.ПоДиапазону(1,3)
.КакСтроки()
.Обратить()
.СобратьСтроку(" ");
Ожидаем.Что(Результат).Равно("3 2 1");
КонецПроцедуры
Процедура Тест_Транспонировать() Экспорт
Длина_А = 3;
Длина_Б = 4;
// формирование
Итератор = Итератор().Начать();
ПодИтератор = Итератор();
Для Каждого Тек_А Из Итератор().ПоДиапазону(1, Длина_А).Собрать() Цикл
ПодИтератор.Начать();
Для Каждого Тек_Б Из Итератор().ПоДиапазону(1, Длина_Б).Обратить().Собрать() Цикл
ПодИтератор.Добавить(Тек_А * 10 + Тек_Б);
КонецЦикла;
Итератор.Добавить(ПодИтератор.КакСтроки().Собрать());
КонецЦикла;
// проверка исходных
Ожидаем.Что(Итератор().ВзятьИз(Итератор.Получить(0)).СобратьСтроку(" ")).Равно("14 13 12 11");
Ожидаем.Что(Итератор().ВзятьИз(Итератор.Получить(1)).СобратьСтроку(" ")).Равно("24 23 22 21");
Ожидаем.Что(Итератор().ВзятьИз(Итератор.Получить(2)).СобратьСтроку(" ")).Равно("34 33 32 31");
// преобразование
Результат = Итератор.Транспонировать();
// проверка результата
Ожидаем.Что(Итератор().ВзятьИз(Итератор.Получить(0)).СобратьСтроку(" ")).Равно("14 24 34");
Ожидаем.Что(Итератор().ВзятьИз(Итератор.Получить(1)).СобратьСтроку(" ")).Равно("13 23 33");
Ожидаем.Что(Итератор().ВзятьИз(Итератор.Получить(2)).СобратьСтроку(" ")).Равно("12 22 32");
Ожидаем.Что(Итератор().ВзятьИз(Итератор.Получить(3)).СобратьСтроку(" ")).Равно("11 21 31");
КонецПроцедуры
Процедура Тест_Сортировать() Экспорт
Результат = Итератор()
.Начать()
.Добавить(7)
.Добавить(9)
.Добавить(3)
.Добавить(6)
.Сортировать()
.КакСтроки()
.СобратьСтроку(" ");
Ожидаем.Что(Результат).Равно("3 6 7 9");
КонецПроцедуры
Процедура Тест_Перемешать() Экспорт
Итератор = Итератор()
.Начать()
.ПоДиапазону(1,300) // чем больше тем меньше вероятность случайного провала, но дольше время теста
.КакСтроки();
Оригинал = Итератор.СобратьСтроку(" ");
мОригинал = Итератор.Собрать();
Результат = Итератор.Перемешать().СобратьСтроку(" ");
Ожидаем.Что(Итератор.Количество()).Равно(мОригинал.Количество());
Ожидаем.Что(Результат).Не_().Равно(Оригинал);
КонецПроцедуры
Процедура Тест_ВГраница() Экспорт
ВызватьИсключение "Не реализовано";
КонецПроцедуры
Процедура Тест_Количество() Экспорт
ВызватьИсключение "Не реализовано";
КонецПроцедуры
Процедура Тест_Вставить() Экспорт
ВызватьИсключение "Не реализовано";
КонецПроцедуры
Процедура Тест_Добавить() Экспорт
ВызватьИсключение "Не реализовано";
КонецПроцедуры
Процедура Тест_Найти() Экспорт
ВызватьИсключение "Не реализовано";
КонецПроцедуры
Процедура Тест_Очистить() Экспорт
ВызватьИсключение "Не реализовано";
КонецПроцедуры
Процедура Тест_Получить() Экспорт
ВызватьИсключение "Не реализовано";
КонецПроцедуры
Процедура Тест_Удалить() Экспорт
ВызватьИсключение "Не реализовано";
КонецПроцедуры
Процедура Тест_Установить() Экспорт
ВызватьИсключение "Не реализовано";
КонецПроцедуры
Процедура Тест_Пустой() Экспорт
ВызватьИсключение "Не реализовано";
КонецПроцедуры
Процедура Тест_Содержит() Экспорт
ВызватьИсключение "Не реализовано";
КонецПроцедуры
Процедура Тест_Первый() Экспорт
ВызватьИсключение "Не реализовано";
КонецПроцедуры
Процедура Тест_Последний() Экспорт
ВызватьИсключение "Не реализовано";
КонецПроцедуры
Процедура Тест_СнятьПервый() Экспорт
ВызватьИсключение "Не реализовано";
КонецПроцедуры
Процедура Тест_СнятьПоследний() Экспорт
ВызватьИсключение "Не реализовано";
КонецПроцедуры
Процедура Тест_Дополнить() Экспорт
ВызватьИсключение "Не реализовано";
КонецПроцедуры
Процедура Тест_ТолькоУникальные() Экспорт
ВызватьИсключение "Не реализовано";
КонецПроцедуры
Процедура Тест_РазностьС() Экспорт
ВызватьИсключение "Не реализовано";
КонецПроцедуры
Процедура Тест_УдалитьЗначение() Экспорт
ВызватьИсключение "Не реализовано";
КонецПроцедуры
Процедура Тест_УдалитьВсеВхождения() Экспорт
ВызватьИсключение "Не реализовано";
КонецПроцедуры
Процедура Тест_УдалитьВсеВхожденияТипа() Экспорт
ВызватьИсключение "Не реализовано";
КонецПроцедуры
Процедура Тест_СделатьПлоским() Экспорт
ВызватьИсключение "Не реализовано";
КонецПроцедуры
Процедура Тест_СброситьПозицию() Экспорт
ВызватьИсключение "Не реализовано";
КонецПроцедуры
Процедура Тест_Следующий() Экспорт
ВызватьИсключение "Не реализовано";
КонецПроцедуры
Процедура Тест_ТекущийИндекс() Экспорт
ВызватьИсключение "Не реализовано";
КонецПроцедуры
Процедура Тест_ТекущийЭлемент() Экспорт
ВызватьИсключение "Не реализовано";
КонецПроцедуры
Процедура Тест_СледующийЭлемент() Экспорт
ВызватьИсключение "Не реализовано";
КонецПроцедуры
Процедура Тест_УстановитьИндекс() Экспорт
ВызватьИсключение "Не реализовано";
КонецПроцедуры
Процедура Тест_Продвинуть() Экспорт
ВызватьИсключение "Не реализовано";КонецПроцедуры
Процедура Тест_ИндексКорректен() Экспорт
ВызватьИсключение "Не реализовано";
КонецПроцедуры
Процедура Тест_Максимум() Экспорт
ВызватьИсключение "Не реализовано";КонецПроцедуры
Процедура Тест_Минимум() Экспорт
ВызватьИсключение "Не реализовано";
КонецПроцедуры
Процедура Тест_Сумма() Экспорт
ВызватьИсключение "Не реализовано";
КонецПроцедуры
Процедура Тест_Произведение() Экспорт
ВызватьИсключение "Не реализовано";
КонецПроцедуры
Процедура Тест_Среднее() Экспорт
ВызватьИсключение "Не реализовано";
КонецПроцедуры
Процедура Тест_Медиана() Экспорт
ВызватьИсключение "Не реализовано";
КонецПроцедуры
Процедура Тест_КакСтроки() Экспорт
ВызватьИсключение "Не реализовано";
КонецПроцедуры
Процедура Тест_КакЧисла() Экспорт
ВызватьИсключение "Не реализовано";
КонецПроцедуры
Процедура Тест_КакДаты() Экспорт
ВызватьИсключение "Не реализовано";
КонецПроцедуры
Процедура Тест_КакБулево() Экспорт
ВызватьИсключение "Не реализовано";
КонецПроцедуры
Процедура Тест_ВерноВсе() Экспорт
ВызватьИсключение "Не реализовано";
КонецПроцедуры
Процедура Тест_ВерноЛюбое() Экспорт
ВызватьИсключение "Не реализовано";
КонецПроцедуры
Процедура Тест_ВерноТолькоОдно() Экспорт
ВызватьИсключение "Не реализовано";
КонецПроцедуры