class TestUserDataManager(unittest.TestCase): def setUp(self): self.manager = UserDataManager("test") self.generate_original_image() self.generate_patch() def generate_original_image(self): # save lena as the original image lena = data.lena() self.lena_path = os.path.join(root_user_data, "test", original_image_dirname, lena_filename) imsave(self.lena_path, lena) def generate_patch(self): # create patch patch = crop(data.lena(), (15, 15)) self.lena_patch_path = os.path.join(root_user_data, "test", patch_dirname, lena_filename) imsave(self.lena_patch_path, patch) def test_add_patch(self): os.remove(self.lena_patch_path) self.manager.add_patch(self.lena_path, (10, 10)) self.assertTrue(os.path.exists(self.lena_patch_path)) # IndexError should be raised if the cropped range is out of # the source image lena = data.lena() self.assertRaises(IndexError, self.manager.add_patch, self.lena_path, (10, 9)) self.assertRaises(IndexError, self.manager.add_patch, self.lena_path, (9, 10)) self.assertRaises(IndexError, self.manager.add_patch, self.lena_path, (lena.shape[0]-10, lena.shape[0]-9)) def test_basenames(self): self.assertEqual(self.manager.basenames(), [lena_filename]) def test_patches(self): patches = self.manager.patches() n_patches = sum(1 for p in patches) self.assertEqual(n_patches, 1) # only lena.jpg is saved for patch in patches: self.assertEqual(patch.shape, (patch_size, patch_size, 3)) def test_has_valid_format(self): self.assertTrue(self.manager.has_valid_format()) os.remove(self.lena_path) self.assertFalse(self.manager.has_valid_format()) self.generate_patch()
import sys import os from dataset import UserDataManager user, original_image_filename, x, y = sys.argv[1:5] x = int(x) y = int(y) manager = UserDataManager(user) manager.add_patch(original_image_filename, (x, y))