def test_smallest_int_sctype(self): # Smallest int sctype with full recaster params = sctype_attributes() RF = Recaster() test_triples = [(N.uint8, 0, 255), (N.int8, -128, 0), (N.uint16, 0, params[N.uint16]['max']), (N.int16, params[N.int16]['min'], 0), (N.uint32, 0, params[N.uint32]['max']), (N.int32, params[N.int32]['min'], 0), (N.uint64, 0, params[N.uint64]['max']), (N.int64, params[N.int64]['min'], 0)] for T, mn, mx in test_triples: rt = RF.smallest_int_sctype(mx, mn) assert N.dtype(rt) == N.dtype(T), \ 'Expected %s, got %s type' % (T, rt) # Smallest int sctype with restricted recaster mmax = params[N.int32]['max'] mmin = params[N.int32]['min'] RR = Recaster([N.int32]) for kind in ('int', 'uint'): for T in N.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 == N.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 == N.int16, 'Expected int16, got %s' % rt rt = RF.smallest_int_sctype(mx, mn, 'i') assert rt == N.int16, 'Expected int16, got %s' % rt rt = RF.smallest_int_sctype(mx, mn, prefer='u') assert rt == N.uint16, 'Expected uint16, got %s' % rt