Skip to content

Commit c152222

Browse files
authored
tests: Реорганизация и добавление новых тестов (#52)
1 parent 2990c61 commit c152222

33 files changed

Lines changed: 3264 additions & 1834 deletions

File tree

.bsl-language-server.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
"listOfIncorrectFirstSymbol": ";|,\\s*\\S+"
66
},
77
"Typo": {
8-
"userWordsToIgnore": "Аппендер,Дто,Бенчмаркинг,Запускателя,Бенчмарками,Бенчмаркам,Бенчмарк,бенчмарк,Бенчмарки,бенчмарки,Бенчмарков,бенчмарков,Бенчмарка,бенчмарками,бенчмарка,Бенчмарку,Прогревочных,прогревочных,Десериализованный,Десериализуемые,Сериализуемый,Сериализуемое,Несериализуемое,Запускатель,запускатель,Распарсить,распарсить,Регулярка,Десериализатор,Сериализовать,Сериализации,сериализации,Сериализуемые,Сериализацией,Сериализуется,Сериализацию,сериализацию,сериализуемым,сериализован,Сериализуемость,Чекпоинт,Извлекатель,непримитивный,Десериализации,десериализации,Несериализуемых,Валидатор,Валидировать,Алиас,Эталонность"
8+
"userWordsToIgnore": "Аппендер,Дто,Бенчмаркинг,Запускателя,Несериализуемыми,Чекпоинта,Чекпоинту,Бенчмарками,Бенчмаркам,Бенчмарк,бенчмарк,Бенчмарки,бенчмарки,Бенчмарков,бенчмарков,Бенчмарка,бенчмарками,бенчмарка,Бенчмарку,Прогревочных,прогревочных,Десериализованный,Десериализуемые,Сериализуемый,Сериализуемое,Несериализуемое,Запускатель,запускатель,Распарсить,распарсить,Регулярка,Десериализатор,Сериализовать,Сериализации,сериализации,Сериализуемые,Сериализацией,Сериализуется,Сериализацию,сериализацию,сериализуемым,сериализован,Сериализуемость,Чекпоинт,Извлекатель,непримитивный,Десериализации,десериализации,Несериализуемых,Валидатор,Валидировать,Алиас,Эталонность"
99
},
1010
"LatinAndCyrillicSymbolInWord": false,
1111
"MagicNumber": {

src/BenchmarkOneScript/core/running/Классы/КейсБенчмарка.os

Lines changed: 18 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,11 +6,25 @@
66

77
#Область ОбработчикиСобытий
88

9-
Процедура ПриСозданииОбъекта(Идентификатор, Дескриптор, Параметры, ИсполняющаяСреда = Неопределено)
9+
// Создает кейс запуска бенчмарка.
10+
//
11+
// Параметры:
12+
// Идентификатор - Число - Уникальный идентификатор кейса.
13+
// Дескриптор - ДескрипторБенчмарка - Дескриптор запускаемого бенчмарка.
14+
// Параметры - Массив из ПараметрБенчмарка - Параметры запуска кейса. Если не заданы,
15+
// - Неопределено создается пустой массив параметров.
16+
// ИсполняющаяСреда - ИсполняющаяСредаБенчмарков - Исполняющая среда кейса. Если не задана,
17+
// - Неопределено создается среда по умолчанию.
18+
Процедура ПриСозданииОбъекта(Идентификатор, Дескриптор, Параметры = Неопределено, ИсполняющаяСреда = Неопределено)
1019

11-
_Идентификатор = Идентификатор;
12-
_Дескриптор = Дескриптор;
13-
_Параметры = Параметры;
20+
_Идентификатор = Идентификатор;
21+
_Дескриптор = Дескриптор;
22+
23+
Если Параметры = Неопределено Тогда
24+
_Параметры = Новый Массив();
25+
Иначе
26+
_Параметры = Параметры;
27+
КонецЕсли;
1428

1529
Если ИсполняющаяСреда = Неопределено Тогда
1630
_ИсполняющаяСреда = Новый ИсполняющаяСредаБенчмарков();
Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,15 @@
1-
Перем мСообщенияЛога;
1+
Перем _СообщенияЛога;
22

33
Функция ПолучитьСообщения() Экспорт
4-
Возврат мСообщенияЛога;
4+
Возврат _СообщенияЛога;
55
КонецФункции
66

77
Процедура Вывести(Знач Сообщение, Знач УровеньВывода) Экспорт
8-
мСообщенияЛога.Добавить(Сообщение);
8+
_СообщенияЛога.Добавить(Сообщение);
99
КонецПроцедуры
1010

1111
Процедура Закрыть() Экспорт
12-
мСообщенияЛога = Неопределено;
12+
_СообщенияЛога = Неопределено;
1313
КонецПроцедуры
1414

15-
мСообщенияЛога = Новый Массив;
15+
_СообщенияЛога = Новый Массив;
Lines changed: 144 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,144 @@
1+
// BSLLS:LineLength-off
2+
// BSLLS:DuplicateStringLiteral-off
3+
// BSLLS:MagicNumber-off
4+
5+
#Использовать asserts
6+
#Использовать "helpers"
7+
#Использовать "fixtures/benchmarks"
8+
9+
#Область Тесты
10+
11+
&Тест
12+
Процедура ТестДолжен_ВыброситьИсключениеПриНевалидномКоличествеИтераций() Экспорт
13+
14+
// Подготовка
15+
НевалидныеЗначения = Новый Массив();
16+
НевалидныеЗначения.Добавить(0);
17+
НевалидныеЗначения.Добавить(-10);
18+
19+
ТекстОшибки = "Количество итераций не может быть меньше 1";
20+
21+
Конфигурация = Новый КонфигурацияБенчмарков();
22+
23+
Для Каждого НевалидноеЗначение Из НевалидныеЗначения Цикл
24+
25+
Параметры = Новый Массив();
26+
Параметры.Добавить(НевалидноеЗначение);
27+
28+
// Действие и Проверка
29+
Ожидаем
30+
.Что(Конфигурация)
31+
.Метод("УстановитьКоличествоИтераций", Параметры)
32+
.ВыбрасываетИсключение(ТекстОшибки);
33+
34+
КонецЦикла;
35+
36+
КонецПроцедуры
37+
38+
&Тест
39+
Процедура ТестДолжен_ВыброситьИсключениеПриНевалидномКоличествеВызововЗаИтерацию() Экспорт
40+
41+
// Подготовка
42+
НевалидныеЗначения = Новый Массив();
43+
НевалидныеЗначения.Добавить(-10);
44+
45+
ТекстОшибки = "Количество вызовов за итерацию не может быть меньше 0";
46+
47+
Конфигурация = Новый КонфигурацияБенчмарков();
48+
49+
Для Каждого НевалидноеЗначение Из НевалидныеЗначения Цикл
50+
51+
Параметры = Новый Массив();
52+
Параметры.Добавить(НевалидноеЗначение);
53+
54+
// Действие и Проверка
55+
Ожидаем
56+
.Что(Конфигурация)
57+
.Метод("УстановитьКоличествоВызововЗаИтерацию", Параметры)
58+
.ВыбрасываетИсключение(ТекстОшибки);
59+
60+
КонецЦикла;
61+
62+
КонецПроцедуры
63+
64+
&Тест
65+
Процедура ТестДолжен_ВыброситьИсключениеПриНевалидномКоличествеИтерацийПрогрева() Экспорт
66+
67+
// Подготовка
68+
НевалидныеЗначения = Новый Массив();
69+
НевалидныеЗначения.Добавить(-10);
70+
71+
ТекстОшибки = "Количество прогревочных итераций не может быть меньше 0";
72+
73+
Конфигурация = Новый КонфигурацияБенчмарков();
74+
75+
Для Каждого НевалидноеЗначение Из НевалидныеЗначения Цикл
76+
77+
Параметры = Новый Массив();
78+
Параметры.Добавить(НевалидноеЗначение);
79+
80+
// Действие и Проверка
81+
Ожидаем
82+
.Что(Конфигурация)
83+
.Метод("УстановитьКоличествоПрогревочныхИтераций", Параметры)
84+
.ВыбрасываетИсключение(ТекстОшибки);
85+
86+
КонецЦикла;
87+
88+
КонецПроцедуры
89+
90+
&Тест
91+
Процедура ТестДолжен_ВыброситьИсключениеПриНевалидномМинимальномВремениИтерации() Экспорт
92+
93+
// Подготовка
94+
НевалидныеЗначения = Новый Массив();
95+
НевалидныеЗначения.Добавить(0);
96+
НевалидныеЗначения.Добавить(-10);
97+
98+
ТекстОшибки = "Минимальное время итерации не может быть меньше 1 мс";
99+
100+
Конфигурация = Новый КонфигурацияБенчмарков();
101+
102+
Для Каждого НевалидноеЗначение Из НевалидныеЗначения Цикл
103+
104+
Параметры = Новый Массив();
105+
Параметры.Добавить(НевалидноеЗначение);
106+
107+
// Действие и Проверка
108+
Ожидаем
109+
.Что(Конфигурация)
110+
.Метод("УстановитьМинимальноеВремяИтерации", Параметры)
111+
.ВыбрасываетИсключение(ТекстОшибки);
112+
113+
КонецЦикла;
114+
115+
КонецПроцедуры
116+
117+
&Тест
118+
Процедура ТестДолжен_ВыброситьИсключениеПриНевалидномМинимальномКоличествеВызововЗаИтерацию() Экспорт
119+
120+
// Подготовка
121+
НевалидныеЗначения = Новый Массив();
122+
НевалидныеЗначения.Добавить(0);
123+
НевалидныеЗначения.Добавить(-10);
124+
125+
ТекстОшибки = "Минимальное количество вызовов за итерацию не может быть меньше 1";
126+
127+
Конфигурация = Новый КонфигурацияБенчмарков();
128+
129+
Для Каждого НевалидноеЗначение Из НевалидныеЗначения Цикл
130+
131+
Параметры = Новый Массив();
132+
Параметры.Добавить(НевалидноеЗначение);
133+
134+
// Действие и Проверка
135+
Ожидаем
136+
.Что(Конфигурация)
137+
.Метод("УстановитьМинимальноеКоличествоВызововЗаИтерацию", Параметры)
138+
.ВыбрасываетИсключение(ТекстОшибки);
139+
140+
КонецЦикла;
141+
142+
КонецПроцедуры
143+
144+
#КонецОбласти
Lines changed: 147 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,147 @@
1+
// BSLLS:LineLength-off
2+
// BSLLS:MagicNumber-off
3+
// BSLLS:NestedFunctionInParameters-off
4+
5+
#Использовать asserts
6+
#Использовать "helpers"
7+
#Использовать "fixtures/benchmarks"
8+
9+
#Область Тесты
10+
11+
&Тест
12+
Процедура ТестДолжен_СгенерироватьОдинКейсДляБенчмаркаБезПараметров() Экспорт
13+
14+
// Подготовка
15+
Тип = Тип("ПустойБенчмарк");
16+
ДескрипторыБенчмарков = Новый КоллекцияДескрипторовБенчмарков(Тип);
17+
Конфигурация = Новый КонфигурацияБенчмарков(Тип);
18+
ГенераторКейсов = Новый ГенераторКейсовБенчмарков(ДескрипторыБенчмарков, Конфигурация);
19+
20+
// Действие
21+
Кейсы = ГенераторКейсов.СгенерироватьВсеКейсы();
22+
Кейс = Кейсы[0];
23+
24+
// Проверка
25+
Ожидаем.Что(Кейсы).ИмеетДлину(1);
26+
Ожидаем.Что(Кейс.Идентификатор()).Равно(1);
27+
Ожидаем.Что(Кейс.ДескрипторБенчмарка().ТипКласса()).Равно(Тип);
28+
Ожидаем.Что(Кейс.Параметры()).ИмеетДлину(0);
29+
Ожидаем.Что(Кейс.ИсполняющаяСреда()).ИмеетТип("ИсполняющаяСредаБенчмарков");
30+
Ожидаем.Что(Кейс.ИсполняющаяСреда().Версия).Равно("");
31+
32+
КонецПроцедуры
33+
34+
&Тест
35+
Процедура ТестДолжен_СгенерироватьМатрицуКейсовДляПараметровИИсполняющихСред() Экспорт
36+
37+
// Подготовка
38+
Тип = Тип("БенчмаркСПараметрамиМетодаИПоля");
39+
ДескрипторыБенчмарков = Новый КоллекцияДескрипторовБенчмарков(Тип);
40+
Конфигурация = Новый КонфигурацияБенчмарков(Тип)
41+
.ДобавитьИсполняющуюСреду("dev")
42+
.ДобавитьИсполняющуюСреду("stable");
43+
ГенераторКейсов = Новый ГенераторКейсовБенчмарков(ДескрипторыБенчмарков, Конфигурация);
44+
45+
// Действие
46+
Кейсы = ГенераторКейсов.СгенерироватьВсеКейсы();
47+
ПредставленияКейсов = ПредставленияКейсов(Кейсы);
48+
49+
// Проверка
50+
Ожидаем.Что(Кейсы).ИмеетДлину(8);
51+
Ожидаем.Что(Кейсы[0].Идентификатор()).Равно(1);
52+
Ожидаем.Что(Кейсы[7].Идентификатор()).Равно(8);
53+
Ожидаем.Что(ПредставленияКейсов).Содержит("dev|1|3|4");
54+
Ожидаем.Что(ПредставленияКейсов).Содержит("dev|1|5|6");
55+
Ожидаем.Что(ПредставленияКейсов).Содержит("dev|2|3|4");
56+
Ожидаем.Что(ПредставленияКейсов).Содержит("dev|2|5|6");
57+
Ожидаем.Что(ПредставленияКейсов).Содержит("stable|1|3|4");
58+
Ожидаем.Что(ПредставленияКейсов).Содержит("stable|1|5|6");
59+
Ожидаем.Что(ПредставленияКейсов).Содержит("stable|2|3|4");
60+
Ожидаем.Что(ПредставленияКейсов).Содержит("stable|2|5|6");
61+
62+
КонецПроцедуры
63+
64+
&Тест
65+
Процедура ТестДолжен_СгенерироватьТолькоЗапрошенныеКейсыПоИдентификаторам() Экспорт
66+
67+
// Подготовка
68+
Тип = Тип("БенчмаркСПараметрамиМетода");
69+
ДескрипторыБенчмарков = Новый КоллекцияДескрипторовБенчмарков(Тип);
70+
Конфигурация = Новый КонфигурацияБенчмарков(Тип);
71+
ГенераторКейсов = Новый ГенераторКейсовБенчмарков(ДескрипторыБенчмарков, Конфигурация);
72+
ИдентификаторыКейсов = Новый Массив();
73+
ИдентификаторыКейсов.Добавить(2);
74+
75+
// Действие
76+
Кейсы = ГенераторКейсов.СгенерироватьПоИдентификаторам(ИдентификаторыКейсов);
77+
Кейс = Кейсы[0];
78+
79+
// Проверка
80+
Ожидаем.Что(Кейсы).ИмеетДлину(1);
81+
Ожидаем.Что(Кейс.Идентификатор()).Равно(2);
82+
Ожидаем.Что(ЗначениеПараметра(Кейс, "Парам1")).Равно(20);
83+
Ожидаем.Что(ЗначениеПараметра(Кейс, "Парам2")).Равно(200);
84+
85+
КонецПроцедуры
86+
87+
&Тест
88+
Процедура ТестДолжен_ВыброситьИсключениеПриГенерацииКейсовСНеизвестнымИдентификатором() Экспорт
89+
90+
// Подготовка
91+
Тип = Тип("ПустойБенчмарк");
92+
ДескрипторыБенчмарков = Новый КоллекцияДескрипторовБенчмарков(Тип);
93+
Конфигурация = Новый КонфигурацияБенчмарков(Тип);
94+
ГенераторКейсов = Новый ГенераторКейсовБенчмарков(ДескрипторыБенчмарков, Конфигурация);
95+
96+
ИдентификаторыКейсов = Новый Массив();
97+
ИдентификаторыКейсов.Добавить(1);
98+
ИдентификаторыКейсов.Добавить(100);
99+
100+
ПараметрыМетода = Новый Массив();
101+
ПараметрыМетода.Добавить(ИдентификаторыКейсов);
102+
103+
// Действие и Проверка
104+
Ожидаем
105+
.Что(ГенераторКейсов)
106+
.Метод("СгенерироватьПоИдентификаторам", ПараметрыМетода)
107+
.ВыбрасываетИсключение("Не найдено 1 из 2 запрошенных кейсов. Ненайденные идентификаторы кейсов: 100");
108+
109+
КонецПроцедуры
110+
111+
#КонецОбласти
112+
113+
#Область СлужебныеПроцедурыИФункции
114+
115+
Функция ПредставленияКейсов(Кейсы)
116+
117+
Результат = Новый Массив();
118+
119+
Для Каждого Кейс Из Кейсы Цикл
120+
Результат.Добавить(
121+
СтрШаблон(
122+
"%1|%2|%3|%4",
123+
Кейс.ИсполняющаяСреда().Версия,
124+
ЗначениеПараметра(Кейс, "ПолеОбщее"),
125+
ЗначениеПараметра(Кейс, "Парам1"),
126+
ЗначениеПараметра(Кейс, "Парам2")
127+
)
128+
);
129+
КонецЦикла;
130+
131+
Возврат Результат;
132+
133+
КонецФункции
134+
135+
Функция ЗначениеПараметра(Кейс, ИмяПараметра)
136+
137+
Для Каждого Параметр Из Кейс.Параметры() Цикл
138+
Если Параметр.Имя() = ИмяПараметра Тогда
139+
Возврат Параметр.Значение();
140+
КонецЕсли;
141+
КонецЦикла;
142+
143+
Возврат Неопределено;
144+
145+
КонецФункции
146+
147+
#КонецОбласти

0 commit comments

Comments
 (0)