fix the SparseVector and SparseTable unit tests
also, throw std::logic_error in the OPM_ERROR_IF macro
This commit is contained in:
parent
5d435d396c
commit
4db6760b9d
@ -57,6 +57,6 @@
|
|||||||
} while (false)
|
} while (false)
|
||||||
|
|
||||||
// throw an exception if a condition is true
|
// throw an exception if a condition is true
|
||||||
#define OPM_ERROR_IF(condition, message) do {if(condition){ OPM_THROW(std::runtime_error, message);}} while(false)
|
#define OPM_ERROR_IF(condition, message) do {if(condition){ OPM_THROW(std::logic_error, message);}} while(false)
|
||||||
|
|
||||||
#endif // OPM_ERRORMACROS_HPP
|
#endif // OPM_ERRORMACROS_HPP
|
||||||
|
@ -149,7 +149,9 @@ namespace Opm
|
|||||||
/// Returns the size of a table row.
|
/// Returns the size of a table row.
|
||||||
int rowSize(int row) const
|
int rowSize(int row) const
|
||||||
{
|
{
|
||||||
assert(row >= 0 && row < size());
|
#ifndef NDEBUG
|
||||||
|
OPM_ERROR_IF(row < 0 || row >= size(), "Row index " << row << " is out of range");
|
||||||
|
#endif
|
||||||
return row_start_[row + 1] - row_start_[row];
|
return row_start_[row + 1] - row_start_[row];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -81,14 +81,14 @@ namespace Opm
|
|||||||
default_elem_()
|
default_elem_()
|
||||||
{
|
{
|
||||||
#ifndef NDEBUG
|
#ifndef NDEBUG
|
||||||
assert(sz >= 0);
|
OPM_ERROR_IF(sz < 0, "The size of a SparseVector must be non-negative");
|
||||||
assert(indices_.size() == data_.size());
|
OPM_ERROR_IF(indices_.size() != data_.size(), "The number of indices of a SparseVector must equal to the number of entries");
|
||||||
int last_index = -1;
|
int last_index = -1;
|
||||||
int num_ind = indices_.size();
|
int num_ind = indices_.size();
|
||||||
for (int i = 0; i < num_ind; ++i) {
|
for (int i = 0; i < num_ind; ++i) {
|
||||||
int index = indices_[i];
|
int index = indices_[i];
|
||||||
if (index <= last_index || index >= sz) {
|
if (index <= last_index || index >= sz) {
|
||||||
OPM_THROW(std::runtime_error, "Error in SparseVector construction, index is nonincreasing or out of range.");
|
OPM_THROW(std::logic_error, "Error in SparseVector construction, index is nonincreasing or out of range.");
|
||||||
}
|
}
|
||||||
last_index = index;
|
last_index = index;
|
||||||
}
|
}
|
||||||
@ -146,8 +146,10 @@ namespace Opm
|
|||||||
/// the vector has the given index.
|
/// the vector has the given index.
|
||||||
const T& element(int index) const
|
const T& element(int index) const
|
||||||
{
|
{
|
||||||
assert(index >= 0);
|
#ifndef NDEBUG
|
||||||
assert(index < size_);
|
OPM_ERROR_IF(index < 0, "The index of a SparseVector must be non-negative (is " << index << ")");
|
||||||
|
OPM_ERROR_IF(index >= size_, "The index of a SparseVector must be smaller than the maximum value (is " << index << ", max value: " << size_ <<")");
|
||||||
|
#endif
|
||||||
std::vector<int>::const_iterator lb = std::lower_bound(indices_.begin(), indices_.end(), index);
|
std::vector<int>::const_iterator lb = std::lower_bound(indices_.begin(), indices_.end(), index);
|
||||||
if (lb != indices_.end() && *lb == index) {
|
if (lb != indices_.end() && *lb == index) {
|
||||||
return data_[lb - indices_.begin()];
|
return data_[lb - indices_.begin()];
|
||||||
@ -161,8 +163,10 @@ namespace Opm
|
|||||||
/// \return the nzindex'th nonzero element.
|
/// \return the nzindex'th nonzero element.
|
||||||
const T& nonzeroElement(int nzindex) const
|
const T& nonzeroElement(int nzindex) const
|
||||||
{
|
{
|
||||||
assert(nzindex >= 0);
|
#ifndef NDEBUG
|
||||||
assert(nzindex < nonzeroSize());
|
OPM_ERROR_IF(nzindex < 0, "The index of a SparseVector must be non-negative (is " << nzindex << ")");
|
||||||
|
OPM_ERROR_IF(nzindex >= nonzeroSize(), "The index of a SparseVector must be smaller than the maximum value (is " << nzindex << ", max value: " << nonzeroSize() <<")");
|
||||||
|
#endif
|
||||||
return data_[nzindex];
|
return data_[nzindex];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user