Skip to content
Snippets Groups Projects
IncreasingAxisValidator.cpp 969 B
Newer Older
#include "MantidAPI/IncreasingAxisValidator.h"
#include "MantidAPI/MatrixWorkspace.h"

namespace Mantid {
namespace API {

/// Clone the current state
Kernel::IValidator_sptr IncreasingAxisValidator::clone() const {
  return boost::make_shared<IncreasingAxisValidator>(*this);
}

/**
  * Checks that X axis is in the right direction.
  *
  * @param value The workspace to check
  * @return "" if is valid, otherwise a user level description of a problem
  */
std::string IncreasingAxisValidator::checkValidity(
    const MatrixWorkspace_sptr &value) const {
  // 0 for X axis
  Axis *xAxis = value->getAxis(0);

  // Left-most axis value should be less than the right-most, if ws has
  // more than one X axis value
  if (xAxis->length() > 1 &&
      xAxis->getValue(0) >= xAxis->getValue(xAxis->length() - 1))
    return "X axis of the workspace should be increasing from left to "
  else
    return "";
}

} // namespace API
} // namespace Mantid