def test_unlocked_operators(self): v = utils.array_locked([1, 2, 3]) w = utils.array_locked([4, 5, 6]) add = v + w sub = v - w self.assertTrue(isinstance(add, np.ndarray)) self.assertTrue(isinstance(sub, np.ndarray)) self.assertTrue(add.flags.writeable) self.assertTrue(sub.flags.writeable) np.testing.assert_array_equal(add, np.add(np.copy(v), np.copy(w))) np.testing.assert_array_equal(sub, np.subtract(np.copy(v), np.copy(w))) np.testing.assert_array_equal(sub, -(w - v))
def test_locked_operators(self): v = utils.array_locked([1., 2., 3.]) with self.assertRaises(ValueError): v[0] = 0 with self.assertRaises(ValueError): v += [1, 1, 1] with self.assertRaises(ValueError): v -= [1, 1, 1] with self.assertRaises(ValueError): v *= [1, 1, 1] with self.assertRaises(ValueError): v /= [1, 1, 1] with self.assertRaises(ValueError): v //= [1, 1, 1] with self.assertRaises(ValueError): v %= [1, 1, 1] with self.assertRaises(ValueError): v **= [1, 1, 1] with self.assertRaises(ValueError): v <<= [1, 1, 1] with self.assertRaises(ValueError): v >>= [1, 1, 1] with self.assertRaises(ValueError): v &= [1, 1, 1] with self.assertRaises(ValueError): v |= [1, 1, 1] with self.assertRaises(ValueError): v ^= [1, 1, 1]
def test_is_valid_type(self): # basic types self.assertFalse(utils.is_valid_type(None, int)) self.assertFalse(utils.is_valid_type('12', int)) self.assertFalse(utils.is_valid_type(0.99, int)) self.assertFalse(utils.is_valid_type(12, float)) self.assertFalse(utils.is_valid_type(1234, str)) self.assertTrue(utils.is_valid_type(1.0, float)) self.assertTrue(utils.is_valid_type(12345, int)) self.assertTrue(utils.is_valid_type('123', str)) self.assertTrue(utils.is_valid_type(np.array([123.])[0], float)) self.assertTrue(utils.is_valid_type(np.array([1234])[0], int)) self.assertTrue(utils.is_valid_type(np.array([True])[0], bool)) # numpy types self.assertTrue(utils.is_valid_type(np.array([12], dtype=int)[0], int)) self.assertTrue(utils.is_valid_type(np.array([12], dtype=int)[0], int)) self.assertTrue( utils.is_valid_type(np.array([1.], dtype=float)[0], float)) self.assertTrue( utils.is_valid_type(np.array([1.], dtype=np.float64)[0], float)) # 0-dimensional arrays self.assertTrue(utils.is_valid_type(np.max(np.array([1.])), float)) self.assertTrue( utils.is_valid_type(np.max(utils.array_locked([1])), int))
def test_setter(self): v = utils.array_locked([1, 2, 3]) v = [4, 5, 6] np.testing.assert_array_equal(v, [4, 5, 6])
def test_copy_is_writeable(self): v = np.copy(utils.array_locked([1, 2, 3])) self.assertTrue(v.flags.writeable)