def test_load_app(self): # Make sure that the Window hasn't been created yet tool = AnnotationTool() self.assertFalse(hasattr(tool, 'window')) self.assertFalse(hasattr(tool, 'background')) # Make sure function runs to completion complete = tool.load_app(True) self.assertTrue(complete) # Now check to make sure the initial buttons are in place self.assertTrue(hasattr(tool, 'window')) self.assertTrue(hasattr(tool, 'background')) tool.window.destroy()
def test_close_command(self): tool = AnnotationTool() tool.load_app(True) appMenu = AppMenu(tool) complete = appMenu._close_command() self.assertTrue(complete) frame = tool.background.winfo_children() arr = [ "New Blank Project", "New Project Wizard", "Load Project", "Quit" ] for i, child in enumerate(frame): self.assertEqual(frame[i].cget('text'), arr[i])
def test_init(self): tool = AnnotationTool() # Initial List Objects self.assertListEqual(tool.file_ext, ['.jpg', '.png']) self.assertListEqual( tool.top_colors, ['#0000FF', '#FF0000', '#00FF00', '#00FFFF', '#FF00FF', '#FFFF00']) self.assertListEqual(tool.window_size_strings, ["1024x768", "800x600"]) # Initial Boolean Objects self.assertTrue(tool.saved) self.assertFalse(tool.project_open) # Initial Numerical Objects self.assertEqual(tool.window_width, 1024) self.assertEqual(tool.window_height, 768) self.assertEqual(tool.toolbar_height, 50) self.assertEqual(tool.navigator_width, 200) self.assertEqual(tool.canvas_width, 824) self.assertEqual(tool.canvas_height, 718) self.assertEqual(tool.window_size_index, 0) self.assertEqual(tool.page, 0) self.assertEqual(tool.img_per_page, 50) # Make sure Appmenu has correct "root_app" self.assertEqual(tool, tool.app_menu.root_app)
def test_bottom_clicked(self): tool = AnnotationTool() tool.load_app(True) tool.colorspace = ['#0000FF', '#FF0000', '#00FF00'] ibox = InteractiveBox(tool, 10, 10, 200, 200, tool.colorspace[0]) self.assertTrue(ibox.bottom_clicked(202, 200)) self.assertTrue(ibox.bottom_clicked(8, 200)) self.assertTrue(ibox.bottom_clicked(100, 198)) self.assertTrue(ibox.bottom_clicked(100, 202)) self.assertFalse(ibox.bottom_clicked(100, 197)) self.assertFalse(ibox.bottom_clicked(100, 203)) self.assertFalse(ibox.bottom_clicked(7, 200)) self.assertFalse(ibox.bottom_clicked(203, 200))
def test_select_image(self): tool = AnnotationTool() tool.load_app(True) appMenu = AppMenu(tool) complete = appMenu.select_image() self.assertTrue(complete) self.assertTrue(hasattr(appMenu, 'prompt')) self.assertTrue(hasattr(appMenu, 'prompt_entry')) prompt_frame = appMenu.prompt.winfo_children()[0] frame_child = prompt_frame.winfo_children() arr = ["Move to Image #", '', "Ok", "Cancel"] for i, child in enumerate(frame_child): self.assertEqual(frame_child[i].cget('text'), arr[i])
def test_right_clicked(self): tool = AnnotationTool() tool.load_app(True) tool.colorspace = ['#0000FF', '#FF0000', '#00FF00'] ibox = InteractiveBox(tool, 10, 10, 200, 200, tool.colorspace[0]) self.assertTrue(ibox.right_clicked(200, 202)) self.assertTrue(ibox.right_clicked(200, 8)) self.assertTrue(ibox.right_clicked(198, 100)) self.assertTrue(ibox.right_clicked(202, 100)) self.assertFalse(ibox.right_clicked(197, 100)) self.assertFalse(ibox.right_clicked(203, 100)) self.assertFalse(ibox.right_clicked(200, 7)) self.assertFalse(ibox.right_clicked(200, 203))
def test_init(self): tool = AnnotationTool() opt = OptionPrompt(tool) self.assertTrue(hasattr(opt, 'window_width')) self.assertTrue(hasattr(opt, 'window_height')) self.assertTrue(hasattr(opt, 'root_app')) self.assertEqual(opt.window_height, 400) self.assertEqual(opt.window_width, 600) self.assertEqual(tool, opt.root_app)
def test_draw_frame(self): tool = AnnotationTool() tool.load_app(True) tool.annotations = [] tool.class_list = ['winston', 'prince', 'duckie'] tool.colorspace = ['#0000FF', '#FF0000', '#00FF00'] tool.class_count = [5, 15, 501] tool.top_colors_free = ['#00FFFF', '#FF00FF', '#FFFF00'] tool.top_colors_used = ['#0000FF', '#FF0000', '#00FF00'] class_mgr = ObjectClassManager(tool) class_mgr.draw_frame() self.assertTrue(hasattr(class_mgr, 'class_manager_frame')) self.assertTrue(hasattr(class_mgr, 'new_class_var')) self.assertTrue(hasattr(class_mgr, 'new_class_entry')) frame_children = class_mgr.class_manager_frame.winfo_children() self.assertEqual(len(frame_children), 19) self.assertEqual(frame_children[1].cget("text"), "1. winston") self.assertEqual(frame_children[2].cget("bg"), tool.colorspace[0]) self.assertEqual(frame_children[3].cget("text"), "Rename") self.assertEqual(frame_children[4].cget("text"), "Delete") self.assertEqual(frame_children[5].cget("text"), " 5 labeled instances.") self.assertEqual(frame_children[6].cget("text"), "2. prince") self.assertEqual(frame_children[7].cget("bg"), tool.colorspace[1]) self.assertEqual(frame_children[8].cget("text"), "Rename") self.assertEqual(frame_children[9].cget("text"), "Delete") self.assertEqual(frame_children[10].cget("text"), " 15 labeled instances.") self.assertEqual(frame_children[11].cget("text"), "3. duckie") self.assertEqual(frame_children[12].cget("bg"), tool.colorspace[2]) self.assertEqual(frame_children[13].cget("text"), "Rename") self.assertEqual(frame_children[14].cget("text"), "Delete") self.assertEqual(frame_children[15].cget("text"), " 501 labeled instances.") self.assertEqual(frame_children[17].cget("text"), "Add Class") self.assertEqual(frame_children[18].cget("text"), "Close")
def test_draw_menu(self): tool = AnnotationTool() tool.load_app(True) help_menu = HelpMenu(tool) help_menu._draw_menu() self.assertTrue(hasattr(help_menu, 'window')) self.assertTrue(hasattr(help_menu, 'background')) self.assertTrue(hasattr(help_menu, 'right_pane')) self.assertTrue(hasattr(help_menu, 'help_files')) self.assertEqual(help_menu.window.title(), 'OpenAnnotation Help') window_children = help_menu.window.winfo_children() background = window_children[0] self.assertEqual(len(window_children), 1) self.assertEqual(background.cget('width'), 1024) self.assertEqual(background.cget('height'), 768) self.assertEqual(background.cget('bg'), 'gray') background_children = background.winfo_children() left_pane = background_children[0] right_pane = background_children[1] self.assertEqual(len(background_children), 2) self.assertEqual(left_pane.cget('width'), 300) self.assertEqual(left_pane.cget('height'), 768) self.assertEqual(left_pane.cget('bg'), 'white') self.assertEqual(right_pane.cget('width'), 723) self.assertEqual(right_pane.cget('height'), 768) self.assertEqual(right_pane.cget('bg'), 'white') self.assertEqual(len(help_menu.help_files), 3) left_pane_children = left_pane.winfo_children() label = left_pane_children[0] self.assertEqual(len(left_pane_children), 4) self.assertEqual(label.cget('text'), 'Navigation Bar') self.assertEqual(label.cget('bg'), 'white') right_pane_children = right_pane.winfo_children() self.assertEqual(len(right_pane_children), 2)
def test_select_image_action(self): tool = AnnotationTool() tool.load_app(True) tool.annotations = [Annotation(), Annotation(), Annotation()] appMenu = AppMenu(tool) appMenu.select_image() appMenu.prompt_entry.insert(0, "1") complete = appMenu.select_image_action() self.assertTrue(complete) appMenu.select_image() appMenu.prompt_entry.insert(0, "4") complete = appMenu.select_image_action() self.assertFalse(complete) appMenu.select_image() appMenu.prompt_entry.insert(0, "-1") complete = appMenu.select_image_action() self.assertFalse(complete)
def test_add_class(self): tool = AnnotationTool() tool.load_app(True) tool.annotations = [] tool.class_list = ['winston', 'prince', 'duckie'] tool.colorspace = ['#0000FF', '#FF0000', '#00FF00'] tool.class_count = [5, 15, 501] tool.top_colors_free = ['#00FFFF', '#FF00FF', '#FFFF00'] tool.top_colors_used = ['#0000FF', '#FF0000', '#00FF00'] class_mgr = ObjectClassManager(tool) self.assertTrue(tool.saved) self.assertEqual(tool.class_list[-1], 'duckie' ) class_mgr.draw_frame() class_mgr.new_class_var.set('') class_mgr._add_class_action() self.assertTrue(tool.saved) self.assertEqual(tool.class_list[-1], 'duckie' ) class_mgr.draw_frame() class_mgr.new_class_var.set('winston') class_mgr._add_class_action() self.assertTrue(tool.saved) self.assertEqual(tool.class_list[-1], 'duckie' ) class_mgr.draw_frame() class_mgr.new_class_var.set('TestAdd') class_mgr._add_class_action() self.assertFalse(tool.saved) self.assertEqual(tool.class_list[-1], 'TestAdd' ) self.assertEqual(tool.class_count[-1], 0) self.assertEqual(tool.colorspace[-1], '#00FFFF') self.assertEqual(len(tool.top_colors_used) , 4) self.assertEqual(len(tool.top_colors_free) , 2)
def test_rename_class_window(self): tool = AnnotationTool() tool.load_app(True) tool.annotations = [] tool.class_list = ['winston', 'prince', 'duckie'] tool.colorspace = ['#0000FF', '#FF0000', '#00FF00'] tool.class_count = [5, 15, 501] tool.top_colors_free = ['#00FFFF', '#FF00FF', '#FFFF00'] tool.top_colors_used = ['#0000FF', '#FF0000', '#00FF00'] appMenu = AppMenu(tool) wizard = ProjectWizard(appMenu) wizard._rename_class_window(0) self.assertTrue(hasattr(wizard, 'rename_entry')) self.assertTrue(hasattr(wizard, 'rename_class_prompt')) frame_children = wizard.rename_class_prompt.winfo_children()[0] \ .winfo_children() self.assertEqual(len(frame_children), 4) self.assertEqual(frame_children[0].cget("text"), 'Rename \"winston\" Class to:') self.assertEqual(frame_children[2].cget("text"), "Ok") self.assertEqual(frame_children[3].cget("text"), "Cancel") wizard._rename_class_window(1) self.assertTrue(hasattr(wizard, 'rename_entry')) self.assertTrue(hasattr(wizard, 'rename_class_prompt')) frame_children = wizard.rename_class_prompt.winfo_children()[0] \ .winfo_children() self.assertEqual(len(frame_children), 4) self.assertEqual(frame_children[0].cget("text"), 'Rename \"prince\" Class to:') self.assertEqual(frame_children[2].cget("text"), "Ok") self.assertEqual(frame_children[3].cget("text"), "Cancel")
def test_file_to_annotation(self): tool = AnnotationTool() tool.load_app(True) tool.annotations = [] appMenu = AppMenu(tool) complete = appMenu.file_to_annotation('test.jpg', MockMeta(6)) self.assertTrue(complete) self.assertEqual(tool.annotations[-1].rotation, Image.ROTATE_270) complete = appMenu.file_to_annotation('test2.jpg', MockMeta(3)) self.assertTrue(complete) self.assertEqual(tool.annotations[-1].rotation, Image.ROTATE_180) complete = appMenu.file_to_annotation('test3.jpg', MockMeta(8)) self.assertTrue(complete) self.assertEqual(tool.annotations[-1].rotation, Image.ROTATE_90) complete = appMenu.file_to_annotation('test1.png', MockMeta(8)) self.assertTrue(complete) self.assertEqual(tool.annotations[-1].rotation, Image.ROTATE_90)
def test_add_class(self): tool = AnnotationTool() tool.load_app(True) tool.annotations = [] tool.class_list = ['winston', 'prince', 'duckie'] tool.colorspace = ['#0000FF', '#FF0000', '#00FF00'] tool.class_count = [5, 15, 501] tool.top_colors_free = ['#00FFFF', '#FF00FF', '#FFFF00'] tool.top_colors_used = ['#0000FF', '#FF0000', '#00FF00'] appMenu = AppMenu(tool) wizard = ProjectWizard(appMenu) self.assertEqual(tool.class_list[-1], 'duckie') wizard._draw_right_pane() wizard.new_class_var.set('') wizard._add_class_action() self.assertEqual(tool.class_list[-1], 'duckie') wizard._draw_right_pane() wizard.new_class_var.set('winston') wizard._add_class_action() self.assertEqual(tool.class_list[-1], 'duckie') wizard._draw_right_pane() wizard.new_class_var.set('TestAdd') wizard._add_class_action() self.assertEqual(tool.class_list[-1], 'TestAdd') self.assertEqual(tool.class_count[-1], 0) self.assertEqual(tool.colorspace[-1], '#00FFFF') self.assertEqual(len(tool.top_colors_used), 4) self.assertEqual(len(tool.top_colors_free), 2)
def test_init(self): tool = AnnotationTool() tool.load_app(True) tool.class_list = ['winston', 'prince', 'duckie'] tool.colorspace = ['#0000FF', '#FF0000', '#00FF00'] tool.class_count = [5, 5, 5] class_mgr = ObjectClassManager(tool) self.assertTrue(hasattr(class_mgr, 'root_app')) self.assertEqual(tool, class_mgr.root_app) self.assertTrue(hasattr(class_mgr, 'class_manager_window'))
def test_init(self): tool = AnnotationTool() tool.load_app(True) # Annotation added tool.annotations = [] tool.file_list = [] tool.class_list = ['winston', 'prince', 'duckie'] tool.colorspace = ['#0000FF', '#FF0000', '#00FF00'] tool.current_file = 0 tool.num_pages = 1 toolbar = Toolbar(tool) self.assertEqual(toolbar.root_app, tool) self.assertEqual(toolbar.toolbar_width, tool.window_width) self.assertEqual(toolbar.toolbar_height, tool.toolbar_height) self.assertEqual(len(toolbar.toolbar_frame.winfo_children()), 0) for i in range(5): a = Annotation() a.rotation = 3 tool.file_list.append('file%d.jpg' % i) for p in range(3): roi = ROI() roi.push(0,0) roi.push(100.0,100.0) a.push(roi, i%len(tool.class_list)) tool.annotations.append(a) toolbar = Toolbar(tool) self.assertEqual(toolbar.root_app, tool) self.assertEqual(toolbar.toolbar_width, tool.window_width) self.assertEqual(toolbar.toolbar_height, tool.toolbar_height) self.assertEqual(len(toolbar.toolbar_frame.winfo_children()), 3)
def test_init(self): tool = AnnotationTool() help_menu = HelpMenu(tool) self.assertTrue(hasattr(help_menu, 'root')) self.assertTrue(hasattr(help_menu, 'window_width')) self.assertTrue(hasattr(help_menu, 'window_height')) self.assertTrue(hasattr(help_menu, 'left_pane_width')) self.assertTrue(hasattr(help_menu, 'right_pane_width')) self.assertEqual(tool, help_menu.root) self.assertEqual(1024, help_menu.window_width) self.assertEqual(768, help_menu.window_height) self.assertEqual(300, help_menu.left_pane_width) self.assertEqual(723, help_menu.right_pane_width)
def test_cancel_project(self): tool = AnnotationTool() tool.load_app(True) tool.annotations = [] tool.class_list = ['winston', 'prince', 'duckie'] tool.colorspace = ['#0000FF', '#FF0000', '#00FF00'] appMenu = AppMenu(tool) wizard = ProjectWizard(appMenu) self.assertTrue(tool.saved) self.assertTrue(wizard.wizard_window.winfo_exists()) wizard._cancel_project() self.assertTrue(tool.saved) self.assertFalse(wizard.wizard_window.winfo_exists())
def test_draw_menu(self): tool = AnnotationTool() opt = OptionPrompt(tool) complete = opt.draw_window() self.assertTrue(complete) self.assertTrue(hasattr(opt, 'option_window')) self.assertTrue(hasattr(opt, 'background')) self.assertTrue(hasattr(opt, 'selected_size')) child_truth = [ 'Option Menu', 'Window Size', '1024x768', 'Ok', 'Cancel' ] children = opt.background.winfo_children() for i, child in enumerate(children): self.assertEqual(child.cget('text'), child_truth[i])
def test_import_files_in_directory(self): tool = AnnotationTool() tool.load_app(True) tool.annotations = [Annotation(), Annotation(), Annotation()] tool.file_list = ['file1.jpg', 'file2.jpg', 'file3.png'] tool.current_file = 0 tool.class_list = [] tool.img = MockImg(640, 480) appMenu = AppMenu(tool) wizard = ProjectWizard(appMenu) complete = wizard._import_files_in_directory('path/', MockMeta(6)) self.assertTrue(complete) self.assertEqual(len(tool.annotations), 3) complete = wizard._import_files_in_directory('path/', MockMeta(6)) self.assertTrue(complete) self.assertEqual(len(tool.annotations), 3) complete = wizard._import_files_in_directory('', MockMeta(6)) self.assertFalse(complete) self.assertEqual(len(tool.annotations), 3)
def test_init(self): tool = AnnotationTool() tool.load_app(True) tool.file_list = [] tool.annotations = [] tool.class_list = ['winston', 'prince', 'duckie'] tool._draw_workspace() navigator = Navigator(tool) self.assertEqual(tool, navigator.root_app) background = tool.window.winfo_children()[2] navigator = background.winfo_children()[2] self.assertEqual(len(navigator.winfo_children()), 2) canvas = navigator.winfo_children()[0] scrollbar = navigator.winfo_children()[1] self.assertEqual(canvas.cget('width'), '200') self.assertEqual(canvas.cget('height'), '718') self.assertEqual(scrollbar.winfo_name(), '!scrollbar')
def test_save(self): tool = AnnotationTool() tool.load_app(True) tool.saved = False appMenu = AppMenu(tool) complete = appMenu._save('file.oaf') self.assertTrue(complete) self.assertTrue(tool.saved) tool.saved = False appMenu = AppMenu(tool) complete = appMenu._save('') self.assertFalse(complete) self.assertFalse(tool.saved)
def test_quit(self): tool = AnnotationTool() tool.load_app(True) tool.saved = False appMenu = AppMenu(tool) popup = appMenu._quit() children = popup.winfo_children()[0].winfo_children() arr = ["Quit without saving?", "Save", "Quit", "Cancel"] for i, child in enumerate(children): self.assertEqual(child.cget('text'), arr[i]) tool.saved = True appMenu = AppMenu(tool) complete = appMenu._quit() self.assertTrue(complete)
def test_close(self): tool = AnnotationTool() tool.load_app(True) tool.saved = False tool.project_open = True appMenu = AppMenu(tool) complete = appMenu._close() pop = appMenu.popup_window self.assertTrue(complete) self.assertFalse(tool.project_open) self.assertTrue(pop.winfo_exists()) arr = ["Close without saving?", "Save", "Close", "Cancel"] for i in range(4): widget = pop.winfo_children()[0].winfo_children()[i] self.assertEqual(arr[i], widget.cget('text'))
def test_draw_left_pane(self): tool = AnnotationTool() tool.load_app(True) menu = AppMenu(tool) tool.annotations = [] tool.class_list = [] wizard = ProjectWizard(menu) self.assertTrue(hasattr(wizard, 'left_pane')) children = wizard.left_pane.winfo_children() self.assertEqual(len(children), 5) self.assertEqual(children[0].cget('text'), 'Import File(s) to Project') self.assertEqual(children[1].cget('text'), 'Import Entire Directory to Project') self.assertEqual(children[2].cget('text'), 'Project has 0 files for annotation.') self.assertEqual(children[3].cget('text'), 'Build Project') self.assertEqual(children[4].cget('text'), 'Main Menu')
def test_ok_button(self): tool = AnnotationTool() tool.load_app(True) tool.annotations = [] tool.class_list = [] # Nothing Changes opt = OptionPrompt(tool) opt.draw_window() complete = opt.ok_button() self.assertTrue(complete) # Change Window Size opt = OptionPrompt(tool) opt.draw_window() opt.selected_size.set('800x600') complete = opt.ok_button() self.assertTrue(complete) self.assertEqual(tool.window_width, 800) self.assertEqual(tool.window_height, 600) self.assertEqual(tool.window_size_index, 1)
def test_init(self): tool = AnnotationTool() tool.load_app(True) menu = AppMenu(tool) tool.annotations = [] tool.class_list = [] wizard = ProjectWizard(menu) self.assertTrue(hasattr(wizard, 'root_app')) self.assertEqual(tool, wizard.root_app) self.assertTrue(hasattr(wizard, 'menu_app')) self.assertTrue(hasattr(wizard, 'window_width')) self.assertTrue(hasattr(wizard, 'window_height')) self.assertTrue(hasattr(wizard, 'left_pane_width')) self.assertTrue(hasattr(wizard, 'right_pane_width')) self.assertEqual(wizard.window_width, 1024) self.assertEqual(wizard.window_height, 768) self.assertEqual(wizard.left_pane_width, 300) self.assertEqual(wizard.right_pane_width, 723) self.assertTrue(hasattr(wizard, 'wizard_window')) self.assertTrue(hasattr(wizard, 'background')) self.assertEqual(wizard.background.cget('width'), 1024) self.assertEqual(wizard.background.cget('height'), 768)
def test_draw_workspace(self): class MockImg(object): def __init__(self): self.size = [640, 480] tool = AnnotationTool() tool.load_app(True) tool.annotations = [] tool.class_list = [] # Empty Project complete = tool._draw_workspace() self.assertTrue(complete) self.assertTrue(hasattr(tool, 'background')) self.assertTrue(hasattr(tool, 'app_menu')) # Annotation added tool.annotations = [] tool.file_list = [] tool.class_list = ['winston', 'prince', 'duckie'] tool.colorspace = ['blue', 'green', 'red'] tool.current_file = 0 tool.img = MockImg() for i in range(5): a = Annotation() a.rotation = 3 tool.file_list.append('file%d.jpg' % i) for p in range(3): roi = ROI() roi.push(0, 0) roi.push(100.0, 100.0) a.push(roi, random.randint(0, 2)) tool.annotations.append(a) complete = tool._draw_workspace() self.assertTrue(complete) self.assertTrue(hasattr(tool, 'background')) self.assertTrue(hasattr(tool, 'app_menu')) tool.window.destroy()
def test_reset_image(self): tool = AnnotationTool() tool.load_app(True) # Annotation added tool.annotations = [] tool.file_list = [] tool.class_list = ['winston', 'prince', 'duckie'] tool.colorspace = ['blue', 'green', 'red'] tool.current_file = 0 tool.class_count = [0, 15, 0] tool.img = MockImg() for i in range(5): a = Annotation() a.rotation = 3 tool.file_list.append('file%d.jpg' % i) for p in range(3): roi = ROI() roi.push(0, 0) roi.push(100.0, 100.0) a.push(roi, 1) tool.annotations.append(a) tool._draw_workspace() self.assertEqual(tool.annotations[tool.current_file].size(), 3) complete = tool._reset_image() self.assertEqual(tool.annotations[tool.current_file].size(), 0) self.assertTrue(complete) tool.window.destroy()
def test_on_move_press(self): tool = AnnotationTool() tool.load_app(True) # Annotation added tool.annotations = [] tool.file_list = [] tool.class_list = ['winston', 'prince', 'duckie'] tool.colorspace = ['blue', 'green', 'red'] tool.class_count = [0, 0, 0] tool.current_file = 0 tool.img = MockImg() for i in range(5): a = Annotation() a.rotation = 3 tool.file_list.append('file%d.jpg' % i) tool.annotations.append(a) tool._draw_workspace() tool._on_click(Event(10, 10)) self.assertFalse(hasattr(tool, 'rect')) complete = tool._on_move_press(Event(11, 11)) self.assertTrue(complete) self.assertTrue(hasattr(tool, 'rect')) complete = tool._on_move_press(Event(12, 12)) self.assertTrue(complete) self.assertTrue(hasattr(tool, 'rect')) self.assertTrue(hasattr(tool, 'box_end')) # Create a new Box tool._on_click(Event(10, 10)) for i in range(11, 26): tool._on_move_press(Event(i, i)) tool._on_release(Event(25, 25)) tool.resize_box_id = 0 tool.box_resize_mode = 'RIGHT' self.assertEqual(tool.annotations[0].roi[0].points[1], [25 * tool.aspect_ratio, 25 * tool.aspect_ratio]) complete = tool._on_move_press(Event(20, 25)) self.assertTrue(complete) self.assertEqual(tool.annotations[0].roi[0].points[1], [20 * tool.aspect_ratio, 25 * tool.aspect_ratio]) tool.box_resize_mode = 'LEFT' self.assertEqual(tool.annotations[0].roi[0].points[0], [10 * tool.aspect_ratio, 10 * tool.aspect_ratio]) complete = tool._on_move_press(Event(15, 10)) self.assertTrue(complete) self.assertEqual(tool.annotations[0].roi[0].points[0], [15 * tool.aspect_ratio, 10 * tool.aspect_ratio]) tool.box_resize_mode = 'TOP' self.assertEqual(tool.annotations[0].roi[0].points[0], [15 * tool.aspect_ratio, 10 * tool.aspect_ratio]) complete = tool._on_move_press(Event(15, 15)) self.assertTrue(complete) self.assertEqual(tool.annotations[0].roi[0].points[0], [15 * tool.aspect_ratio, 15 * tool.aspect_ratio]) tool.box_resize_mode = 'BOTTOM' self.assertEqual(tool.annotations[0].roi[0].points[1], [20 * tool.aspect_ratio, 25 * tool.aspect_ratio]) complete = tool._on_move_press(Event(20, 20)) self.assertTrue(complete) self.assertEqual(tool.annotations[0].roi[0].points[1], [20 * tool.aspect_ratio, 20 * tool.aspect_ratio]) tool.window.destroy()