/
EvilBeaver
/
OneScript
Обзор
Документация
Войти
/
EvilBeaver
/
OneScript
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
develop
tests/typedescription.os
636 строк
46 KB
Sergey Batanov
#1337: Адаптация для 2.0
23 сен 2023, 19:04
23 сен 2023, 19:04
83ab2e0
Код
Авторство
О чём код?
Перем юТест; Функция ПолучитьСписокТестов(ЮнитТестирование) Экспорт юТест = ЮнитТестирование; ВсеТесты = Новый Массив; ВсеТесты.Добавить("ТестДолжен_ПроверитьКвалификаторыЧисла"); ВсеТесты.Добавить("ТестДолжен_ПроверитьКвалификаторыСтроки"); ВсеТесты.Добавить("ТестДолжен_ПроверитьКвалификаторыДаты"); ВсеТесты.Добавить("ТестДолжен_ПроверитьКвалификаторыДвоичныхДанных"); ВсеТесты.Добавить("ТестДолжен_СоздатьОписаниеТиповПоКвалификаторам"); ВсеТесты.Добавить("ТестДолжен_СоздатьОписаниеТиповПоДругомуОписанию"); ВсеТесты.Добавить("ТестДолжен_СоздатьОписаниеТиповСПропускомПараметров"); ВсеТесты.Добавить("ТестДолжен_СоздатьОписаниеТиповСПараметрамиНеопределено"); ВсеТесты.Добавить("ТестДолжен_СоздатьОписаниеТиповСПроизвольнымПорядкомКвалификаторов"); ВсеТесты.Добавить("ТестДолжен_СоздатьОписаниеТиповСПовторяющимисяКвалификаторами"); ВсеТесты.Добавить("ТестДолжен_СоздатьОписаниеТиповПоДругомуОписаниюСПроизвольнымиКвалификаторами"); ВсеТесты.Добавить("ТестДолжен_СоздатьОписаниеТиповИзМассива"); ВсеТесты.Добавить("ТестДолжен_СоздатьОписаниеТиповПоДругомуОписаниюСМассивамиИзменяемыхТипов"); ВсеТесты.Добавить("ТестДолжен_СоздатьОписаниеТиповСПовторяющимисяТипами"); ВсеТесты.Добавить("ТестДолжен_СоздатьОписаниеТиповПоДругомуОписаниюСПустымиПараметрами"); ВсеТесты.Добавить("ТестДолжен_ПроверитьПередачуНеверныхПараметров"); ВсеТесты.Добавить("ТестДолжен_ПроверитьПриведениеСтрок"); ВсеТесты.Добавить("ТестДолжен_ПроверитьПриведениеБулева"); ВсеТесты.Добавить("ТестДолжен_ПроверитьПриведениеДат"); ВсеТесты.Добавить("ТестДолжен_ПроверитьПриведениеБезПриведения"); ВсеТесты.Добавить("ТестДолжен_ПроверитьПриведениеЧисел"); ВсеТесты.Добавить("ТестДолжен_ПроверитьПриведениеНеопределено"); ВсеТесты.Добавить("ТестДолжен_ПроверитьПриведениеОбъектов"); ВсеТесты.Добавить("ТестДолжен_Преобразование_ОписаниеБезТипов"); ВсеТесты.Добавить("ТестДолжен_Преобразование_ОписаниеБезТипов_КвалификаторыИгнорируются"); ВсеТесты.Добавить("ТестДолжен_ПроверитьОдинаковыйПорядокТипов"); ВсеТесты.Добавить("ТестДолжен_ПроверитьПорядокПриведенияТипов"); Возврат ВсеТесты; КонецФункции Процедура ТестДолжен_ПроверитьКвалификаторыЧисла() Экспорт К1 = Новый КвалификаторыЧисла(10); К2 = Новый КвалификаторыЧисла(10, 0); К3 = Новый КвалификаторыЧисла(10, 0, ДопустимыйЗнак.Любой); К4 = Новый КвалификаторыЧисла(10, 1); юТест.ПроверитьРавенство (К1, К2, "Квалификаторы с одинаковыми параметрами равны"); юТест.ПроверитьРавенство (К1, К3, "Квалификаторы с одинаковыми параметрами равны"); юТест.ПроверитьРавенство (К2, К3, "Квалификаторы с одинаковыми параметрами равны"); юТест.ПроверитьНеРавенство(К1, К4, "Квалификаторы с разными параметрами не равны"); юТест.ПроверитьРавенство(К1.ДопустимыйЗнак, ДопустимыйЗнак.Любой); юТест.ПроверитьРавенство(К1.РазрядностьДробнойЧасти, 0); КонецПроцедуры Процедура ТестДолжен_ПроверитьКвалификаторыСтроки() Экспорт К1 = Новый КвалификаторыСтроки(10); К2 = Новый КвалификаторыСтроки(10, ДопустимаяДлина.Переменная); К3 = Новый КвалификаторыСтроки(10, ДопустимаяДлина.Фиксированная); юТест.ПроверитьРавенство (К1, К2, "Квалификаторы с одинаковыми параметрами равны"); юТест.ПроверитьНеРавенство(К1, К3, "Квалификаторы с разными параметрами не равны"); КонецПроцедуры Процедура ТестДолжен_ПроверитьКвалификаторыДаты() Экспорт К1 = Новый КвалификаторыДаты(); К2 = Новый КвалификаторыДаты(ЧастиДаты.ДатаВремя); К3 = Новый КвалификаторыДаты(ЧастиДаты.Дата); К4 = Новый КвалификаторыДаты(ЧастиДаты.Время); юТест.ПроверитьРавенство (К1, К2, "Квалификаторы с одинаковыми параметрами равны"); юТест.ПроверитьНеРавенство(К1, К3, "Квалификаторы с разными параметрами не равны"); юТест.ПроверитьНеРавенство(К1, К4, "Квалификаторы с разными параметрами не равны"); КонецПроцедуры Процедура ТестДолжен_ПроверитьКвалификаторыДвоичныхДанных() Экспорт К1 = Новый КвалификаторыДвоичныхДанных(10); К2 = Новый КвалификаторыДвоичныхДанных(10, ДопустимаяДлина.Переменная); К3 = Новый КвалификаторыДвоичныхДанных(10, ДопустимаяДлина.Фиксированная); юТест.ПроверитьРавенство (К1, К2, "Квалификаторы с одинаковыми параметрами равны"); юТест.ПроверитьНеРавенство(К1, К3, "Квалификаторы с разными параметрами не равны"); КонецПроцедуры Процедура ТестДолжен_СоздатьОписаниеТиповПоКвалификаторам() Экспорт Описание1 = Новый ОписаниеТипов("Число", Новый КвалификаторыЧисла(10)); Описание2 = Новый ОписаниеТипов("Строка", Новый КвалификаторыЧисла(10)); Описание3 = Новый ОписаниеТипов("Строка", , Новый КвалификаторыСтроки(10)); Описание4 = Новый ОписаниеТипов("Число,Строка", Новый КвалификаторыЧисла(20)); юТест.ПроверитьНеРавенство(Описание1.КвалификаторыЧисла, Описание2.КвалификаторыЧисла); юТест.ПроверитьРавенство(Описание2.КвалификаторыЧисла, Новый КвалификаторыЧисла()); // Значения по умолчанию должны совпасть юТест.ПроверитьРавенство(Описание1.КвалификаторыСтроки, Описание2.КвалификаторыСтроки); юТест.ПроверитьРавенство(Описание1.КвалификаторыДаты, Описание2.КвалификаторыДаты); юТест.ПроверитьРавенство(Описание1.КвалификаторыДвоичныхДанных, Описание2.КвалификаторыДвоичныхДанных); юТест.ПроверитьРавенство(Описание1.Типы().Количество(), 1); юТест.ПроверитьРавенство(Описание2.Типы().Количество(), 1); юТест.ПроверитьРавенство(Описание3.Типы().Количество(), 1); юТест.ПроверитьРавенство(Описание4.Типы().Количество(), 2); КонецПроцедуры Процедура ТестДолжен_СоздатьОписаниеТиповПоДругомуОписанию() Экспорт КЧ1 = Новый КвалификаторыЧисла(10); КЧ2 = Новый КвалификаторыЧисла(20); КС1 = Новый КвалификаторыСтроки(10); КС2 = Новый КвалификаторыСтроки(20); КД1 = Новый КвалификаторыДаты(ЧастиДаты.Дата); КД2 = Новый КвалификаторыДаты(ЧастиДаты.Время); КДД1 = Новый КвалификаторыДвоичныхДанных(10); КДД2 = Новый КвалификаторыДвоичныхДанных(20); Описание1 = Новый ОписаниеТипов("Строка,Число", КЧ1, КС1, КД1, КДД1); Описание2 = Новый ОписаниеТипов(Описание1, "Массив", "Число", КЧ2, КС2, КД2, КДД2); // остались Строка, Массив юТест.ПроверитьНеРавенство(Описание1.КвалификаторыЧисла, Описание2.КвалификаторыЧисла); юТест.ПроверитьНеРавенство(Описание1.КвалификаторыЧисла, Описание2.КвалификаторыЧисла); юТест.ПроверитьРавенство(Описание2.КвалификаторыЧисла, Новый КвалификаторыЧисла()); юТест.ПроверитьНеРавенство(Описание1.КвалификаторыСтроки, Описание2.КвалификаторыСтроки); юТест.ПроверитьРавенство(Описание1.КвалификаторыДаты, Описание2.КвалификаторыДаты); юТест.ПроверитьРавенство(Описание1.КвалификаторыДвоичныхДанных, Описание2.КвалификаторыДвоичныхДанных); юТест.ПроверитьРавенство(Описание2.Типы().Найти(Тип("Число")), Неопределено); юТест.ПроверитьНеРавенство(Описание2.Типы().Найти(Тип("Массив")), Неопределено); юТест.ПроверитьРавенство(Описание2.СодержитТип(Тип("Число")), Ложь); юТест.ПроверитьРавенство(Описание2.СодержитТип(Тип("Массив")), Истина); КонецПроцедуры Процедура ТестДолжен_СоздатьОписаниеТиповСПропускомПараметров() Экспорт КЧ1 = Новый КвалификаторыЧисла(10); КС1 = Новый КвалификаторыСтроки(10); КД1 = Новый КвалификаторыДаты(ЧастиДаты.Дата); КДД1 = Новый КвалификаторыДвоичныхДанных(10); Описание1 = Новый ОписаниеТипов("Строка,Число,Дата", , ,КЧ1, КС1, КД1); юТест.ПроверитьРавенство(Описание1.КвалификаторыЧисла, КЧ1); юТест.ПроверитьРавенство(Описание1.КвалификаторыСтроки, КС1); юТест.ПроверитьРавенство(Описание1.КвалификаторыДаты, КД1); КонецПроцедуры Процедура ТестДолжен_СоздатьОписаниеТиповСПараметрамиНеопределено() Экспорт КД1 = Новый КвалификаторыДаты(ЧастиДаты.Дата); Описание1 = Новый ОписаниеТипов("Дата", Неопределено, Неопределено, КД1); юТест.ПроверитьРавенство(Описание1.КвалификаторыДаты, КД1); КонецПроцедуры Процедура ТестДолжен_СоздатьОписаниеТиповСПроизвольнымПорядкомКвалификаторов() Экспорт КЧ1 = Новый КвалификаторыЧисла(10); КС1 = Новый КвалификаторыСтроки(10); КД1 = Новый КвалификаторыДаты(ЧастиДаты.Дата); КДД1 = Новый КвалификаторыДвоичныхДанных(10); Описание1 = Новый ОписаниеТипов("Строка,Число,Дата", КС1, КД1, КДД1, КЧ1 ); юТест.ПроверитьРавенство(Описание1.КвалификаторыЧисла, КЧ1); юТест.ПроверитьРавенство(Описание1.КвалификаторыСтроки, КС1); юТест.ПроверитьРавенство(Описание1.КвалификаторыДаты, КД1); юТест.ПроверитьНеРавенство(Описание1.КвалификаторыДвоичныхДанных, КДД1); юТест.ПроверитьРавенство(Описание1.КвалификаторыДвоичныхДанных, Новый КвалификаторыДвоичныхДанных()); КонецПроцедуры Процедура ТестДолжен_СоздатьОписаниеТиповСПовторяющимисяКвалификаторами() Экспорт КЧ1 = Новый КвалификаторыЧисла(10); КЧ2 = Новый КвалификаторыЧисла(20); КС1 = Новый КвалификаторыСтроки(10); КС2 = Новый КвалификаторыСтроки(20); КД1 = Новый КвалификаторыДаты(ЧастиДаты.Дата); Описание1 = Новый ОписаниеТипов("Строка,Число,Дата", КС1, КЧ1, КС2, КД1, , КЧ2 ); юТест.ПроверитьРавенство(Описание1.КвалификаторыЧисла, КЧ2); юТест.ПроверитьРавенство(Описание1.КвалификаторыСтроки, КС2); юТест.ПроверитьРавенство(Описание1.КвалификаторыДаты, КД1); КонецПроцедуры Процедура ТестДолжен_СоздатьОписаниеТиповПоДругомуОписаниюСПроизвольнымиКвалификаторами() Экспорт КЧ1 = Новый КвалификаторыЧисла(10); КЧ2 = Новый КвалификаторыЧисла(20); КС1 = Новый КвалификаторыСтроки(10); КС2 = Новый КвалификаторыСтроки(20); КД1 = Новый КвалификаторыДаты(ЧастиДаты.Дата); КД2 = Новый КвалификаторыДаты(ЧастиДаты.Время); КДД1 = Новый КвалификаторыДвоичныхДанных(10); КДД2 = Новый КвалификаторыДвоичныхДанных(20); Описание1 = Новый ОписаниеТипов("Строка,Число", КЧ1, КС1, КД1); Описание2 = Новый ОписаниеТипов(Описание1, "Дата", "Число", КС2, КЧ2, КД1, КД2); юТест.ПроверитьНеРавенство(Описание2.КвалификаторыЧисла, КЧ2); юТест.ПроверитьРавенство(Описание2.КвалификаторыЧисла, Новый КвалификаторыЧисла()); юТест.ПроверитьРавенство(Описание2.КвалификаторыСтроки, КС2); юТест.ПроверитьРавенство(Описание2.КвалификаторыДаты, КД2); КонецПроцедуры Процедура ТестДолжен_СоздатьОписаниеТиповИзМассива() Экспорт КЧ1 = Новый КвалификаторыЧисла(10); КС1 = Новый КвалификаторыСтроки(10); КД1 = Новый КвалификаторыДаты(ЧастиДаты.Дата); КДД1 = Новый КвалификаторыДвоичныхДанных(10); Массив = Новый Массив(); Массив.Добавить(Тип("Строка")); Массив.Добавить(Тип("Дата")); Массив.Добавить(Тип("Число")); Описание1 = Новый ОписаниеТипов(Массив, КЧ1, КС1, КД1); юТест.ПроверитьРавенство(Описание1.КвалификаторыЧисла, КЧ1); юТест.ПроверитьРавенство(Описание1.КвалификаторыСтроки, КС1); юТест.ПроверитьРавенство(Описание1.КвалификаторыДаты, КД1); КонецПроцедуры Процедура ТестДолжен_СоздатьОписаниеТиповПоДругомуОписаниюСМассивамиИзменяемыхТипов() Экспорт КЧ1 = Новый КвалификаторыЧисла(10); КЧ2 = Новый КвалификаторыЧисла(20); КС1 = Новый КвалификаторыСтроки(10); КС2 = Новый КвалификаторыСтроки(20); КД1 = Новый КвалификаторыДаты(ЧастиДаты.Дата); КД2 = Новый КвалификаторыДаты(ЧастиДаты.Время); КДД1 = Новый КвалификаторыДвоичныхДанных(10); КДД2 = Новый КвалификаторыДвоичныхДанных(20); МассивДобавляемых = Новый Массив(); МассивДобавляемых.Добавить(Тип("ДвоичныеДанные")); МассивДобавляемых.Добавить(Тип("Структура")); МассивВычитаемых = Новый Массив(); МассивВычитаемых.Добавить(Тип("Число")); Описание1 = Новый ОписаниеТипов("Строка,Число,Дата", КЧ1, КС1, КД1); Описание2 = Новый ОписаниеТипов(Описание1, МассивДобавляемых, МассивВычитаемых, КС2, КЧ2, КД2, КДД2); юТест.ПроверитьРавенство(Описание2.Типы().Количество(), 4); юТест.ПроверитьНеРавенство(Описание2.КвалификаторыЧисла, КЧ2); юТест.ПроверитьРавенство(Описание2.КвалификаторыЧисла, Новый КвалификаторыЧисла()); юТест.ПроверитьРавенство(Описание2.КвалификаторыСтроки, КС2); юТест.ПроверитьРавенство(Описание2.КвалификаторыДаты, КД2); юТест.ПроверитьРавенство(Описание2.КвалификаторыДвоичныхДанных, КДД2); КонецПроцедуры Процедура ТестДолжен_СоздатьОписаниеТиповСПовторяющимисяТипами() Экспорт Описание = Новый ОписаниеТипов("Строка,Число,Число,Дата,Строка"); юТест.ПроверитьРавенство(Описание.Типы().Количество(), 3); КонецПроцедуры Процедура ТестДолжен_СоздатьОписаниеТиповПоДругомуОписаниюСПустымиПараметрами() Экспорт КЧ1 = Новый КвалификаторыЧисла(10); КЧ2 = Новый КвалификаторыЧисла(20); КС1 = Новый КвалификаторыСтроки(10); КС2 = Новый КвалификаторыСтроки(20); КД1 = Новый КвалификаторыДаты(ЧастиДаты.Дата); КД2 = Новый КвалификаторыДаты(ЧастиДаты.Время); КДД1 = Новый КвалификаторыДвоичныхДанных(10); КДД2 = Новый КвалификаторыДвоичныхДанных(20); Описание1 = Новый ОписаниеТипов("Строка,Число", КЧ1, КС1, КД1); Описание2 = Новый ОписаниеТипов(Описание1, "Дата", Неопределено); юТест.ПроверитьРавенство(Описание2.Типы().Количество(), 3); Описание2 = Новый ОписаниеТипов(Описание1, "Дата", ""); юТест.ПроверитьРавенство(Описание2.Типы().Количество(), 3); Описание2 = Новый ОписаниеТипов(Описание1, "Дата", ", , Число,"); юТест.ПроверитьРавенство(Описание2.Типы().Количество(), 2); Описание2 = Новый ОписаниеТипов(Описание1, ,"Число"); юТест.ПроверитьРавенство(Описание2.Типы().Количество(), 1); Описание2 = Новый ОписаниеТипов(Описание1, ",", "Число"); юТест.ПроверитьРавенство(Описание2.Типы().Количество(), 1); КонецПроцедуры Процедура ТестДолжен_ПроверитьПередачуНеверныхПараметров() Экспорт Ошибка = "Передача неверного значения типа"; Попытка Описание1 = Новый ОписаниеТипов("НеБулево"); Исключение Ошибка = ИнформацияОбОшибке().Описание; КонецПопытки; юТест.ПроверитьРавенство(Ошибка, "Тип не зарегистрирован (НеБулево)"); Описание1 = Новый ОписаниеТипов("Строка,Число"); Ошибка = "Передача неверного типа в список добавляемых"; Попытка Описание2 = Новый ОписаниеТипов(Описание1, NULL); Исключение Ошибка = ИнформацияОбОшибке().Описание; КонецПопытки; юТест.ПроверитьРавенство(Ошибка, "Неверный тип аргумента номер 2"); Ошибка = "Передача неверного типа в список удаляемых"; Попытка Описание2 = Новый ОписаниеТипов(Описание1, "Булево", Ложь); Исключение Ошибка = ИнформацияОбОшибке().Описание; КонецПопытки; юТест.ПроверитьРавенство(Ошибка, "Неверный тип аргумента номер 3"); Ошибка = "Передача неверного значения в список удаляемых"; Попытка Описание2 = Новый ОписаниеТипов(Описание1, "Булево", "НеБулево"); Исключение Ошибка = ИнформацияОбОшибке().Описание; КонецПопытки; юТест.ПроверитьРавенство(Ошибка, "Тип не зарегистрирован (НеБулево)"); КонецПроцедуры Процедура ТестДолжен_ПроверитьПриведениеСтрок() Экспорт Описание1 = Новый ОписаниеТипов("Строка",, Новый КвалификаторыСтроки(5, ДопустимаяДлина.Фиксированная)); Значение = Описание1.ПривестиЗначение("123456"); юТест.ПроверитьРавенство(Значение, "12345", "Усечение строки"); Значение = Описание1.ПривестиЗначение("123"); юТест.ПроверитьРавенство(Значение, "123 ", "Расширение строки"); Значение = Описание1.ПривестиЗначение(Новый Массив); юТест.ПроверитьРавенство(Значение, "Масси", "Неродное значение"); Значение = Описание1.ПривестиЗначение(1); юТест.ПроверитьРавенство(Значение, "1 ", "Приведение числа"); Значение = Описание1.ПривестиЗначение(123456); юТест.ПроверитьРавенство(Значение, "12345", "Приведение числа с усечением"); Описание1 = Новый ОписаниеТипов("Строка",, Новый КвалификаторыСтроки(5, ДопустимаяДлина.Переменная)); Значение = Описание1.ПривестиЗначение("123456"); юТест.ПроверитьРавенство(Значение, "12345", "Усечение строки"); Значение = Описание1.ПривестиЗначение("123"); юТест.ПроверитьРавенство(Значение, "123", "Расширения строки нет"); Значение = Описание1.ПривестиЗначение(Новый Массив); юТест.ПроверитьРавенство(Значение, "Масси", "Неродное значение"); Значение = Описание1.ПривестиЗначение(1); юТест.ПроверитьРавенство(Значение, "1", "Приведение числа без расширения строки"); Значение = Описание1.ПривестиЗначение(123456); юТест.ПроверитьРавенство(Значение, "12345", "Приведение числа с усечением"); КонецПроцедуры Процедура ТестДолжен_ПроверитьПриведениеБулева() Экспорт Описание1 = Новый ОписаниеТипов("Булево"); юТест.ПроверитьРавенство(Описание1.ПривестиЗначение(), Ложь, "Значение по-умолчанию"); юТест.ПроверитьРавенство(Описание1.ПривестиЗначение(Новый Массив), Ложь, "Неприводимое значение"); юТест.ПроверитьРавенство(Описание1.ПривестиЗначение(0), Ложь, "Число 0 = Ложь"); юТест.ПроверитьРавенство(Описание1.ПривестиЗначение(1), Истина, "Число 1 = Истина"); юТест.ПроверитьРавенство(Описание1.ПривестиЗначение(132432), Истина, "Любое число не 0 = Истина"); юТест.ПроверитьРавенство(Описание1.ПривестиЗначение("Истина"), Истина, "Стрковое представление Истина"); юТест.ПроверитьРавенство(Описание1.ПривестиЗначение("Ложь"), Ложь, "Стрковое представление Ложь"); юТест.ПроверитьРавенство(Описание1.ПривестиЗначение("false"), Ложь, "Стрковое представление false"); юТест.ПроверитьРавенство(Описание1.ПривестиЗначение("true"), true, "Стрковое представление true"); КонецПроцедуры Процедура ТестДолжен_ПроверитьПриведениеДат() Экспорт Описание_ДатаВремя = Новый ОписаниеТипов("Дата",,, Новый КвалификаторыДаты(ЧастиДаты.ДатаВремя)); Описание_Дата = Новый ОписаниеТипов("Дата",,, Новый КвалификаторыДаты(ЧастиДаты.Дата)); Описание_Время = Новый ОписаниеТипов("Дата",,, Новый КвалификаторыДаты(ЧастиДаты.Время)); ИсходноеЗначение = "20170106010114"; Верное_ДатаВремя = '20170106010114'; Верное_Дата = '20170106000000'; Верное_Время = '00010101010114'; Значение_ДатаВремя = Описание_ДатаВремя.ПривестиЗначение(ИсходноеЗначение); Значение_Дата = Описание_Дата.ПривестиЗначение(ИсходноеЗначение); Значение_Время = Описание_Время.ПривестиЗначение(ИсходноеЗначение); юТест.ПроверитьРавенство(Значение_ДатаВремя, Верное_ДатаВремя, "Приведение без усечения"); юТест.ПроверитьРавенство(Значение_Дата, Верное_Дата, "Усечение времени"); юТест.ПроверитьРавенство(Значение_Время, Верное_Время, "Усечение даты"); КонецПроцедуры Процедура ТестДолжен_ПроверитьПриведениеБезПриведения() Экспорт Описание = Новый ОписаниеТипов(Новый Массив); Значения = Новый Массив; Значения.Добавить('20170111121212'); Значения.Добавить("Строка 5"); Значения.Добавить(14); Для Каждого ПроверяемоеЗначение Из Значения Цикл юТест.ПроверитьРавенство(Описание.ПривестиЗначение(ПроверяемоеЗначение), ПроверяемоеЗначение); КонецЦикла; КонецПроцедуры Процедура ТестДолжен_ПроверитьПриведениеЧисел() Экспорт Описание = Новый ОписаниеТипов("Число", Новый КвалификаторыЧисла(10, 0, ДопустимыйЗнак.Неотрицательный)); юТест.ПроверитьРавенство(Описание.ПривестиЗначение(-5), 0, "Обнуление отрицательных"); Описание = Новый ОписаниеТипов("Число", Новый КвалификаторыЧисла(10, 2, ДопустимыйЗнак.Любой)); юТест.ПроверитьРавенство(Описание.ПривестиЗначение(5.555), 5.56, "Округление"); юТест.ПроверитьРавенство(Описание.ПривестиЗначение(5.554), 5.55, "Округление"); юТест.ПроверитьРавенство(Описание.ПривестиЗначение(-5.554), -5.55, "Округление"); юТест.ПроверитьРавенство(Описание.ПривестиЗначение(-5.555), -5.56, "Округление"); юТест.ПроверитьРавенство(Описание.ПривестиЗначение(-5.55), -5.55, "Округление"); Описание = Новый ОписаниеТипов("Число", Новый КвалификаторыЧисла(0, 0, ДопустимыйЗнак.Любой)); юТест.ПроверитьРавенство(Описание.ПривестиЗначение(12345.555), 12345.555, "Не режет ничего"); Описание = Новый ОписаниеТипов("Число", Новый КвалификаторыЧисла(5, 2, ДопустимыйЗнак.Любой)); юТест.ПроверитьРавенство(Описание.ПривестиЗначение(12345.555), 999.99, "Забивает девятками"); КонецПроцедуры Процедура ТестДолжен_Преобразование_ОписаниеБезТипов() Экспорт МассивТиповНеопределено = Новый Массив; МассивТиповНеопределено.Добавить(Тип("Неопределено")); ПроверяемыеОписания = Новый СписокЗначений; ПроверяемыеОписания.Добавить( Новый ОписаниеТипов, "Новый ОписаниеТипов" ); ПроверяемыеОписания.Добавить( Новый ОписаниеТипов("Неопределено"), "Новый ОписаниеТипов(""Неопределено"")" ); ПроверяемыеОписания.Добавить( Новый ОписаниеТипов(МассивТиповНеопределено), "Новый ОписаниеТипов(МассивТиповНеопределено)" ); ПроверяемыеОписания.Добавить( Новый ОписаниеТипов("Undefined"), "Новый ОписаниеТипов(""Undefined"")" ); Для Каждого мЭлементПроверки Из ПроверяемыеОписания Цикл ОписаниеБезТипов = мЭлементПроверки.Значение; ОписаниеСлучая = мЭлементПроверки.Представление; юТест.ПроверитьРавенство(ОписаниеБезТипов.ПривестиЗначение(), Неопределено, "Приведение без параметра. " + ОписаниеСлучая); юТест.ПроверитьРавенство(ОписаниеБезТипов.ПривестиЗначение(1), 1, "Приведение числа. " + ОписаниеСлучая); юТест.ПроверитьРавенство(ОписаниеБезТипов.ПривестиЗначение("1"), "1", "Приведение строки. " + ОписаниеСлучая); юТест.ПроверитьРавенство(ОписаниеБезТипов.ПривестиЗначение(Тип("Строка")), Тип("Строка"), "Приведение Типа. " + ОписаниеСлучая); юТест.ПроверитьРавенство(ОписаниеБезТипов.ПривестиЗначение('20230817104356'), '20230817104356', "Приведение даты. " + ОписаниеСлучая); ДД = ПолучитьДвоичныеДанныеИзСтроки("Строка"); юТест.ПроверитьРавенство(ОписаниеБезТипов.ПривестиЗначение(ДД), ДД, "Двоичные данные не ломаются. " + ОписаниеСлучая); юТест.ПроверитьРавенство(ОписаниеБезТипов.Типы().Количество(), 0, "Типы() пустой. " + ОписаниеСлучая); // юТест.ПроверитьЛожь(ОписаниеБезТипов.СодержитТип(Тип("Неопределено")), "Нет типа Неопределено. " + ОписаниеСлучая); КонецЦикла; КонецПроцедуры Процедура ТестДолжен_Преобразование_ОписаниеБезТипов_КвалификаторыИгнорируются() Экспорт КЧ = Новый КвалификаторыЧисла(1); КС = Новый КвалификаторыСтроки(1); КД = Новый КвалификаторыДаты(ЧастиДаты.Время); МассивТиповНеопределено = Новый Массив; МассивТиповНеопределено.Добавить(Тип("Неопределено")); ПроверяемыеОписания = Новый СписокЗначений; ПроверяемыеОписания.Добавить( Новый ОписаниеТипов(, КЧ, КС, КД), "Новый ОписаниеТипов(, КЧ, КС, КД)" ); ПроверяемыеОписания.Добавить( Новый ОписаниеТипов("Неопределено", КЧ, КС, КД), "Новый ОписаниеТипов(""Неопределено"", КЧ, КС, КД)" ); ПроверяемыеОписания.Добавить( Новый ОписаниеТипов(МассивТиповНеопределено, КЧ, КС, КД), "Новый ОписаниеТипов(МассивТиповНеопределено, КЧ, КС, КД)" ); ПроверяемыеОписания.Добавить( Новый ОписаниеТипов("Undefined", КЧ, КС, КД), "Новый ОписаниеТипов(""Undefined"", КЧ, КС, КД)" ); Для Каждого мЭлементПроверки Из ПроверяемыеОписания Цикл ОписаниеБезТипов = мЭлементПроверки.Значение; ОписаниеСлучая = мЭлементПроверки.Представление; юТест.ПроверитьРавенство(ОписаниеБезТипов.ПривестиЗначение(), Неопределено, "Приведение без параметра. " + ОписаниеСлучая); юТест.ПроверитьРавенство(ОписаниеБезТипов.ПривестиЗначение(123), 123, "Число не режется. " + ОписаниеСлучая); // не 1 юТест.ПроверитьРавенство(ОписаниеБезТипов.ПривестиЗначение("123"), "123", "Строка не режется. " + ОписаниеСлучая); // не "1" юТест.ПроверитьРавенство(ОписаниеБезТипов.ПривестиЗначение(Тип("Строка")), Тип("Строка"), "Значение типа Тип не ломается. " + ОписаниеСлучая); юТест.ПроверитьРавенство(ОписаниеБезТипов.ПривестиЗначение('20230817104356'), '20230817104356', "Дата не режется. " + ОписаниеСлучая); // не `00010101104356` ДД = ПолучитьДвоичныеДанныеИзСтроки("Строка"); юТест.ПроверитьРавенство(ОписаниеБезТипов.ПривестиЗначение(ДД), ДД, "Двоичные данные не ломаются. " + ОписаниеСлучая); юТест.ПроверитьРавенство(ОписаниеБезТипов.Типы().Количество(), 0, "Типы() пустой. " + ОписаниеСлучая); юТест.ПроверитьЛожь(ОписаниеБезТипов.СодержитТип(Тип("Неопределено")), "Нет типа Неопределено. " + ОписаниеСлучая); КонецЦикла; КонецПроцедуры Процедура ТестДолжен_ПроверитьПорядокПриведенияТипов() Экспорт ОписаниеТипов = Новый ОписаниеТипов("Число, Строка", Новый КвалификаторыСтроки(1)); юТест.ПроверитьРавенство(ОписаниеТипов.ПривестиЗначение(Истина), "Д"); // TODO: локализация юТест.ПроверитьРавенство(ОписаниеТипов.ПривестиЗначение("Строка"), "С"); юТест.ПроверитьРавенство(ОписаниеТипов.ПривестиЗначение(15), 15); юТест.ПроверитьРавенство(ОписаниеТипов.ПривестиЗначение('20230911'), "1"); // TODO: локализация КонецПроцедуры Процедура ТестДолжен_ПроверитьОдинаковыйПорядокТипов() Экспорт ОТ = Новый ОписаниеТипов("Число, Строка"); ПроверитьПорядокТипов(ОТ.Типы(), "Строка, Число"); ОТ = Новый ОписаниеТипов("Строка, Число"); ПроверитьПорядокТипов(ОТ.Типы(), "Строка, Число"); ОТ = Новый ОписаниеТипов("Строка, Число, Строка"); ПроверитьПорядокТипов(ОТ.Типы(), "Строка, Число"); ОТ = Новый ОписаниеТипов("Число, Число, Строка"); ПроверитьПорядокТипов(ОТ.Типы(), "Строка, Число"); ОТ = Новый ОписаниеТипов("Число, Число, Строка, Дата, Булево, Неопределено"); ПроверитьПорядокТипов(ОТ.Типы(), "Булево, Строка, Дата, Число"); ОТ = Новый ОписаниеТипов("Неопределено, Число, Дата, Строка, Дата, Булево"); ПроверитьПорядокТипов(ОТ.Типы(), "Булево, Строка, Дата, Число"); ОТ = Новый ОписаниеТипов("ДвоичныеДанные, Неопределено, Тип, NULL, Число, Дата, Строка, Дата, Булево"); ПроверитьПорядокТипов(ОТ.Типы(), "Булево, ДвоичныеДанные, Строка, Дата, Null, Число, Тип"); КонецПроцедуры Процедура ТестДолжен_ПроверитьПриведениеНеопределено() Экспорт ОТ = Новый ОписаниеТипов("Число, Строка"); юТест.ПроверитьИстину(ОТ.СодержитТип(Тип("Неопределено")), "Неопределено содержится в описании типов"); юТест.ПроверитьРавенство(ОТ.Типы().Найти(Тип("Неопределено")), Неопределено, "Неопределено не содержится в типах"); юТест.ПроверитьРавенство(ОТ.ПривестиЗначение(Неопределено), Неопределено, "Неопределено в неопределено"); ОТ = Новый ОписаниеТипов; юТест.ПроверитьРавенство(ОТ.ПривестиЗначение(Неопределено), Неопределено, "Неопределено в неопределено"); юТест.ПроверитьЛожь(ОТ.СодержитТип(Тип("Неопределено")), "Неопределено не содержится в описании типов (без типов)"); юТест.ПроверитьРавенство(ОТ.Типы().Найти(Тип("Неопределено")), Неопределено, "Неопределено не содержится в типах"); КонецПроцедуры Процедура ТестДолжен_ПроверитьПриведениеОбъектов() Экспорт ОТ = Новый ОписаниеТипов("Массив, Структура, Строка"); М1 = Новый Массив; М1.Добавить(1); М1.Добавить(2); М2 = ОТ.ПривестиЗначение(М1); юТест.ПроверитьРавенство(М2, М1, "Массив тот же самый"); КонецПроцедуры Процедура ПроверитьПорядокТипов(Знач ТипыОписанияТипов, Знач ОжидаемыйПорядок, Знач Текст = Неопределено) Если Текст = Неопределено Тогда Текст = СтрШаблон("Ожидаемый порядок: %1 |Полученный порядок: %2", ОжидаемыйПорядок, СтрСоединить(ТипыОписанияТипов, ", ") ); КонецЕсли; ТипыСтроками = СтрРазделить(ОжидаемыйПорядок, ","); юТест.ПроверитьБольшеИлиРавно(ТипыОписанияТипов.Количество(), ТипыСтроками.Количество(), Текст); ИндексТипа = 0; Для Каждого мТипСтрокой Из ТипыСтроками Цикл ТипОписания = ТипыОписанияТипов[ИндексТипа]; ТипОжидаемый = Тип(СокрЛП(мТипСтрокой)); юТест.ПроверитьРавенство(ТипОписания, ТипОжидаемый); ИндексТипа = ИндексТипа + 1; КонецЦикла; КонецПроцедуры