Что означает #define TEST_CASE(...)
Что означает это определение
#define TEST_CASE(...)
в тесте Unity C проводка?
Затем он используется следующим образом (пример):
TEST_CASE(0)
TEST_CASE(44)
TEST_CASE((90)+9)
void test_TheseShouldAllPass(int Num)
{
TEST_ASSERT_TRUE(Num < 100);
}
Подробнее о Unity здесь: http://throwtheswitch.org/white-papers/unity-intro.html
1 ответ
Это единый вызов препроцессора для генерации тестовых случаев для следующего тестового примера. Код компилируется (или прекомпилируется) для:
test_TheseShouldAllPass(0);
test_TheseShouldAllPass(44);
test_TheseShouldAllPass(99);
Еще немного информации:
Если список идентификаторов не заканчивается многоточием, число аргументов в вызове макроса должно совпадать с количеством параметров в соответствующем определении макроса. Во время подстановки параметров любые аргументы, оставшиеся после замены всех указанных аргументов (включая любые разделяющие запятые), объединяются в один аргумент, называемый переменным аргументом. Переменный аргумент заменит любое вхождение идентификатора VA_ARGS в списке замены. Следующий пример иллюстрирует это:
#define debug(...) fprintf(stderr, __VA_ARGS__)
debug("flag"); /* Becomes fprintf(stderr, "flag"); */