TEST(MetaTraits, get) { using stan::get; EXPECT_FLOAT_EQ(2.0, get(2.0,1)); std::vector<double> x(3); x[1] = 5.0; EXPECT_EQ(5.0, get(x,1)); Eigen::Matrix<double,Eigen::Dynamic,Eigen::Dynamic> m(2,3); m << 1, 3, 5, 2, 4, 6; EXPECT_EQ(1.0, get(m,0)); EXPECT_EQ(3.0, get(m,2)); EXPECT_EQ(6.0, get(m,5)); Eigen::Matrix<double,Eigen::Dynamic,1> rv(2); rv << 1, 2; EXPECT_EQ(1.0, get(rv,0)); EXPECT_EQ(2.0, get(rv,1)); Eigen::Matrix<double,1,Eigen::Dynamic> v(2); v << 1, 2; EXPECT_EQ(1.0, get(v,0)); EXPECT_EQ(2.0, get(v,1)); }
static bool check(const char* function, const char* name, const T_y& y, const T_low& low, const T_high& high) { using stan::length; using stan::get; VectorView<const T_low> low_vec(low); VectorView<const T_high> high_vec(high); for (size_t n = 0; n < length(y); n++) { if (!(low_vec[n] <= get(y, n) && get(y, n) <= high_vec[n])) { std::stringstream msg; msg << ", but must be between "; msg << "(" << low_vec[n] << ", " << high_vec[n] << ")"; std::string msg_str(msg.str()); domain_error_vec(function, name, y, n, "is ", msg_str.c_str()); } } return true; }