'gtest - Report index variable for loop with EXPECT_EQ
I am using gtest but I am new to gtest. I would like to do compares of values within two std::vectors of complex data structures. I want to do something like this:
ASSERT_EQ(a.size(), b.size());
for (int x = 0; x < a.size(); x++) {
EXPECT_EQ(
sqrt(pow(a.real[x], 2) + pow(a.imag[x], 2)),
sqrt(pow(b.real[x], 2) + pow(b.imag[x], 2)));
}
This is great in that for mismatches it reports the values that were compared, e.g. 5 != 7, but it does not report the index variable "x". Is there some way I can easily output the index variable when mismatch is detected?
Solution 1:[1]
SCOPED_TRACE (https://github.com/google/googletest/blob/main/docs/advanced.md#adding-traces-to-assertions) can be used, like:
for (int x = 0; x < a.size(); x++) {
SCOPED_TRACE("x = " + std::to_string(x));
EXPECT_EQ(
...
It's especially useful when there are more than one check:
for (int x = 0; x < a.size(); x++) {
SCOPED_TRACE("x = " + std::to_string(x));
EXPECT_EQ(...
EXPECT_EQ(...
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source |
|---|---|
| Solution 1 | user_with_zhban_piva |
