From 58d37354c3e6a148a752f16e7b37301bd52d0b8f Mon Sep 17 00:00:00 2001 From: Joel Collins Date: Thu, 17 Jan 2019 14:13:49 +0000 Subject: [PATCH] Added capture resize to API unit test --- tests/api_client.py | 10 +++++-- tests/test_api.py | 67 ++++++++++++++++++++++++++++++++++++++------- 2 files changed, 64 insertions(+), 13 deletions(-) diff --git a/tests/api_client.py b/tests/api_client.py index c1a9fdc5..a955195c 100644 --- a/tests/api_client.py +++ b/tests/api_client.py @@ -61,11 +61,15 @@ class APIconnection: } return self.post('/stage/position', json=json) - def new_capture(self, use_video_port=True, keep_on_disk=False): + def new_capture(self, use_video_port=True, keep_on_disk=False, resize=None): json = { "keep_on_disk": keep_on_disk, "use_video_port": use_video_port } + + if resize: + json['size'] = {'width': resize[0], 'height': resize[1]} + return self.post('/camera/capture', json=json) def get_capture(self, capture_id): @@ -79,8 +83,8 @@ class APIconnection: uri_route = '/camera/capture/{}'.format(capture_id) return self.delete(uri_route) - def capture(self, use_video_port=True, keep_on_disk=False, delete_after_use=True): - p = self.new_capture(use_video_port=use_video_port, keep_on_disk=keep_on_disk) + def capture(self, use_video_port=True, keep_on_disk=False, delete_after_use=True, resize=None): + p = self.new_capture(use_video_port=use_video_port, keep_on_disk=keep_on_disk, resize=resize) capture_id = p['id'] img_array = self.get_capture(capture_id) diff --git a/tests/test_api.py b/tests/test_api.py index 27279e45..ecb52abd 100644 --- a/tests/test_api.py +++ b/tests/test_api.py @@ -36,23 +36,35 @@ class TestCapture(unittest.TestCase): connection = APIconnection(host="localhost", port=5000, api_ver="v1") resolution = connection.get_config()['video_resolution'] - capture_array = connection.capture( - use_video_port=True, - keep_on_disk=False, - delete_after_use=True) + for resize in [None, (640, 480)]: - self.assertTrue(capture_array.shape == (resolution[1], resolution[0], 3)) + if resize: + resolution = resize + + capture_array = connection.capture( + use_video_port=True, + keep_on_disk=False, + delete_after_use=True, + resize=resize) + + self.assertTrue(capture_array.shape == (resolution[1], resolution[0], 3)) def test_capture_full(self): connection = APIconnection(host="localhost", port=5000, api_ver="v1") resolution = connection.get_config()['image_resolution'] - capture_array = connection.capture( - use_video_port=False, - keep_on_disk=False, - delete_after_use=True) + for resize in [None, (640, 480)]: - self.assertTrue(capture_array.shape == (resolution[1], resolution[0], 3)) + if resize: + resolution = resize + + capture_array = connection.capture( + use_video_port=False, + keep_on_disk=False, + delete_after_use=True, + resize=resize) + + self.assertTrue(capture_array.shape == (resolution[1], resolution[0], 3)) class TestStage(unittest.TestCase): @@ -67,6 +79,41 @@ class TestStage(unittest.TestCase): for key in expected_keys: self.assertTrue(key in config) + def test_stage_state(self): + connection = APIconnection(host="localhost", port=5000, api_ver="v1") + state = connection.get_state() + + self.assertTrue('stage' in state) + + expected_keys = [ + 'position', + ] + + for key in expected_keys: + self.assertTrue(key in state['stage']) + + def test_movement(self): + connection = APIconnection(host="localhost", port=5000, api_ver="v1") + + move_distance = 500 + for axis in range(3): + for direction in [1, -1]: + pos_i_dict = connection.get_state()['stage']['position'] + pos_i = [pos_i_dict['x'], pos_i_dict['y'], pos_i_dict['z']] + + move = [0, 0, 0] + move[axis] = move_distance*direction + + connection.move_by(*move) + + pos_f_dict = connection.get_state()['stage']['position'] + pos_f = [pos_f_dict['x'], pos_f_dict['y'], pos_f_dict['z']] + + diff = np.subtract(pos_f, pos_i) + logging.debug("{} > {}".format(pos_i, pos_f)) + + self.assertTrue(np.array_equal(diff, move)) + if __name__ == '__main__': suites = [