Exemple #1
0
    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()
Exemple #2
0
    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])
Exemple #3
0
    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))
Exemple #5
0
    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") 
Exemple #9
0
    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)
Exemple #10
0
    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)
Exemple #12
0
    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")
Exemple #13
0
    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)
Exemple #14
0
    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)
Exemple #17
0
    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)
Exemple #18
0
    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])
Exemple #20
0
    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)
Exemple #21
0
    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')
Exemple #22
0
    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)
Exemple #23
0
    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)
Exemple #24
0
    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'))
Exemple #25
0
    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)
Exemple #27
0
    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)
Exemple #28
0
    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()
Exemple #29
0
    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()
Exemple #30
0
    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()