gmock: тестирование двух векторов с плавающей точкой - PullRequest
0 голосов
/ 29 мая 2018

Я пытаюсь написать тест для вектора.Для контейнеров STL я попытался:

EXPECT_THAT(float_vec1, ElementsAreArray(float_vec2));

Однако мне нужно вставить поле.

Существует ли ElementsAreArray эквивалент FloatNear(a_float, max_abs_error)?

1 Ответ

0 голосов
/ 03 июля 2018

Да, я использовал контейнерное сопоставление Pointwise, которое вы можете задать для сопоставителя и ожидаемого контейнера (любой контейнер STL и совместим с нединамически размещаемыми массивами в стиле c).

EXPECT_THAT(float_vec1, Pointwise(matcher, float_vec2))

Для сопоставителя Вы можете использовать FloatEq(), который использует сравнения с плавающей точкой на основе ULP.

EXPECT_THAT(float_vec1, Pointwise(FloatEq(), float_vec2))

Однако я обнаружил, что это прощеиспользовать FloatNear(float max_abs_error) просто для определения моей собственной ошибки с плавающей запятой, как вы хотите.

float ferr = 1e-5;
EXPECT_THAT(float_vec1,
            Pointwise(FloatNear(ferr), float_vec2));
...