длинный std :: initializer_list со множеством элементов для тестирования

Мой класс должен наложить верхний предел на количество элементов одного из его элементов данных, который является контейнером.

Один из конструкторов моего класса принимает std :: initializer_list в качестве параметра для инициализации этого элемента данных контейнера.

Юнит тест должен проверить, что верхний предел на месте. Для этого мне нужно попытаться вызвать мой конструктор со списком инициализаторов с 1025 элементами.

Есть ли лучший (= более читабельный) способ создания этого 1025-элементного initializer_list, чем наличие ограниченного литерального списка из 1025 элементов в тестовом коде?

(Тип данных элементов всегда короткий без знака (uint16_t), мой класс не является шаблоном.)

2

Решение

Если вы выберете рекурсию шаблона или причудливые «повторяющиеся» макросы, вы, возможно, столкнетесь с ограничениями статической рекурсии, что усложнит вашу реализацию даже больше, чем обычно.

Имея это в виду, я думаю, что самый простой и лучший подход — это просто определить несколько вложенных макросов, т.е.

#define ZEROS_10 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
#define ZEROS_50 ZEROS_10, ZEROS_10, ZEROS_10, ZEROS_10, ZEROS_10
#define ZEROS_250 ZEROS_50, ZEROS_50, ZEROS_50, ZEROS_50, ZEROS_50
#define ZEROS_1K ZEROS_250, ZEROS_250, ZEROS_250, ZEROS_250

FooType f{ ZEROS_1K, ZEROS_10, ZEROS_10, 0, 0, 0, 0, 0 };
3

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]