18 #include "absl/strings/str_cat.h"
19 #include "ortools/glop/parameters.pb.h"
23 #define TEST_FINITE_AND_NON_NEGATIVE(name) \
24 if (!std::isfinite(params.name())) { \
25 return absl::StrCat("parameter '", #name, "' is NaN or not finite"); \
27 if (params.name() < 0) { \
28 return absl::StrCat("Parameters '", #name, "' must be non-negative"); \
33 #define TEST_INTEGER_NON_NEGATIVE(name) \
34 if (params.name() < 0) { \
35 return absl::StrCat("Parameters '", #name, "' must be non-negative"); \
38 #define TEST_NON_NEGATIVE(name) \
39 if (std::isnan(params.name())) { \
40 return absl::StrCat("parameter '", #name, "' is NaN"); \
42 if (params.name() < 0) { \
43 return absl::StrCat("Parameters '", #name, "' must be non-negative"); \
46 #define TEST_NOT_NAN(name) \
47 if (std::isnan(params.name())) { \
48 return absl::StrCat("parameter '", #name, "' is NaN"); \
87 if (params.markowitz_zlatev_parameter() < 1) {
88 return "markowitz_zlatev_parameter must be >= 1";
95 #undef TEST_INTEGER_NON_NEGATIVE
96 #undef TEST_NON_NEGATIVE
97 #undef TEST_FINITE_AND_NON_NEGATIVE
#define TEST_FINITE_AND_NON_NEGATIVE(name)
#define TEST_INTEGER_NON_NEGATIVE(name)
#define TEST_NON_NEGATIVE(name)
#define TEST_NOT_NAN(name)
std::string ValidateParameters(const GlopParameters ¶ms)