Ejemplo n.º 1
0
class Test__realised_dtype_setter(tests.IrisTest):
    def setUp(self):
        self.real_array = np.array(0.0)
        self.lazy_array = as_lazy_data(self.real_array)
        self.dm = DataManager(self.lazy_array)

    def test_lazy_with_none(self):
        self.assertIsNone(self.dm._realised_dtype)
        self.dm._realised_dtype_setter(None)
        self.assertIsNone(self.dm._realised_dtype)

    def test_real_with_none(self):
        self.dm._lazy_array = None
        self.dm._real_array = self.real_array
        self.assertIsNone(self.dm._realised_dtype)
        self.dm._realised_dtype_setter(None)
        self.assertIsNone(self.dm._realised_dtype)

    def test_real_with_same_dtype(self):
        self.dm._lazy_array = None
        self.dm._real_array = self.real_array
        self.assertIsNone(self.dm._realised_dtype)
        self.dm._realised_dtype_setter(self.dm.dtype)
        self.assertIsNone(self.dm._realised_dtype)

    def test_lazy_with_same_dtype(self):
        self.assertIsNone(self.dm._realised_dtype)
        self.dm._realised_dtype_setter(self.dm.dtype)
        self.assertIsNone(self.dm._realised_dtype)

    def test_real_array_failure(self):
        self.dm._lazy_array = None
        self.dm._real_array = self.real_array
        self.assertIsNone(self.dm._realised_dtype)
        emsg = 'Cannot set realised dtype, no lazy data is available'
        with self.assertRaisesRegexp(ValueError, emsg):
            self.dm._realised_dtype_setter(np.dtype('int16'))

    def test_invalid_realised_dtype(self):
        emsg = ("Can only cast lazy data to an integer or boolean "
                "dtype, got dtype\('float32'\)")
        with self.assertRaisesRegexp(ValueError, emsg):
            self.dm._realised_dtype_setter(np.dtype('float32'))

    def test_lazy_with_realised_dtype(self):
        dtypes = (np.dtype('bool'), np.dtype('int16'), np.dtype('uint16'))
        for dtype in dtypes:
            self.dm._realised_dtype = None
            self.dm._realised_dtype_setter(dtype)
            self.assertEqual(self.dm._realised_dtype, dtype)

    def test_lazy_with_realised_dtype__lazy_dtype_failure(self):
        self.dm._lazy_array = self.lazy_array.astype(np.dtype('int64'))
        emsg = ("Cannot set realised dtype for lazy data "
                "with dtype\('int64'\)")
        with self.assertRaisesRegexp(ValueError, emsg):
            self.dm._realised_dtype_setter(np.dtype('int16'))

    def test_lazy_replace_with_none(self):
        self.assertIsNone(self.dm._realised_dtype)
        dtype = np.dtype('int16')
        self.dm._realised_dtype_setter(dtype)
        self.assertEqual(self.dm._realised_dtype, dtype)
        self.dm._realised_dtype_setter(None)
        self.assertIsNone(self.dm._realised_dtype)
Ejemplo n.º 2
0
class Test__realised_dtype_setter(tests.IrisTest):
    def setUp(self):
        self.real_array = np.array(0.0)
        self.lazy_array = as_lazy_data(self.real_array)
        self.dm = DataManager(self.lazy_array)

    def test_lazy_with_none(self):
        self.assertIsNone(self.dm._realised_dtype)
        self.dm._realised_dtype_setter(None)
        self.assertIsNone(self.dm._realised_dtype)

    def test_real_with_none(self):
        self.dm._lazy_array = None
        self.dm._real_array = self.real_array
        self.assertIsNone(self.dm._realised_dtype)
        self.dm._realised_dtype_setter(None)
        self.assertIsNone(self.dm._realised_dtype)

    def test_real_with_same_dtype(self):
        self.dm._lazy_array = None
        self.dm._real_array = self.real_array
        self.assertIsNone(self.dm._realised_dtype)
        self.dm._realised_dtype_setter(self.dm.dtype)
        self.assertIsNone(self.dm._realised_dtype)

    def test_lazy_with_same_dtype(self):
        self.assertIsNone(self.dm._realised_dtype)
        self.dm._realised_dtype_setter(self.dm.dtype)
        self.assertIsNone(self.dm._realised_dtype)

    def test_real_array_failure(self):
        self.dm._lazy_array = None
        self.dm._real_array = self.real_array
        self.assertIsNone(self.dm._realised_dtype)
        emsg = 'Cannot set realised dtype, no lazy data is available'
        with self.assertRaisesRegexp(ValueError, emsg):
            self.dm._realised_dtype_setter(np.dtype('int16'))

    def test_invalid_realised_dtype(self):
        emsg = ("Can only cast lazy data to an integer or boolean "
                "dtype, got dtype\('float32'\)")
        with self.assertRaisesRegexp(ValueError, emsg):
            self.dm._realised_dtype_setter(np.dtype('float32'))

    def test_lazy_with_realised_dtype(self):
        dtypes = (np.dtype('bool'), np.dtype('int16'), np.dtype('uint16'))
        for dtype in dtypes:
            self.dm._realised_dtype = None
            self.dm._realised_dtype_setter(dtype)
            self.assertEqual(self.dm._realised_dtype, dtype)

    def test_lazy_with_realised_dtype__lazy_dtype_failure(self):
        self.dm._lazy_array = self.lazy_array.astype(np.dtype('int64'))
        emsg = ("Cannot set realised dtype for lazy data "
                "with dtype\('int64'\)")
        with self.assertRaisesRegexp(ValueError, emsg):
            self.dm._realised_dtype_setter(np.dtype('int16'))

    def test_lazy_replace_with_none(self):
        self.assertIsNone(self.dm._realised_dtype)
        dtype = np.dtype('int16')
        self.dm._realised_dtype_setter(dtype)
        self.assertEqual(self.dm._realised_dtype, dtype)
        self.dm._realised_dtype_setter(None)
        self.assertIsNone(self.dm._realised_dtype)