Exemplo n.º 1
0
 def test_init(self):
     # Setting sctype_list
     R = Recaster()
     assert set(R.sctype_list) == set(sctype_attributes().keys()), \
                            'Default recaster should include all system types'
     T = np.float32
     R = Recaster([T])
     assert R.sctype_list == [T], 'Scalar type list not correctly set'
     # Setting tolerances
     R = Recaster()
     tols = R.default_sctype_tols()
     assert tols == R.sctype_tols, 'Unexpected tols dictionary'
     F = np.finfo(T)
     R = Recaster(sctype_tols={T: {
         'rtol': F.eps*2,
         'atol': F.tiny*2,
         'silly': 'silly text'}})
     assert R.sctype_tols[T]['rtol'] == F.eps*2, \
            'Rtol not correctly set'
     assert R.sctype_tols[T]['atol'] == F.tiny*2, \
            'Atol not correctly set'
     T = np.complex128
     F = np.finfo(T)
     assert R.sctype_tols[T]['rtol'] == F.eps, \
            'Rtol defaults not correctly set'
     assert R.sctype_tols[T]['atol'] == F.tiny, \
            'Atol defaults not correctly set'
Exemplo n.º 2
0
 def test_cast_to_fp(self):
     R = Recaster()
     # Define expected type output from fp recast of value
     sta = sctype_attributes()
     inp_outp = (
         (1, np.complex128, 'c', sta[np.complex128]['size'], 0, np.complex128),
         (1, np.complex128, 'c', sta[np.complex128]['size'], 1, np.complex64),
         (1, np.complex128, 'c', sta[np.complex64]['size'], 0, np.complex64),
         (1, np.complex128, 'f', sta[np.float64]['size'], 0, np.float64),
         (1.0+1j, np.complex128, 'f', sta[np.complex128]['size'], 0, None),
         (1, np.float64, 'f', sta[np.float64]['size'], 0, np.float64),
         (1, np.float64, 'f', sta[np.float64]['size'], 1, np.float32),
         (1, np.float64, 'f', sta[np.float32]['size'], 0, np.float32),
         (1, np.float64, 'c', sta[np.complex128]['size'], 0, np.complex128),
         (1, np.float64, 'c', sta[np.complex128]['size'], 1, np.complex64),
         (1, np.int32, 'f', sta[np.float64]['size'], 0, np.float64),
         (1, np.int32, 'f', sta[np.float64]['size'], 1, np.float32),
         (1, np.float64, 'f', 0, 0, None),
         )
     for value, inp, kind, max_size, continue_down, outp in inp_outp:
         arr = np.array(value, dtype=inp)
         arr = R.cast_to_fp(arr, kind, max_size, continue_down)
         if outp is None:
             assert arr is None, \
                    'Expected None from type %s, got %s' \
                    % (inp, arr.dtype.type)
             continue
         assert arr is not None, \
                'Expected %s from %s, got None' % (outp, inp)
         dtt = arr.dtype.type
         assert dtt is outp, \
                'Expected %s from %s, got %s' % (outp, inp, dtt)
Exemplo n.º 3
0
 def test_init(self):
     # Setting sctype_list
     R = Recaster()
     assert set(R.sctype_list) == set(sctype_attributes().keys()), \
                            'Default recaster should include all system types'
     T = np.float32
     R = Recaster([T])
     assert R.sctype_list == [T], 'Scalar type list not correctly set'
     # Setting tolerances
     R = Recaster()
     tols = R.default_sctype_tols()
     assert tols == R.sctype_tols, 'Unexpected tols dictionary'
     F = np.finfo(T)
     R = Recaster(sctype_tols={
         T: {
             'rtol': F.eps * 2,
             'atol': F.tiny * 2,
             'silly': 'silly text'
         }
     })
     assert R.sctype_tols[T]['rtol'] == F.eps*2, \
            'Rtol not correctly set'
     assert R.sctype_tols[T]['atol'] == F.tiny*2, \
            'Atol not correctly set'
     T = np.complex128
     F = np.finfo(T)
     assert R.sctype_tols[T]['rtol'] == F.eps, \
            'Rtol defaults not correctly set'
     assert R.sctype_tols[T]['atol'] == F.tiny, \
            'Atol defaults not correctly set'
Exemplo n.º 4
0
 def test_recasts(self):
     valid_types = [np.int32, np.complex128, np.float64]
     # Test smallest
     R = Recaster(valid_types, recast_options='smallest')
     inp_outp = (
         (1, np.complex128, np.int32),
         (1, np.complex64, np.int32),
         (1.0 + 1j, np.complex128, np.complex128),
         (1.0 + 1j, np.complex64, np.complex128),
         (1, np.float64, np.int32),
         (1, np.float32, np.int32),
         (1.1, np.float64, np.float64),
         (-1e12, np.int64, np.float64),
     )
     self.run_io_recasts(R, inp_outp)
     # Test only_if_none
     R = Recaster(valid_types, recast_options='only_if_none')
     inp_outp = (
         (1, np.complex128, np.complex128),
         (1, np.complex64, np.int32),
         (1.0 + 1j, np.complex128, np.complex128),
         (1.0 + 1j, np.complex64, np.complex128),
         (1, np.float64, np.float64),
         (1, np.float32, np.int32),
         (1.1, np.float64, np.float64),
         (-1e12, np.int64, np.float64),
     )
     self.run_io_recasts(R, inp_outp)
     # Test preserve_precision
     R = Recaster(valid_types, recast_options='preserve_precision')
     inp_outp = (
         (1, np.complex128, np.complex128),
         (1, np.complex64, np.complex128),
         (1.0 + 1j, np.complex128, np.complex128),
         (1.0 + 1j, np.complex64, np.complex128),
         (1, np.float64, np.float64),
         (1, np.float32, np.float64),
         (1.1, np.float64, np.float64),
         (-1e12, np.int64, None),
     )
     self.run_io_recasts(R, inp_outp)
Exemplo n.º 5
0
 def test_cast_to_fp(self):
     R = Recaster()
     # Define expected type output from fp recast of value
     sta = sctype_attributes()
     inp_outp = (
         (1, np.complex128, 'c', sta[np.complex128]['size'], 0,
          np.complex128),
         (1, np.complex128, 'c', sta[np.complex128]['size'], 1,
          np.complex64),
         (1, np.complex128, 'c', sta[np.complex64]['size'], 0,
          np.complex64),
         (1, np.complex128, 'f', sta[np.float64]['size'], 0, np.float64),
         (1.0 + 1j, np.complex128, 'f', sta[np.complex128]['size'], 0,
          None),
         (1, np.float64, 'f', sta[np.float64]['size'], 0, np.float64),
         (1, np.float64, 'f', sta[np.float64]['size'], 1, np.float32),
         (1, np.float64, 'f', sta[np.float32]['size'], 0, np.float32),
         (1, np.float64, 'c', sta[np.complex128]['size'], 0, np.complex128),
         (1, np.float64, 'c', sta[np.complex128]['size'], 1, np.complex64),
         (1, np.int32, 'f', sta[np.float64]['size'], 0, np.float64),
         (1, np.int32, 'f', sta[np.float64]['size'], 1, np.float32),
         (1, np.float64, 'f', 0, 0, None),
     )
     for value, inp, kind, max_size, continue_down, outp in inp_outp:
         arr = np.array(value, dtype=inp)
         arr = R.cast_to_fp(arr, kind, max_size, continue_down)
         if outp is None:
             assert arr is None, \
                    'Expected None from type %s, got %s' \
                    % (inp, arr.dtype.type)
             continue
         assert arr is not None, \
                'Expected %s from %s, got None' % (outp, inp)
         dtt = arr.dtype.type
         assert dtt is outp, \
                'Expected %s from %s, got %s' % (outp, inp, dtt)
Exemplo n.º 6
0
 def test_smallest_int_sctype(self):
     # Smallest int sctype with full recaster
     params = sctype_attributes()
     RF = Recaster()
     test_triples = [(np.uint8, 0, 255), (np.int8, -128, 0),
                     (np.uint16, 0, params[np.uint16]['max']),
                     (np.int16, params[np.int16]['min'], 0),
                     (np.uint32, 0, params[np.uint32]['max']),
                     (np.int32, params[np.int32]['min'], 0),
                     (np.uint64, 0, params[np.uint64]['max']),
                     (np.int64, params[np.int64]['min'], 0)]
     for T, mn, mx in test_triples:
         rt = RF.smallest_int_sctype(mx, mn)
         assert np.dtype(rt) == np.dtype(T), \
                'Expected %s, got %s type' % (T, rt)
     # Smallest int sctype with restricted recaster
     mmax = params[np.int32]['max']
     mmin = params[np.int32]['min']
     RR = Recaster([np.int32])
     for kind in ('int', 'uint'):
         for T in np.sctypes[kind]:
             mx = params[T]['max']
             mn = params[T]['min']
             rt = RR.smallest_int_sctype(mx, mn)
             if mx <= mmax and mn >= mmin:
                 assert rt == np.int32, \
                        'Expected int32 type, got %s' % rt
             else:
                 assert rt is None, \
                        'Expected None, got %s for %s' % (T, rt)
     # Test preferred int flag
     mx = 1000
     mn = 0
     rt = RF.smallest_int_sctype(mx, mn)
     assert rt == np.int16, 'Expected int16, got %s' % rt
     rt = RF.smallest_int_sctype(mx, mn, 'i')
     assert rt == np.int16, 'Expected int16, got %s' % rt
     rt = RF.smallest_int_sctype(mx, mn, prefer='u')
     assert rt == np.uint16, 'Expected uint16, got %s' % rt
Exemplo n.º 7
0
 def test_smallest_int_sctype(self):
     # Smallest int sctype with full recaster
     params = sctype_attributes()
     RF = Recaster()
     test_triples = [(np.uint8, 0, 255),
                   (np.int8, -128, 0),
                   (np.uint16, 0, params[np.uint16]['max']),
                   (np.int16, params[np.int16]['min'], 0),
                   (np.uint32, 0, params[np.uint32]['max']),
                   (np.int32, params[np.int32]['min'], 0),
                   (np.uint64, 0, params[np.uint64]['max']),
                   (np.int64, params[np.int64]['min'], 0)]
     for T, mn, mx in test_triples:
         rt = RF.smallest_int_sctype(mx, mn)
         assert np.dtype(rt) == np.dtype(T), \
                'Expected %s, got %s type' % (T, rt)
     # Smallest int sctype with restricted recaster
     mmax = params[np.int32]['max']
     mmin = params[np.int32]['min']
     RR = Recaster([np.int32])
     for kind in ('int', 'uint'):
         for T in np.sctypes[kind]:
             mx = params[T]['max']
             mn = params[T]['min']
             rt = RR.smallest_int_sctype(mx, mn)
             if mx <= mmax and mn >= mmin:
                 assert rt == np.int32, \
                        'Expected int32 type, got %s' % rt
             else:
                 assert rt is None, \
                        'Expected None, got %s for %s' % (T, rt)
     # Test preferred int flag
     mx = 1000
     mn = 0
     rt = RF.smallest_int_sctype(mx, mn)
     assert rt == np.int16, 'Expected int16, got %s' % rt
     rt = RF.smallest_int_sctype(mx, mn, 'i')
     assert rt == np.int16, 'Expected int16, got %s' % rt
     rt = RF.smallest_int_sctype(mx, mn, prefer='u')
     assert rt == np.uint16, 'Expected uint16, got %s' % rt