diff --git a/src/python/histogram.cpp b/src/python/histogram.cpp index 7a0d8004..e3ec4973 100644 --- a/src/python/histogram.cpp +++ b/src/python/histogram.cpp @@ -36,10 +36,10 @@ struct axis_visitor : public static_visitor }; python::object -histogram_axis(const dynamic_histogram<>& self, unsigned i) +histogram_axis(const dynamic_histogram<>& self, int i) { if (i < 0) i += self.dim(); - if (i < 0 || i >= self.dim()) { + if (i < 0 || i >= int(self.dim())) { PyErr_SetString(PyExc_IndexError, "axis index out of range"); python::throw_error_already_set(); } diff --git a/test/python_suite_test.py.in b/test/python_suite_test.py.in index 924399f9..1ef36e22 100755 --- a/test/python_suite_test.py.in +++ b/test/python_suite_test.py.in @@ -489,6 +489,19 @@ class histogramtest(unittest.TestCase): self.assertEqual(h.value(i, j), 2 * m[i][j]) self.assertEqual(h.variance(i, j), 2 * m[i][j]) + def test_repr(self): + h = histogram(regular_axis(10, 0, 1), integer_axis(0, 1)) + h2 = eval(repr(h)) + self.assertEqual(h, h2) + + def test_loop_axis(self): + axes = (regular_axis(10, 0, 1), integer_axis(0, 1)) + h = histogram(*axes) + for a1, a2 in zip(h, axes): + self.assertEqual(a1, a2) + with self.assertRaises(IndexError): + h[3] + def test_axis_overflow(self): h = histogram(*[regular_axis(1, 0, 1) for i in range(50)]) with self.assertRaises(RuntimeError):