2
0
mirror of https://github.com/boostorg/python.git synced 2026-01-21 17:12:22 +00:00

Attempt to capture better debugging info in output

[SVN r35079]
This commit is contained in:
Dave Abrahams
2006-09-12 23:58:40 +00:00
parent ad8069314d
commit 05070faf12

View File

@@ -39,16 +39,33 @@ void info(numeric::array const& z)
z.info();
}
#define CHECK(expr) \
{ \
object result; \
try { result = object(expr); } \
catch(error_already_set) \
{ \
PyObject* type, *value, *traceback; \
PyErr_Fetch(&type, &value, &traceback); \
handle<> ty(type), v(value), tr(traceback); \
str format("exception type: %s\n"); \
format += "exception value: %s\n"; \
format += "traceback:\n%s" ; \
result = format % boost::python::make_tuple(ty, v, tr); \
} \
check(result); \
}
// Tests which work on both Numeric and numarray array objects. Of
// course all of the operators "just work" since numeric::array
// inherits that behavior from object.
void exercise(numeric::array& y, object check)
{
y[make_tuple(2,1)] = 3;
check(y);
check(y.astype('D'));
check(y.copy());
check(y.typecode());
CHECK(y);
CHECK(y.astype('D'));
CHECK(y.copy());
CHECK(y.typecode());
}
// numarray-specific tests. check is a callable object which we can
@@ -56,43 +73,43 @@ void exercise(numeric::array& y, object check)
// the results of corresponding python operations.
void exercise_numarray(numeric::array& y, object check)
{
check(y.astype());
CHECK(y.astype());
check(y.argmax());
check(y.argmax(0));
CHECK(y.argmax());
CHECK(y.argmax(0));
check(y.argmin());
check(y.argmin(0));
CHECK(y.argmin());
CHECK(y.argmin(0));
check(y.argsort());
check(y.argsort(1));
CHECK(y.argsort());
CHECK(y.argsort(1));
y.byteswap();
check(y);
CHECK(y);
check(y.diagonal());
check(y.diagonal(1));
check(y.diagonal(0, 1));
check(y.diagonal(0, 1, 0));
CHECK(y.diagonal());
CHECK(y.diagonal(1));
CHECK(y.diagonal(0, 1));
CHECK(y.diagonal(0, 1, 0));
check(y.is_c_array());
check(y.isbyteswapped());
CHECK(y.is_c_array());
CHECK(y.isbyteswapped());
check(y.trace());
check(y.trace(1));
check(y.trace(0, 1));
check(y.trace(0, 1, 0));
CHECK(y.trace());
CHECK(y.trace(1));
CHECK(y.trace(0, 1));
CHECK(y.trace(0, 1, 0));
check(y.new_('D'));
CHECK(y.new_('D'));
y.sort();
check(y);
check(y.type());
CHECK(y);
CHECK(y.type());
check(y.factory(make_tuple(1.2, 3.4)));
check(y.factory(make_tuple(1.2, 3.4), "Double"));
check(y.factory(make_tuple(1.2, 3.4), "Double", make_tuple(1,2,1)));
check(y.factory(make_tuple(1.2, 3.4), "Double", make_tuple(2,1,1), false));
check(y.factory(make_tuple(1.2, 3.4), "Double", make_tuple(2), true, true));
CHECK(y.factory(make_tuple(1.2, 3.4)));
CHECK(y.factory(make_tuple(1.2, 3.4), "Double"));
CHECK(y.factory(make_tuple(1.2, 3.4), "Double", make_tuple(1,2,1)));
CHECK(y.factory(make_tuple(1.2, 3.4), "Double", make_tuple(2,1,1), false));
CHECK(y.factory(make_tuple(1.2, 3.4), "Double", make_tuple(2), true, true));
}
BOOST_PYTHON_MODULE(numpy_ext)