Skip to content

Commit 51d0e8e

Browse files
committed
fix tests
Signed-off-by: Martijn Govers <Martijn.Govers@Alliander.com>
1 parent 04e1273 commit 51d0e8e

File tree

2 files changed

+15
-18
lines changed

2 files changed

+15
-18
lines changed

power_grid_model_c/power_grid_model/include/power_grid_model/common/statistics.hpp

Lines changed: 2 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -275,18 +275,10 @@ constexpr auto combine_magnitude(RandVarsView rand_vars) {
275275
using sym = std::ranges::range_value_t<RandVarsView>::sym;
276276

277277
assert(std::ranges::all_of(rand_vars, [](auto const& measurement) {
278-
auto const check = [](auto const& value) {
279-
return is_nan(imag(measurement.value)) || (real(measurement.value) > 0.0);
280-
};
281278
if constexpr (is_symmetric_v<sym>) {
282-
return check(value);
279+
return (!is_nan(imag(measurement.value))) || real(measurement.value) >= 0.0;
283280
} else {
284-
for (Idx const phase : IdxRange(3)) {
285-
if (!check(measurement.value(phase))) {
286-
return false;
287-
}
288-
}
289-
return false;
281+
return (!is_nan(imag(measurement.value))) || (real(measurement.value) >= 0.0).all();
290282
}
291283
}));
292284

tests/cpp_unit_tests/test_statistics.cpp

Lines changed: 13 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1154,14 +1154,14 @@ TEST_CASE("Test statistics - combine_magnitude") {
11541154
CHECK(combine_magnitude(measurements | take(2)).variance == doctest::Approx(3.0 / 25.0));
11551155

11561156
CHECK(combine_magnitude(measurements | take(3)).value.real() ==
1157-
doctest::Approx((3.0 * std::sqrt(26.0) + 5.0) / 6.0));
1157+
doctest::Approx((8.0 + 3.0 * std::sqrt(26.0)) / 6.0));
11581158
CHECK(is_nan(combine_magnitude(measurements | take(3)).value.imag()));
11591159
CHECK(combine_magnitude(measurements | take(3)).variance == doctest::Approx(1.0 / 10.0));
11601160
}
11611161

11621162
SUBCASE("UniformComplexRandVar<asymmetric_t>") {
11631163
std::vector<UniformComplexRandVar<asymmetric_t>> const measurements{
1164-
{.value = {RealValue<asymmetric_t>{1.0, 2.0, -1.0}, RealValue<asymmetric_t>{5.0, nan, 7.0}},
1164+
{.value = {RealValue<asymmetric_t>{1.0, 2.0, -1.0}, RealValue<asymmetric_t>{5.0, 6.0, 7.0}},
11651165
.variance = 0.2},
11661166
{.value = {RealValue<asymmetric_t>{2.0, 4.0, 3.0}, RealValue<asymmetric_t>{nan}}, .variance = 0.3},
11671167
{.value = {RealValue<asymmetric_t>{4.0, 5.0, 6.0}, RealValue<asymmetric_t>{nan}}, .variance = 0.6}};
@@ -1174,17 +1174,21 @@ TEST_CASE("Test statistics - combine_magnitude") {
11741174
CHECK(is_nan(combine_magnitude(measurements | take(0)).value(0).imag()));
11751175
CHECK(is_inf(combine_magnitude(measurements | take(0)).variance));
11761176

1177-
CHECK(combine_magnitude(measurements | take(1)).value(0).real() == cabs(measurements.front().value(0)));
1178-
CHECK(combine_magnitude(measurements | take(1)).value(1).real() == cabs(measurements.front().value(1)));
1179-
CHECK(combine_magnitude(measurements | take(1)).value(2).real() == cabs(measurements.front().value(2)));
1177+
CHECK(combine_magnitude(measurements | take(1)).value(0).real() ==
1178+
doctest::Approx(cabs(measurements.front().value(0))));
1179+
CHECK(combine_magnitude(measurements | take(1)).value(1).real() ==
1180+
doctest::Approx(cabs(measurements.front().value(1))));
1181+
CHECK(combine_magnitude(measurements | take(1)).value(2).real() ==
1182+
doctest::Approx(cabs(measurements.front().value(2))));
11801183
CHECK(is_nan(combine_magnitude(measurements | take(1)).value(0).imag()));
11811184
CHECK(is_nan(combine_magnitude(measurements | take(1)).value(1).imag()));
11821185
CHECK(is_nan(combine_magnitude(measurements | take(1)).value(2).imag()));
11831186
CHECK(combine_magnitude(measurements | take(1)).variance == measurements.front().variance);
11841187

11851188
CHECK(combine_magnitude(measurements | take(2)).value(0).real() ==
11861189
doctest::Approx((3.0 * std::sqrt(26.0) + 4.0) / 5.0));
1187-
CHECK(combine_magnitude(measurements | take(2)).value(1).real() == doctest::Approx(14.0 / 5.0));
1190+
CHECK(combine_magnitude(measurements | take(2)).value(1).real() ==
1191+
doctest::Approx((8.0 + 6.0 * std::sqrt(10.0)) / 5.0));
11881192
CHECK(combine_magnitude(measurements | take(2)).value(2).real() ==
11891193
doctest::Approx((6.0 + 15.0 * std::sqrt(2.0)) / 5.0));
11901194
CHECK(is_nan(combine_magnitude(measurements | take(2)).value(0).imag()));
@@ -1193,8 +1197,9 @@ TEST_CASE("Test statistics - combine_magnitude") {
11931197
CHECK(combine_magnitude(measurements | take(2)).variance == doctest::Approx(3.0 / 25.0));
11941198

11951199
CHECK(combine_magnitude(measurements | take(3)).value(0).real() ==
1196-
doctest::Approx((3.0 * std::sqrt(26.0) + 5.0) / 6.0));
1197-
CHECK(combine_magnitude(measurements | take(3)).value(1).real() == doctest::Approx(19.0 / 6.0));
1200+
doctest::Approx((8.0 + 3.0 * std::sqrt(26.0)) / 6.0));
1201+
CHECK(combine_magnitude(measurements | take(3)).value(1).real() ==
1202+
doctest::Approx((13.0 + 6.0 * std::sqrt(10.0)) / 6.0));
11981203
CHECK(combine_magnitude(measurements | take(3)).value(2).real() ==
11991204
doctest::Approx((4.0 + 5.0 * std::sqrt(2.0)) / 2.0));
12001205
CHECK(is_nan(combine_magnitude(measurements | take(3)).value(0).imag()));

0 commit comments

Comments
 (0)