22#include "absl/status/status.h"
23#include "absl/strings/str_join.h"
24#include "gtest/gtest.h"
35using ::absl::StatusCode;
36using ::testing::HasSubstr;
37using ::testing::status::StatusIs;
60 out <<
"{ solver_type: " << params.
solver_type <<
" solve_params: "
62 <<
" expected_error_substrings: [ "
80 StatusIs(StatusCode::kInvalidArgument));
83TEST_P(InvalidInputTest, InvalidCommonParameters) {
85 const std::unique_ptr<Solver> solver,
90 StatusIs(StatusCode::kInvalidArgument));
96 model.mutable_variables()->add_ids(3);
97 model.mutable_variables()->add_lower_bounds(2.0);
98 model.mutable_variables()->add_upper_bounds(3.0);
99 model.mutable_variables()->add_integers(GetParam().use_integer_variables);
100 model.mutable_variables()->add_names(
"x3");
109 EXPECT_THAT(solver->Update(update), StatusIs(StatusCode::kInvalidArgument));
113 SolveArguments args = {.parameters = GetParam().solve_parameters};
114 const auto result = SimpleSolve();
115 ASSERT_THAT(result, StatusIs(absl::StatusCode::kInvalidArgument));
116 for (
const std::string& error : GetParam().expected_error_substrings) {
118 EXPECT_THAT(result.status().message(), HasSubstr(error));
::operations_research::math_opt::VariablesProto *PROTOBUF_NONNULL mutable_variables()
void set_name(Arg_ &&arg, Args_... args)
void add_deleted_variable_ids(::int64_t value)
void set_threads(::int32_t value)
static absl::StatusOr< std::unique_ptr< Solver > > New(SolverTypeProto solver_type, const ModelProto &model, const InitArgs &arguments)
::std::string *PROTOBUF_NONNULL add_names()
void add_lower_bounds(double value)
void add_upper_bounds(double value)
void add_ids(::int64_t value)
void add_integers(bool value)
#define ASSERT_OK_AND_ASSIGN(lhs, rexpr)
EXPECT_THAT(ComputeInfeasibleSubsystem(model, GetParam().solver_type), IsOkAndHolds(IsInfeasible(true, ModelSubset{ .variable_bounds={{x, ModelSubset::Bounds{.lower=false,.upper=true}}},.linear_constraints={ {c, ModelSubset::Bounds{.lower=true,.upper=false}}}})))
TEST_P(InfeasibleSubsystemTest, CanComputeInfeasibleSubsystem)
std::ostream & operator<<(std::ostream &ostr, const SecondOrderConeConstraint &constraint)
Enum< E >::Proto EnumToProto(std::optional< E > value)
std::string ProtobufShortDebugString(const P &message)
SolveParametersProto parameters
InvalidParameterTestParams(SolverType solver_type, SolveParameters solve_parameters, std::vector< std::string > expected_error_substrings)
std::vector< std::string > expected_error_substrings
SolveParameters solve_parameters
SolveParametersProto Proto() const