GTEST: Как передать список массивов в качестве параметра в ValuesIn объекта INSTANTIATE_TEST_CASE_P? - PullRequest
0 голосов
/ 14 января 2020

Я хочу передать список целочисленных массивов в качестве контейнера параметризованному классу в GTEST.

Например: -

const int* par_Array[] = {
        { 1, 869, 1200, 1300 },
        { 1, 1, 1, 1 }
    };

class testSafetyInterface_failingTestForTargetArrayBoundaryVal :
  public testSafetyInterface,
  public ::testing:: WithParamInterface<int* []>{
};

INSTANTIATE_TEST_CASE_P(
        testSafetyInterface_failBoundaryTest,
        testSafetyInterface_failingTestForTargetArrayBoundaryVal,
        ::testing::ValuesIn(par_Array));

Но я не понимаю синтаксиса и документацию для этого.

Был бы признателен за любую помощь здесь. Заранее спасибо!

1 Ответ

1 голос
/ 14 января 2020
  1. const int* par_Array[] является скалярным объектом и, следовательно, инициализация с несколькими скобками невозможна.
  2. Аргумент для ValuesIn равен const T (&array)[N], поэтому необходимо передать массив типа T

Если T имеет тип int Инициализация массива выглядит просто следующим образом,

int par_Array[] = {1, 869, 1200, 1300 , 1, 1, 1, 1 }; //i.e list of possible input values

Если T имеет тип int*[] массив указателей ожидается в качестве аргумента , И par_Array инициализация выглядит так:

int a1[]{};
int a2[]{};
int a3[]{};    
int * par_Array[] = {a1,a2,a3};
...