14#ifndef ORTOOLS_MATH_OPT_CORE_SPARSE_COLLECTION_MATCHERS_H_
15#define ORTOOLS_MATH_OPT_CORE_SPARSE_COLLECTION_MATCHERS_H_
18#include <initializer_list>
24#include "gtest/gtest.h"
33 std::initializer_list<std::pair<int64_t, double>> pairs);
36 std::initializer_list<std::pair<int64_t, bool>> pairs);
39 std::initializer_list<std::tuple<int64_t, int64_t, double>> values);
43using Pairs = std::initializer_list<std::pair<int64_t, const T>>;
52 const std::vector v(iterable.begin(), iterable.end());
53 const std::vector<
typename decltype(v)::value_type> expected(pairs.begin(),
56 return ::testing::ExplainMatchResult(::testing::ContainerEq(expected), v,
61using Coefficient = std::tuple<int64_t, int64_t, const double>;
70MATCHER_P(SparseDoubleMatrixMatcher, coefficients,
"") {
71 std::vector<Coefficient> v;
72 for (
int i = 0; i < arg.row_ids_size(); ++i) {
73 v.emplace_back(arg.row_ids(i), arg.column_ids(i), arg.coefficients(i));
75 const std::vector<Coefficient> expected(coefficients.begin(),
78 return ::testing::ExplainMatchResult(::testing::ContainerEq(expected), v,
std::initializer_list< std::pair< int64_t, const T > > Pairs
SparseBoolVectorProto MakeSparseBoolVector(std::initializer_list< std::pair< int64_t, bool > > pairs)
std::tuple< int64_t, int64_t, const double > Coefficient
SparseDoubleVectorProto MakeSparseDoubleVector(std::initializer_list< std::pair< int64_t, double > > pairs)
SparseVectorView< T > MakeView(absl::Span< const int64_t > ids, const Collection &values)
MATCHER_P(SparseVectorMatcher, pairs, "")
SparseDoubleMatrixProto MakeSparseDoubleMatrix(std::initializer_list< std::tuple< int64_t, int64_t, double > > values)
std::initializer_list< Coefficient > Coefficients