Skip to content

Commit 608538d

Browse files
author
Raghuveer Devulapalli
committed
More test condition for argselect
1 parent 243fbe4 commit 608538d

File tree

1 file changed

+27
-1
lines changed

1 file changed

+27
-1
lines changed

tests/test-argselect.hpp

Lines changed: 27 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,27 @@ class avx512argselect : public ::testing::Test {
88
};
99
TYPED_TEST_SUITE_P(avx512argselect);
1010

11+
12+
template <typename T>
13+
T std_min_element(std::vector<T> arr, std::vector<int64_t> arg, int64_t left, int64_t right)
14+
{
15+
std::vector<int64_t>::iterator res =
16+
std::min_element(arg.begin() + left,
17+
arg.begin() + right,
18+
[arr](int64_t a, int64_t b) -> bool {return arr[a] < arr[b];});
19+
return arr[*res];
20+
}
21+
22+
template <typename T>
23+
T std_max_element(std::vector<T> arr, std::vector<int64_t> arg, int64_t left, int64_t right)
24+
{
25+
std::vector<int64_t>::iterator res =
26+
std::max_element(arg.begin() + left,
27+
arg.begin() + right,
28+
[arr](int64_t a, int64_t b) -> bool {return arr[a] > arr[b];});
29+
return arr[*res];
30+
}
31+
1132
TYPED_TEST_P(avx512argselect, test_random)
1233
{
1334
if (cpu_has_avx512bw()) {
@@ -21,7 +42,12 @@ TYPED_TEST_P(avx512argselect, test_random)
2142
for (auto &k : kth) {
2243
std::vector<int64_t> inx
2344
= avx512_argselect<TypeParam>(arr.data(), k, arr.size());
24-
EXPECT_EQ(arr[sorted_inx[k]], arr[inx[k]]) << "Failed at index k = " << k;
45+
auto true_kth = arr[sorted_inx[k]];
46+
EXPECT_EQ(true_kth, arr[inx[k]]) << "Failed at index k = " << k;
47+
if (k >= 1)
48+
EXPECT_GE(true_kth, std_max_element(arr, inx, 0, k-1));
49+
if (k != arrsize-1)
50+
EXPECT_LE(true_kth, std_min_element(arr, inx, k+1, arrsize-1));
2551
EXPECT_UNIQUE(inx)
2652
}
2753
}

0 commit comments

Comments
 (0)