def test_save_model_with_writable_caches(self) -> None: # If one or both cache elements are read-only, no saving. expected_mean_vec = numpy.array([1, 2, 3]) expected_rotation = numpy.eye(3) expected_mean_vec_bio = BytesIO() # noinspection PyTypeChecker numpy.save(expected_mean_vec_bio, expected_mean_vec) expected_mean_vec_bytes = expected_mean_vec_bio.getvalue() expected_rotation_bio = BytesIO() # noinspection PyTypeChecker numpy.save(expected_rotation_bio, expected_rotation) expected_rotation_bytes = expected_rotation_bio.getvalue() itq = ItqFunctor() itq.mean_vec = expected_mean_vec itq.rotation = expected_rotation itq.mean_vec_cache_elem = DataMemoryElement(readonly=False) itq.rotation_cache_elem = DataMemoryElement(readonly=False) itq.save_model() self.assertEqual(itq.mean_vec_cache_elem.get_bytes(), expected_mean_vec_bytes) self.assertEqual(itq.rotation_cache_elem.get_bytes(), expected_rotation_bytes)
def test_save_model_no_caches(self) -> None: expected_mean_vec = numpy.array([1, 2, 3]) expected_rotation = numpy.eye(3) # Cache variables should remain None after save. itq = ItqFunctor() itq.mean_vec = expected_mean_vec itq.rotation = expected_rotation itq.save_model() self.assertIsNone(itq.mean_vec_cache_elem) self.assertIsNone(itq.mean_vec_cache_elem)
def test_save_model_with_read_only_cache(self) -> None: # If one or both cache elements are read-only, no saving. expected_mean_vec = numpy.array([1, 2, 3]) expected_rotation = numpy.eye(3) itq = ItqFunctor() itq.mean_vec = expected_mean_vec itq.rotation = expected_rotation # read-only mean-vec cache itq.mean_vec_cache_elem = DataMemoryElement(readonly=True) itq.rotation_cache_elem = DataMemoryElement(readonly=False) itq.save_model() self.assertEqual(itq.mean_vec_cache_elem.get_bytes(), b'') self.assertEqual(itq.rotation_cache_elem.get_bytes(), b'') # read-only rotation cache itq.mean_vec_cache_elem = DataMemoryElement(readonly=False) itq.rotation_cache_elem = DataMemoryElement(readonly=True) itq.save_model() self.assertEqual(itq.mean_vec_cache_elem.get_bytes(), b'') self.assertEqual(itq.rotation_cache_elem.get_bytes(), b'') # Both read-only itq.mean_vec_cache_elem = DataMemoryElement(readonly=True) itq.rotation_cache_elem = DataMemoryElement(readonly=True) itq.save_model() self.assertEqual(itq.mean_vec_cache_elem.get_bytes(), b'') self.assertEqual(itq.rotation_cache_elem.get_bytes(), b'')