Author: Brian Kearns <[email protected]>
Branch: 
Changeset: r67718:26bd75c83407
Date: 2013-10-29 20:22 -0400
http://bitbucket.org/pypy/pypy/changeset/26bd75c83407/

Log:    test/fix scalar construction default values

diff --git a/pypy/module/micronumpy/interp_boxes.py 
b/pypy/module/micronumpy/interp_boxes.py
--- a/pypy/module/micronumpy/interp_boxes.py
+++ b/pypy/module/micronumpy/interp_boxes.py
@@ -34,7 +34,7 @@
         from pypy.module.micronumpy.interp_dtype import get_dtype_cache
         return get_dtype_cache(space).dtypes_by_name[name]
 
-    def new(space, w_subtype, w_value):
+    def new(space, w_subtype, w_value=None):
         dtype = _get_dtype(space)
         return dtype.itemtype.coerce_subtype(space, w_subtype, w_value)
 
diff --git a/pypy/module/micronumpy/test/test_scalar.py 
b/pypy/module/micronumpy/test/test_scalar.py
--- a/pypy/module/micronumpy/test/test_scalar.py
+++ b/pypy/module/micronumpy/test/test_scalar.py
@@ -3,6 +3,21 @@
 class AppTestScalar(BaseNumpyAppTest):
     spaceconfig = dict(usemodules=["micronumpy", "binascii", "struct"])
 
+    def test_init(self):
+        import numpypy as np
+        import math
+        assert np.intp() == np.intp(0)
+        assert np.intp('123') == np.intp(123)
+        raises(TypeError, np.intp, None)
+        assert np.float64() == np.float64(0)
+        assert math.isnan(np.float64(None))
+        assert np.bool_() == np.bool_(False)
+        assert np.bool_('abc') == np.bool_(True)
+        assert np.bool_(None) == np.bool_(False)
+        assert np.complex_() == np.complex_(0)
+        #raises(TypeError, np.complex_, '1+2j')
+        assert math.isnan(np.complex_(None))
+
     def test_pickle(self):
         from numpypy import dtype, int32, float64, complex128, zeros, sum
         from numpypy.core.multiarray import scalar
diff --git a/pypy/module/micronumpy/types.py b/pypy/module/micronumpy/types.py
--- a/pypy/module/micronumpy/types.py
+++ b/pypy/module/micronumpy/types.py
@@ -347,6 +347,8 @@
         return self._coerce(space, w_item)
 
     def _coerce(self, space, w_item):
+        if space.is_none(w_item):
+            return self.box(False)
         return self.box(space.is_true(w_item))
 
     def to_builtin_type(self, space, w_item):
@@ -410,6 +412,8 @@
     _mixin_ = True
 
     def _base_coerce(self, space, w_item):
+        if w_item is None:
+            return self.box(0)
         return self.box(space.int_w(space.call_function(space.w_int, w_item)))
     def _coerce(self, space, w_item):
         return self._base_coerce(space, w_item)
@@ -629,6 +633,8 @@
     _mixin_ = True
 
     def _coerce(self, space, w_item):
+        if w_item is None:
+            return self.box(0.0)
         if space.is_none(w_item):
             return self.box(rfloat.NAN)
         return self.box(space.float_w(space.call_function(space.w_float, 
w_item)))
@@ -999,6 +1005,10 @@
     _mixin_ = True
 
     def _coerce(self, space, w_item):
+        if w_item is None:
+            return self.box_complex(0.0, 0.0)
+        if space.is_none(w_item):
+            return self.box_complex(rfloat.NAN, rfloat.NAN)
         w_item = space.call_function(space.w_complex, w_item)
         real, imag = space.unpackcomplex(w_item)
         return self.box_complex(real, imag)
_______________________________________________
pypy-commit mailing list
[email protected]
https://mail.python.org/mailman/listinfo/pypy-commit

Reply via email to