-
Notifications
You must be signed in to change notification settings - Fork 79
Expand file tree
/
Copy pathmain.cpp
More file actions
71 lines (56 loc) · 2.28 KB
/
main.cpp
File metadata and controls
71 lines (56 loc) · 2.28 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
#include <gtest/gtest.h>
#include <mpi.h>
#include <array>
#include <cmath>
#include <tuple>
#include <vector>
#include "bruskova_v_global_optimization/common/include/common.hpp"
#include "bruskova_v_global_optimization/mpi/include/ops_mpi.hpp"
#include "bruskova_v_global_optimization/seq/include/ops_seq.hpp"
#include "util/include/func_test_util.hpp"
namespace bruskova_v_global_optimization {
class BruskovaVGlobalOptimizationFuncTests : public ppc::util::BaseRunFuncTests<InType, OutType, TestType> {
public:
BruskovaVGlobalOptimizationFuncTests() = default;
protected:
void SetUp() override {
TestType params = std::get<static_cast<std::size_t>(ppc::util::GTestParamIndex::kTestParams)>(GetParam());
input_data_ = std::get<0>(params);
expected_output_ = std::get<1>(params);
}
bool CheckTestOutputData(OutType &output_data) final {
int rank;
MPI_Comm_rank(MPI_COMM_WORLD, &rank);
if (rank != 0) {
return true;
}
if (output_data.size() != expected_output_.size()) {
return false;
}
for (size_t i = 0; i < output_data.size(); ++i) {
if (std::abs(output_data[i] - expected_output_[i]) > 1e-6) {
return false;
}
}
return true;
}
InType GetTestInputData() final {
return input_data_;
}
private:
InType input_data_;
OutType expected_output_;
};
TEST_P(BruskovaVGlobalOptimizationFuncTests, TestOptimization) {
ExecuteTest(GetParam());
}
const std::array<TestType, 2> kTestParam = {
TestType{std::vector<double>{-1.0, 1.0, -1.0, 1.0, 0.1}, std::vector<double>{0.0, 0.0, 0.0}},
TestType{std::vector<double>{1.0, 2.0, 1.0, 2.0, 0.1}, std::vector<double>{2.0, 1.0, 1.0}}};
const auto kTestTasksList = std::tuple_cat(ppc::util::AddFuncTask<BruskovaVGlobalOptimizationMPI, InType>(
kTestParam, PPC_SETTINGS_bruskova_v_global_optimization),
ppc::util::AddFuncTask<BruskovaVGlobalOptimizationSEQ, InType>(
kTestParam, PPC_SETTINGS_bruskova_v_global_optimization));
const auto kGtestValues = ppc::util::ExpandToValues(kTestTasksList);
INSTANTIATE_TEST_SUITE_P(OptimizationTests, BruskovaVGlobalOptimizationFuncTests, kGtestValues);
} // namespace bruskova_v_global_optimization