| 2012 | } |
| 2013 | |
| 2014 | void testAvgasGetRow(Highs& h) { |
| 2015 | Avgas avgas; |
| 2016 | double lower; |
| 2017 | double upper; |
| 2018 | std::vector<HighsInt> index; |
| 2019 | std::vector<double> value; |
| 2020 | HighsInt get_num; |
| 2021 | HighsInt lp_nnz; |
| 2022 | std::vector<double> lp_cost(1); |
| 2023 | std::vector<double> lp_lower(1); |
| 2024 | std::vector<double> lp_upper(1); |
| 2025 | std::vector<HighsInt> lp_start(1); |
| 2026 | std::vector<HighsInt> lp_index(avgas_num_col); |
| 2027 | std::vector<double> lp_value(avgas_num_col); |
| 2028 | std::vector<HighsInt> set(1); |
| 2029 | std::vector<HighsInt> mask(avgas_num_row); |
| 2030 | for (HighsInt row = 0; row < avgas_num_row; row++) { |
| 2031 | avgas.getRow(row, lower, upper, index, value); |
| 2032 | HighsInt avgas_nnz = index.size(); |
| 2033 | h.getRows(row, row, get_num, lp_lower.data(), lp_upper.data(), lp_nnz, |
| 2034 | lp_start.data(), lp_index.data(), lp_value.data()); |
| 2035 | REQUIRE(lp_lower[0] == lower); |
| 2036 | REQUIRE(lp_upper[0] == upper); |
| 2037 | REQUIRE(equalSparseVectors(avgas_num_col, avgas_nnz, index.data(), |
| 2038 | value.data(), lp_nnz, lp_index.data(), |
| 2039 | lp_value.data())); |
| 2040 | } |
| 2041 | HighsInt from_row = 2; |
| 2042 | HighsInt to_row = 5; |
| 2043 | HighsInt num_row = to_row - from_row + 1; |
| 2044 | lp_lower.resize(num_row); |
| 2045 | lp_upper.resize(num_row); |
| 2046 | lp_start.resize(num_row); |
| 2047 | lp_index.resize(num_row * avgas_num_col); |
| 2048 | lp_value.resize(num_row * avgas_num_col); |
| 2049 | h.getRows(from_row, to_row, get_num, lp_lower.data(), lp_upper.data(), lp_nnz, |
| 2050 | lp_start.data(), lp_index.data(), lp_value.data()); |
| 2051 | REQUIRE(get_num == num_row); |
| 2052 | for (HighsInt row = 0; row < num_row; row++) { |
| 2053 | HighsInt avgas_row = from_row + row; |
| 2054 | avgas.getRow(avgas_row, lower, upper, index, value); |
| 2055 | HighsInt avgas_nnz = index.size(); |
| 2056 | REQUIRE(lp_lower[row] == lower); |
| 2057 | REQUIRE(lp_upper[row] == upper); |
| 2058 | HighsInt from_el = lp_start[row]; |
| 2059 | HighsInt lp_col_nnz = |
| 2060 | row < num_row - 1 ? lp_start[row + 1] - from_el : lp_nnz - from_el; |
| 2061 | REQUIRE(equalSparseVectors(avgas_num_col, avgas_nnz, index.data(), |
| 2062 | value.data(), lp_col_nnz, &lp_index[from_el], |
| 2063 | &lp_value[from_el])); |
| 2064 | } |
| 2065 | set = {1, 2, 3, 6, 7}; |
| 2066 | num_row = set.size(); |
| 2067 | lp_lower.resize(num_row); |
| 2068 | lp_upper.resize(num_row); |
| 2069 | lp_start.resize(num_row); |
| 2070 | lp_index.resize(num_row * avgas_num_col); |
| 2071 | lp_value.resize(num_row * avgas_num_col); |
no test coverage detected