summaryrefslogtreecommitdiffstats
path: root/src/boost/libs/python/test/numpy/dtype.py
diff options
context:
space:
mode:
Diffstat (limited to 'src/boost/libs/python/test/numpy/dtype.py')
-rw-r--r--src/boost/libs/python/test/numpy/dtype.py63
1 files changed, 63 insertions, 0 deletions
diff --git a/src/boost/libs/python/test/numpy/dtype.py b/src/boost/libs/python/test/numpy/dtype.py
new file mode 100644
index 000000000..a27ee0f55
--- /dev/null
+++ b/src/boost/libs/python/test/numpy/dtype.py
@@ -0,0 +1,63 @@
+#!/usr/bin/env python
+
+# Copyright Jim Bosch & Ankit Daftery 2010-2012.
+# Distributed under the Boost Software License, Version 1.0.
+# (See accompanying file LICENSE_1_0.txt or copy at
+# http://www.boost.org/LICENSE_1_0.txt)
+
+import dtype_ext
+import unittest
+import numpy
+import sys
+if (sys.version_info.major >= 3):
+ long = int
+
+class DtypeTestCase(unittest.TestCase):
+
+ def assertEquivalent(self, a, b):
+ return self.assert_(dtype_ext.equivalent(a, b), "%r is not equivalent to %r")
+
+ def testIntegers(self):
+ for bits in (8, 16, 32, 64):
+ s = getattr(numpy, "int%d" % bits)
+ u = getattr(numpy, "uint%d" % bits)
+ fs = getattr(dtype_ext, "accept_int%d" % bits)
+ fu = getattr(dtype_ext, "accept_uint%d" % bits)
+ self.assertEquivalent(fs(s(1)), numpy.dtype(s))
+ self.assertEquivalent(fu(u(1)), numpy.dtype(u))
+ # these should just use the regular Boost.Python converters
+ self.assertEquivalent(fs(True), numpy.dtype(s))
+ self.assertEquivalent(fu(True), numpy.dtype(u))
+ self.assertEquivalent(fs(int(1)), numpy.dtype(s))
+ self.assertEquivalent(fu(int(1)), numpy.dtype(u))
+ self.assertEquivalent(fs(long(1)), numpy.dtype(s))
+ self.assertEquivalent(fu(long(1)), numpy.dtype(u))
+ for name in ("bool_", "byte", "ubyte", "short", "ushort", "intc", "uintc"):
+ t = getattr(numpy, name)
+ ft = getattr(dtype_ext, "accept_%s" % name)
+ self.assertEquivalent(ft(t(1)), numpy.dtype(t))
+ # these should just use the regular Boost.Python converters
+ self.assertEquivalent(ft(True), numpy.dtype(t))
+ if name != "bool_":
+ self.assertEquivalent(ft(int(1)), numpy.dtype(t))
+ self.assertEquivalent(ft(long(1)), numpy.dtype(t))
+
+
+ def testFloats(self):
+ f = numpy.float32
+ c = numpy.complex64
+ self.assertEquivalent(dtype_ext.accept_float32(f(numpy.pi)), numpy.dtype(f))
+ self.assertEquivalent(dtype_ext.accept_complex64(c(1+2j)), numpy.dtype(c))
+ f = numpy.float64
+ c = numpy.complex128
+ self.assertEquivalent(dtype_ext.accept_float64(f(numpy.pi)), numpy.dtype(f))
+ self.assertEquivalent(dtype_ext.accept_complex128(c(1+2j)), numpy.dtype(c))
+ if hasattr(numpy, "longdouble") and hasattr(dtype_ext, "accept_longdouble"):
+ f = numpy.longdouble
+ c = numpy.clongdouble
+ self.assertEquivalent(dtype_ext.accept_longdouble(f(numpy.pi)), numpy.dtype(f))
+ self.assertEquivalent(dtype_ext.accept_clongdouble(c(1+2j)), numpy.dtype(c))
+
+
+if __name__=="__main__":
+ unittest.main()