Example #1
0
    def test_aaa_focus_events(self):
        """
        Verify that focus events are properly raised.
        """
        listener = EventListener()
        size_button = self.app.slControl.findPushButton("Toggle Size")

        # TODO: grabFocus() doesn't currently grab app-wide focus, so we have
        # to mouseClick also.
        self.textbox.mouseClick()
        self.textbox.grabFocus()

        sleep(config.MEDIUM_DELAY)

        self.assertTrue(self.textbox.focused)
        self.assertFalse(size_button.focused)

        # test gain and lost focus
        with listener.listenTo([self.textbox, size_button]):
            sleep(config.LONG_DELAY)

            size_button.grabFocus()

            sleep(config.LONG_DELAY)
            self.assertFalse(self.textbox.focused)
            self.assertTrue(size_button.focused)

        assert listener.containsEvent(self.textbox, "object:state-changed:focused", qty=1)
        assert listener.containsEvent(size_button, "object:state-changed:focused", qty=1)
        assert listener.containsEvent(size_button, "focus:", qty=1)
Example #2
0
    def test_bounds_changed_event(self):
        """
        Verify that the bounds_changed event is being properly raised.
        """

        def height(control):
            c = control._accessible.queryComponent()
            return c.getExtents(pyatspi.WINDOW_COORDS).height

        size_button = self.app.slControl.findPushButton("Toggle Size")

        self.assertEqual(height(self.textbox), 100)

        listener = EventListener()
        with listener.listenTo(self.textbox):
            size_button.click()

            sleep(config.MEDIUM_DELAY)
            self.assertEqual(height(self.textbox), 200)

        assert listener.containsEvent(self.textbox, "object:bounds-changed", qty=1)

        with listener.listenTo(self.textbox):
            size_button.click()

            sleep(config.MEDIUM_DELAY)
            self.assertEqual(height(self.textbox), 100)

        assert listener.containsEvent(self.textbox, "object:bounds-changed", qty=1)
Example #3
0
    def test_tabcontrol_events(self):
        listener = EventListener()

        tabItem0 = self.tab.getChildAtIndex(0)
        tabItem1 = self.tab.getChildAtIndex(1)
        tabItem2 = self.tab.getChildAtIndex(2)

        with listener.listenTo([tabItem0, tabItem1]):
            self.assertTrue(self.list_selection.selectChild(0))

            self.assertTrue(tabItem0.selected)
            self.assertFalse(tabItem1.selected)

        sleep(config.SHORT_DELAY)

        assert listener.containsEvent(tabItem0, 'object:state-changed:selected', 1)
        assert listener.containsEvent(tabItem1, 'object:state-changed:selected', 1)

        with listener.listenTo([tabItem0, tabItem2]):
            self.assertTrue(self.list_selection.selectChild(2))

            self.assertFalse(tabItem0.selected)
            self.assertTrue(tabItem2.selected)

        sleep(config.SHORT_DELAY)

        assert listener.containsEvent(tabItem0, 'object:state-changed:selected', 1)
        assert listener.containsEvent(tabItem2, 'object:state-changed:selected', 1)
Example #4
0
    def test_repeatbutton_click(self):
        self.assertEqual(self.textblock.name, 'Boom placeholder')

        listener = EventListener()
        with listener.listenTo(self.textblock):
            self.repeatbutton.click()

            sleep(config.SHORT_DELAY)

            self.assertEqual(self.textblock.name, 'Boom 1!')

        assert listener.containsEvent(self.textblock,
                                      'object:property-change:accessible-name',
                                      qty=1)

        with listener.listenTo(self.textblock):
            self.repeatbutton.click()

            sleep(config.SHORT_DELAY)

            self.assertEqual(self.textblock.name, 'Boom 2!')

        assert listener.containsEvent(self.textblock,
                                      'object:property-change:accessible-name',
                                      qty=1)
Example #5
0
    def test_listbox_events(self):
        listener = EventListener()

        apple = self.list.getChildAtIndex(0)
        blueberry = self.list.getChildAtIndex(1)

        with listener.listenTo([apple, blueberry]):
            self.assertTrue(self.list_selection.selectChild(0))

            self.assertTrue(apple.selected)
            self.assertFalse(blueberry.selected)

        assert listener.containsEvent(apple, 'object:state-changed:selected', 1)
        assert listener.containsEvent(blueberry, 'object:state-changed:selected', 0)

        with listener.listenTo([apple, blueberry]):
            self.assertTrue(self.list_selection.selectChild(1))

            self.assertFalse(apple.selected)
            self.assertTrue(blueberry.selected)

        assert listener.containsEvent(apple, 'object:state-changed:selected', 1)
        assert listener.containsEvent(blueberry, 'object:state-changed:selected', 1)

        with listener.listenTo([apple, blueberry]):
            self.assertTrue(self.list_selection.clearSelection())

            self.assertFalse(apple.selected)
            self.assertFalse(blueberry.selected)

        assert listener.containsEvent(apple, 'object:state-changed:selected', 0)
        assert listener.containsEvent(blueberry, 'object:state-changed:selected', 1)
Example #6
0
    def test_progressbar_setvalue(self):
        listener = EventListener()
        with listener.listenTo(self.progressbar):
            self.progressbar.value = 50
            sleep(config.SHORT_DELAY)
            self.assertNotEqual(self.progressbar.value, 50)

        assert listener.containsEvent(
            self.progressbar, 'object:property-change:accessible-value', qty=0)
Example #7
0
    def test_progressbar_setvalue(self):
        listener = EventListener()
        with listener.listenTo(self.progressbar):
            self.progressbar.value = 50
            sleep(config.SHORT_DELAY)
            self.assertNotEqual(self.progressbar.value, 50)

        assert listener.containsEvent(self.progressbar,
                                      'object:property-change:accessible-value',
                                      qty=0)
Example #8
0
    def test_accessible_value_event(self):
        self.slider_value.currentValue = 0
        self.assertEqual(self.slider_value.currentValue, 0)

        listener = EventListener()
        with listener.listenTo(self.slider):
            self.slider_value.currentValue = 5
            self.assertEqual(self.slider_value.currentValue, 5)

        assert listener.containsEvent(
            self.slider, 'object:property-change:accessible-value', qty=1)
Example #9
0
    def test_accessible_value_event(self):
        self.slider_value.currentValue = 0
        self.assertEqual(self.slider_value.currentValue, 0)

        listener = EventListener()
        with listener.listenTo(self.slider):
            self.slider_value.currentValue = 5
            self.assertEqual(self.slider_value.currentValue, 5)

        assert listener.containsEvent(self.slider,
                                      'object:property-change:accessible-value',
                                      qty=1)
Example #10
0
    def test_radiobutton_click_events(self):
        self.assertFalse(self.apple.selected)
        self.assertFalse(self.banana.selected)
        self.assertFalse(self.watermelon.selected)

        listener = EventListener()
        with listener.listenTo(self.apple):
            self.apple.click()

            self.assertTrue(self.apple.selected)
            self.assertTrue(self.apple.checked)

            self.assertFalse(self.banana.selected)
            self.assertFalse(self.banana.checked)

            self.assertFalse(self.watermelon.selected)
            self.assertFalse(self.watermelon.checked)

        assert listener.containsEvent(self.apple,
                                      'object:state-changed:selected',
                                      qty=1)

        assert listener.containsEvent(self.apple,
                                      'object:state-changed:checked',
                                      qty=1)

        with listener.listenTo([self.apple, self.banana]):
            self.banana.click()

            self.assertFalse(self.apple.selected)
            self.assertFalse(self.apple.checked)

            self.assertTrue(self.banana.selected)
            self.assertTrue(self.banana.checked)

            self.assertFalse(self.watermelon.selected)
            self.assertFalse(self.watermelon.checked)

        assert listener.containsEvent(self.apple,
                                      'object:state-changed:selected',
                                      qty=1)

        assert listener.containsEvent(self.banana,
                                      'object:state-changed:selected',
                                      qty=1)

        assert listener.containsEvent(self.apple,
                                      'object:state-changed:checked',
                                      qty=1)

        assert listener.containsEvent(self.banana,
                                      'object:state-changed:checked',
                                      qty=1)
Example #11
0
    def test_checkbox_twostate_events(self):
        self.assertFalse(self.twostate.checked)
        self.assertFalse(self.twostate.indeterminate)

        listener = EventListener()
        with listener.listenTo(self.twostate):
            self.twostate.click()

            self.assertTrue(self.twostate.checked)

        assert listener.containsEvent(self.twostate,
                                      'object:state-changed:checked',
                                      qty=1)
        assert listener.containsEvent(self.twostate,
                                      'object:state-changed:indeterminate',
                                      qty=0)

        with listener.listenTo(self.twostate):
            self.twostate.click()

            self.assertFalse(self.twostate.checked)

        assert listener.containsEvent(self.twostate,
                                      'object:state-changed:checked',
                                      qty=1)
        assert listener.containsEvent(self.twostate,
                                      'object:state-changed:indeterminate',
                                      qty=0)
Example #12
0
    def test_progressbar_value(self):
        value = self.progressbar._accessible.queryValue()

        self.assertEqual(value.minimumValue, 0)
        self.assertEqual(value.maximumValue, 100)
        self.assertEqual(value.minimumIncrement, 0)
        self.assertEqual(value.currentValue, 0)

        self.progressbar.value = 50
        self.assertEqual(self.progressbar.value, 0)

        listener = EventListener()
        with listener.listenTo(self.progressbar):
            self.textbox.text = '50'
            sleep(config.SHORT_DELAY)
            self.assertEqual(self.progressbar.value, 50)

        assert listener.containsEvent(
            self.progressbar, 'object:property-change:accessible-value', qty=1)

        with listener.listenTo(self.progressbar):
            self.textbox.text = '100'
            sleep(config.SHORT_DELAY)
            self.assertEqual(self.progressbar.value, 100)

        assert listener.containsEvent(
            self.progressbar, 'object:property-change:accessible-value', qty=1)

        with listener.listenTo(self.progressbar):
            self.textbox.text = '1000'
            sleep(config.SHORT_DELAY)
            self.assertEqual(self.progressbar.value, 100)

        assert listener.containsEvent(
            self.progressbar, 'object:property-change:accessible-value', qty=0)
    def test_visible_data_changed_event(self):
        self.assertTrue(self.combobox.expandable)
        self.assertFalse(self.combobox.expanded)

        self.assertEqual(self.combobox_action.nActions, 1)
        self.assertEqual(self.combobox_action.getName(0), 'expand or collapse')

        listener = EventListener()
        with listener.listenTo(self.combobox):
            self.combobox_action.doAction(0)
            self.assertTrue(self.combobox.expanded)

        assert listener.containsEvent(self.combobox,
                                      'object:visible-data-changed',
                                      qty=1)

        assert listener.containsEvent(self.combobox,
                                      'object:state-changed:expanded',
                                      qty=1)

        with listener.listenTo(self.combobox):
            self.combobox_action.doAction(0)
            self.assertFalse(self.combobox.expanded)

        assert listener.containsEvent(self.combobox,
                                      'object:visible-data-changed',
                                      qty=1)

        assert listener.containsEvent(self.combobox,
                                      'object:state-changed:expanded',
                                      qty=1)
Example #14
0
    def test_tabcontrol_events(self):
        listener = EventListener()

        tabItem0 = self.tab.getChildAtIndex(0)
        tabItem1 = self.tab.getChildAtIndex(1)
        tabItem2 = self.tab.getChildAtIndex(2)

        with listener.listenTo([tabItem0, tabItem1]):
            self.assertTrue(self.list_selection.selectChild(0))

            self.assertTrue(tabItem0.selected)
            self.assertFalse(tabItem1.selected)

        sleep(config.SHORT_DELAY)

        assert listener.containsEvent(tabItem0,
                                      'object:state-changed:selected', 1)
        assert listener.containsEvent(tabItem1,
                                      'object:state-changed:selected', 1)

        with listener.listenTo([tabItem0, tabItem2]):
            self.assertTrue(self.list_selection.selectChild(2))

            self.assertFalse(tabItem0.selected)
            self.assertTrue(tabItem2.selected)

        sleep(config.SHORT_DELAY)

        assert listener.containsEvent(tabItem0,
                                      'object:state-changed:selected', 1)
        assert listener.containsEvent(tabItem2,
                                      'object:state-changed:selected', 1)
Example #15
0
    def test_scrollbar_value_events(self):
        horiz_value = self.horizontal._accessible.queryValue()
        self.assertEqual(0, horiz_value.currentValue)

        listener = EventListener()
        with listener.listenTo(self.horizontal):
            horiz_value.currentValue = -100
            self.assertEqual(0, horiz_value.currentValue)

        assert listener.containsEvent(
            self.horizontal, 'object:property-change:accessible-value', qty=0)

        with listener.listenTo(self.horizontal):
            horiz_value.currentValue = 40
            self.assertEqual(40, horiz_value.currentValue)

        assert listener.containsEvent(
            self.horizontal, 'object:property-change:accessible-value', qty=1)

        with listener.listenTo(self.horizontal):
            horiz_value.currentValue = 1000
            self.assertEqual(40, horiz_value.currentValue)

        assert listener.containsEvent(
            self.horizontal, 'object:property-change:accessible-value', qty=0)
Example #16
0
    def test_radiobutton_click_events(self):
        self.assertFalse(self.apple.selected)
        self.assertFalse(self.banana.selected)
        self.assertFalse(self.watermelon.selected)

        listener = EventListener()
        with listener.listenTo(self.apple):
            self.apple.click()

            self.assertTrue(self.apple.selected)
            self.assertTrue(self.apple.checked)

            self.assertFalse(self.banana.selected)
            self.assertFalse(self.banana.checked)

            self.assertFalse(self.watermelon.selected)
            self.assertFalse(self.watermelon.checked)

        assert listener.containsEvent(self.apple,
                                      'object:state-changed:selected',
                                      qty=1)

        assert listener.containsEvent(self.apple,
                                      'object:state-changed:checked',
                                      qty=1)

        with listener.listenTo([self.apple, self.banana]):
            self.banana.click()

            self.assertFalse(self.apple.selected)
            self.assertFalse(self.apple.checked)

            self.assertTrue(self.banana.selected)
            self.assertTrue(self.banana.checked)

            self.assertFalse(self.watermelon.selected)
            self.assertFalse(self.watermelon.checked)

        assert listener.containsEvent(self.apple,
                                      'object:state-changed:selected',
                                      qty=1)

        assert listener.containsEvent(self.banana,
                                      'object:state-changed:selected',
                                      qty=1)

        assert listener.containsEvent(self.apple,
                                      'object:state-changed:checked',
                                      qty=1)

        assert listener.containsEvent(self.banana,
                                      'object:state-changed:checked',
                                      qty=1)
Example #17
0
    def test_accessible_name_event(self):
        """
        Verify that accessible-name events are being properly raised.
        """

        def backspace():
            procedurelogger.action("Press Backspace.", self.textbox)
            self.textbox.grabFocus()
            pyatspi.Registry.generateKeyboardEvent(0xFF08, None, pyatspi.KEY_SYM)

        listener = EventListener()

        self.assertEqual(self.textbox.name, "Hello World!")

        # TODO: grabFocus() doesn't currently grab app-wide focus, so we have
        # to mouseClick also.
        self.textbox.grabFocus()
        self.textbox.mouseClick()

        assert self.textbox.focused

        with listener.listenTo(self.textbox):
            self.textbox.typeText("1")

            sleep(config.SHORT_DELAY)
            self.assertEqual(self.textbox.name, "Hello World!1")

        assert listener.containsEvent(self.textbox, "object:property-change:accessible-name", qty=1)

        with listener.listenTo(self.textbox):
            self.textbox.typeText("23")
            sleep(config.MEDIUM_DELAY)
            self.assertEqual(self.textbox.name, "Hello World!123")

            backspace()
            sleep(config.MEDIUM_DELAY)
            self.assertEqual(self.textbox.name, "Hello World!12")

            backspace()
            sleep(config.MEDIUM_DELAY)
            self.assertEqual(self.textbox.name, "Hello World!1")

            backspace()
            sleep(config.MEDIUM_DELAY)
            self.assertEqual(self.textbox.name, "Hello World!")

        assert listener.containsEvent(self.textbox, "object:property-change:accessible-name", qty=5)
Example #18
0
    def test_textblock_events(self):
        self.assertEqual('Hello World!', self.textblock.name)

        listener = EventListener()
        with listener.listenTo(self.textblock):
            self.button.click()
            self.assertEqual('Goodbye World!', self.textblock.name)

        # GTK+ fires text-changed:delete, text-changed:insert,
        # object:visible-data-changed and object:bounds-changed, none of which
        # we can fire because TextBlockAutomationPeer (a
        # FrameworkElementAutomationPeer) isn't specific enough to fire these
        # events.

        assert listener.containsEvent(self.textblock,
                                      'object:property-change:accessible-name',
                                      qty=1)
Example #19
0
    def test_textblock_events(self):
        self.assertEqual('Hello World!', self.textblock.name)

        listener = EventListener()
        with listener.listenTo(self.textblock):
            self.button.click()
            self.assertEqual('Goodbye World!', self.textblock.name)

        # GTK+ fires text-changed:delete, text-changed:insert,
        # object:visible-data-changed and object:bounds-changed, none of which
        # we can fire because TextBlockAutomationPeer (a
        # FrameworkElementAutomationPeer) isn't specific enough to fire these
        # events.

        assert listener.containsEvent(self.textblock,
                                      'object:property-change:accessible-name',
                                      qty=1)
Example #20
0
    def test_scrollviewer_value_events(self):
        horiz_value = self.horizontal._accessible.queryValue()
        self.assertEqual(0, horiz_value.currentValue)

        listener = EventListener()
        with listener.listenTo(self.horizontal):
            horiz_value.currentValue = -100
            self.assertEqual(0, horiz_value.currentValue)

        assert listener.containsEvent(self.horizontal,
                                      'object:property-change:accessible-value',
                                      qty=0)

        with listener.listenTo(self.horizontal):
            horiz_value.currentValue = 40
            self.assertEqual(40, horiz_value.currentValue)

        assert listener.containsEvent(self.horizontal,
                                      'object:property-change:accessible-value',
                                      qty=1)

        with listener.listenTo(self.horizontal):
            horiz_value.currentValue = 1000
            self.assertEqual(40, horiz_value.currentValue)

        assert listener.containsEvent(self.horizontal,
                                      'object:property-change:accessible-value',
                                      qty=0)
Example #21
0
    def test_slider_buttons(self):
        self.slider_value.currentValue = 0
        self.assertEqual(self.slider_value.currentValue, 0)
        self.assertEqual(self.label.name, '0')

        large_decrease = self.slider.getChildAtIndex(0)
        large_increase = self.slider.getChildAtIndex(2)

        listener = EventListener()
        for value in (25, 50, 75, 100):
            with listener.listenTo(self.slider):
                large_increase.click()
                self.assertEqual(self.label.name, str(value))
                self.assertEqual(self.slider_value.currentValue, value)

            assert listener.containsEvent(
                self.slider, 'object:property-change:accessible-value', qty=1)

        with listener.listenTo(self.slider):
            large_increase.click()
            self.assertEqual(self.label.name, '100')
            self.assertEqual(self.slider_value.currentValue, 100)

        assert listener.containsEvent(
            self.slider, 'object:property-change:accessible-value', qty=0)

        for i in (75, 50, 25, 0):
            with listener.listenTo(self.slider):
                large_decrease.click()

                sleep(config.MEDIUM_DELAY)

                self.assertEqual(self.label.name, str(i))
                self.assertEqual(self.slider_value.currentValue, i)

            assert listener.containsEvent(
                self.slider, 'object:property-change:accessible-value', qty=1)

        with listener.listenTo(self.slider):
            large_decrease.click()
            self.assertEqual(self.label.name, '0')
            self.assertEqual(self.slider_value.currentValue, 0)

        assert listener.containsEvent(
            self.slider, 'object:property-change:accessible-value', qty=0)
Example #22
0
    def test_button_click_events(self):
        self.assertEqual('0', self.textblock.name)

        listener = EventListener()
        with listener.listenTo(self.textblock):
            self.button.click()

            sleep(config.SHORT_DELAY)

            self.assertEqual('1', self.textblock.name)

        assert listener.containsEvent(self.textblock,
                                      'object:property-change:accessible-name',
                                      qty=1)

        with listener.listenTo(self.textblock):
            self.button.mouseClick()

            sleep(config.SHORT_DELAY)

            self.assertEqual('2', self.textblock.name)

        assert listener.containsEvent(self.textblock,
                                      'object:property-change:accessible-name',
                                      qty=1)

        # Ensure that insensitive buttons can't be actioned
        self.assertTrue(self.button.sensitive)
        with listener.listenTo(self.button):
            self.toggleSensitivity.click()

            self.assertFalse(self.button.sensitive)

        assert listener.containsEvent(self.button,
                                      'object:state-changed:sensitive',
                                      qty=1)

        self.assertEqual('2', self.textblock.name)
        with listener.listenTo([self.textblock, self.button]):
            self.assertRaises(NotSensitiveError, lambda x: x.click(),
                              self.button)

            self.assertEqual('2', self.textblock.name)

        assert listener.containsEvent(qty=0)
Example #23
0
    def test_togglebutton_twostate_events(self):
        self.assertFalse(self.twostate.checked)
        self.assertFalse(self.twostate.indeterminate)

        listener = EventListener()
        with listener.listenTo(self.twostate):
            self.twostate.click()

            self.assertTrue(self.twostate.checked)

        assert listener.containsEvent(self.twostate,
                                      'object:state-changed:checked',
                                      qty=1)
        assert listener.containsEvent(self.twostate,
                                      'object:state-changed:indeterminate',
                                      qty=0)

        with listener.listenTo(self.twostate):
            self.twostate.click()

            self.assertFalse(self.twostate.checked);

        assert listener.containsEvent(self.twostate,
                                      'object:state-changed:checked',
                                      qty=1)
        assert listener.containsEvent(self.twostate,
                                      'object:state-changed:indeterminate',
                                      qty=0)
Example #24
0
    def test_selection_events(self):
        """
        Verify that events are being properly raised.
        """
        listener = EventListener()

        child0 = self.list.getChildAtIndex(0)
        child1 = self.list.getChildAtIndex(1)

        with listener.listenTo(child0):
            self.assertTrue(self.list_selection.selectChild(0))

        assert listener.containsEvent(child0, 'object:state-changed:selected',
                                      1)
        self.assertTrue(child0.selected)

        with listener.listenTo([child0, child1]):
            self.assertTrue(self.list_selection.selectChild(1))

        assert listener.containsEvent(child0, 'object:state-changed:selected',
                                      1)
        self.assertFalse(child0.selected)

        assert listener.containsEvent(child1, 'object:state-changed:selected',
                                      1)
        self.assertTrue(child1.selected)
Example #25
0
    def test_passwordbox_editable(self):
        edit = self.passwordbox._accessible.queryEditableText()
        listener = EventListener()

        # assert the password box is blank
        self.assertEqual('', self.textblock.name)

        with listener.listenTo(self.passwordbox):
            self.assertTrue(edit.insertText(0, 'hello', 6))

            sleep(config.SHORT_DELAY)

            self.assertEqual('hello', self.textblock.name)
            self.assertEqual('', self.passwordbox.name)

        assert listener.containsEvent(self.passwordbox,
                                      'object:text-changed:insert',
                                      qty=1)
Example #26
0
    def test_passwordbox_editable(self):
        edit = self.passwordbox._accessible.queryEditableText()
        listener = EventListener()

        # assert the password box is blank
        self.assertEqual('', self.textblock.name)

        with listener.listenTo(self.passwordbox):
            self.assertTrue(edit.insertText(0, 'hello', 6))

            sleep(config.SHORT_DELAY)

            self.assertEqual('hello', self.textblock.name)
            self.assertEqual('', self.passwordbox.name)

        assert listener.containsEvent(self.passwordbox,
                                      'object:text-changed:insert',
                                      qty=1)
Example #27
0
    def test_slider_buttons(self):
        self.slider_value.currentValue = 0
        self.assertEqual(self.slider_value.currentValue, 0)
        self.assertEqual(self.label.name, '0')

        large_decrease = self.slider.getChildAtIndex(0)
        large_increase = self.slider.getChildAtIndex(2)

        listener = EventListener()
        for value in (25, 50, 75, 100):
            with listener.listenTo(self.slider):
                    large_increase.click()
                    self.assertEqual(self.label.name, str(value))
                    self.assertEqual(self.slider_value.currentValue, value)

            assert listener.containsEvent(self.slider,
                                          'object:property-change:accessible-value',
                                          qty=1)

        with listener.listenTo(self.slider):
                large_increase.click()
                self.assertEqual(self.label.name, '100')
                self.assertEqual(self.slider_value.currentValue, 100)

        assert listener.containsEvent(self.slider,
                                      'object:property-change:accessible-value',
                                      qty=0)

        for i in (75, 50, 25, 0):
            with listener.listenTo(self.slider):
                    large_decrease.click()

                    sleep(config.MEDIUM_DELAY)

                    self.assertEqual(self.label.name, str(i))
                    self.assertEqual(self.slider_value.currentValue, i)

            assert listener.containsEvent(self.slider,
                                          'object:property-change:accessible-value',
                                          qty=1)

        with listener.listenTo(self.slider):
                large_decrease.click()
                self.assertEqual(self.label.name, '0')
                self.assertEqual(self.slider_value.currentValue, 0)

        assert listener.containsEvent(self.slider,
                                      'object:property-change:accessible-value',
                                      qty=0)
Example #28
0
    def test_text_changed_event(self):
        t = self.textbox_text
        self.assertEqual('Foo', t.getText(0, -1))

        listener = EventListener()
        with listener.listenTo(self.textbox):
            self.addAFooButton.click()

            self.assertEqual('FooFoo\n', t.getText(0, -1))

        assert listener.containsEvent(self.textbox,
                                      'object:text-changed:insert',
                                      qty=1)

        assert listener.containsEvent(self.textbox,
                                      'object:property-change:accessible-name',
                                      qty=1)

        with listener.listenTo(self.textbox):
            self.textbox_edit.insertText(3, 'Bar', 3)

            self.assertEqual('FooBarFoo\n', t.getText(0, -1))

        assert listener.containsEvent(self.textbox,
                                      'object:text-changed:insert',
                                      qty=1)

        assert listener.containsEvent(self.textbox,
                                      'object:property-change:accessible-name',
                                      qty=1)

        with listener.listenTo(self.textbox):
            self.textbox_edit.deleteText(0, 3)

            self.assertEqual(t.getText(0, -1), 'BarFoo\n')

        assert listener.containsEvent(self.textbox,
                                      'object:text-changed:delete',
                                      qty=1)

        assert listener.containsEvent(self.textbox,
                                      'object:property-change:accessible-name',
                                      qty=1)
Example #29
0
    def test_bounds_changed_event(self):
        """
        Verify that the bounds_changed event is being properly raised.
        """
        def height(control):
            c = control._accessible.queryComponent()
            return c.getExtents(pyatspi.WINDOW_COORDS).height

        size_button = self.app.slControl.findPushButton('Toggle Size')

        self.assertEqual(height(self.textbox), 100)

        listener = EventListener()
        with listener.listenTo(self.textbox):
            size_button.click()

            sleep(config.MEDIUM_DELAY)
            self.assertEqual(height(self.textbox), 200)

        assert listener.containsEvent(self.textbox,
                                      'object:bounds-changed',
                                      qty=1)

        with listener.listenTo(self.textbox):
            size_button.click()

            sleep(config.MEDIUM_DELAY)
            self.assertEqual(height(self.textbox), 100)

        assert listener.containsEvent(self.textbox,
                                      'object:bounds-changed',
                                      qty=1)
Example #30
0
    def test_repeatbutton_click(self):
        self.assertEqual(self.textblock.name, 'Boom placeholder')

        listener = EventListener()
        with listener.listenTo(self.textblock):
            self.repeatbutton.click()

            sleep(config.SHORT_DELAY)

            self.assertEqual(self.textblock.name, 'Boom 1!')

        assert listener.containsEvent(self.textblock,
                                      'object:property-change:accessible-name',
                                      qty=1)

        with listener.listenTo(self.textblock):
            self.repeatbutton.click()

            sleep(config.SHORT_DELAY)

            self.assertEqual(self.textblock.name, 'Boom 2!')

        assert listener.containsEvent(self.textblock,
                                      'object:property-change:accessible-name',
                                      qty=1)
Example #31
0
    def test_button_click_events(self):
        self.assertEqual('0', self.textblock.name)

        listener = EventListener()
        with listener.listenTo(self.textblock):
            self.button.click()

            sleep(config.SHORT_DELAY)

            self.assertEqual('1', self.textblock.name)

        assert listener.containsEvent(self.textblock,
                                      'object:property-change:accessible-name',
                                      qty=1)

        with listener.listenTo(self.textblock):
            self.button.mouseClick()

            sleep(config.SHORT_DELAY)

            self.assertEqual('2', self.textblock.name)

        assert listener.containsEvent(self.textblock,
                                      'object:property-change:accessible-name',
                                      qty=1)

        # Ensure that insensitive buttons can't be actioned
        self.assertTrue(self.button.sensitive)
        with listener.listenTo(self.button):
            self.toggleSensitivity.click()

            self.assertFalse(self.button.sensitive)

        assert listener.containsEvent(self.button,
                                      'object:state-changed:sensitive',
                                      qty=1)

        self.assertEqual('2', self.textblock.name)
        with listener.listenTo([self.textblock, self.button]):
            self.assertRaises(NotSensitiveError, lambda x: x.click(),
                              self.button)

            self.assertEqual('2', self.textblock.name)

        assert listener.containsEvent(qty=0)
Example #32
0
    def test_aaa_focus_events(self):
        """
        Verify that focus events are properly raised.
        """
        listener = EventListener()
        size_button = self.app.slControl.findPushButton('Toggle Size')

        # TODO: grabFocus() doesn't currently grab app-wide focus, so we have
        # to mouseClick also.
        self.textbox.mouseClick()
        self.textbox.grabFocus()

        sleep(config.MEDIUM_DELAY)

        self.assertTrue(self.textbox.focused)
        self.assertFalse(size_button.focused)

        # test gain and lost focus
        with listener.listenTo([self.textbox, size_button]):
            sleep(config.LONG_DELAY)

            size_button.grabFocus()

            sleep(config.LONG_DELAY)
            self.assertFalse(self.textbox.focused)
            self.assertTrue(size_button.focused)

        assert listener.containsEvent(self.textbox,
                                      'object:state-changed:focused',
                                      qty=1)
        assert listener.containsEvent(size_button,
                                      'object:state-changed:focused',
                                      qty=1)
        assert listener.containsEvent(size_button, 'focus:', qty=1)
Example #33
0
    def test_sensitivity_event(self):
        """
        Verify that the state-changed:sensitive event is being properly raised.
        """
        sensitivity_button = self.app.slControl.findPushButton(
            'Toggle Sensitivity')

        self.assertTrue(self.textbox.sensitive)

        listener = EventListener()
        with listener.listenTo(self.textbox):
            sensitivity_button.click()

            sleep(config.SHORT_DELAY)
            self.assertFalse(self.textbox.sensitive)

        assert listener.containsEvent(self.textbox,
                                      'object:state-changed:sensitive',
                                      qty=1)

        with listener.listenTo(self.textbox):
            sensitivity_button.click()

            sleep(config.SHORT_DELAY)
            self.assertTrue(self.textbox.sensitive)

        assert listener.containsEvent(self.textbox,
                                      'object:state-changed:sensitive',
                                      qty=1)
Example #34
0
    def test_state_changed_event(self):
        self.assertFalse(self.checkbox.checked)

        self.assertEqual(self.checkbox_action.nActions, 1)
        self.assertEqual(self.checkbox_action.getName(0), 'click')

        listener = EventListener()
        with listener.listenTo(self.checkbox):
            self.checkbox_action.doAction(0)
            self.assertTrue(self.checkbox.checked)

        assert listener.containsEvent(self.checkbox,
                                      'object:state-changed:checked',
                                      qty=1)

        with listener.listenTo(self.checkbox):
            self.checkbox_action.doAction(0)
            self.assertFalse(self.checkbox.expanded)

        assert listener.containsEvent(self.checkbox,
                                      'object:state-changed:checked',
                                      qty=1)
Example #35
0
    def test_add_remove_events(self):
        def get_list_item_name(list, index):
            return list.getChildAtIndex(index).getChildAtIndex(0).name

        listener = EventListener()

        self.assertEqual(1, self.list.childCount)
        self.assertEqual('Item 1', get_list_item_name(self.list, 0))

        with listener.listenTo(self.list):
            self.add_button.click()

            sleep(config.SHORT_DELAY)

            self.assertEqual(2, self.list.childCount)
            self.assertEqual('Item 1', get_list_item_name(self.list, 0))
            self.assertEqual('Item 2', get_list_item_name(self.list, 1))

        assert listener.containsEvent(self.list,
                                      'object:children-changed:add',
                                      qty=1)

        with listener.listenTo(self.list):
            self.remove_button.click()

            sleep(config.SHORT_DELAY)

            self.assertEqual(1, self.list.childCount)
            self.assertEqual('Item 1', get_list_item_name(self.list, 0))

        assert listener.containsEvent(self.list,
                                      'object:children-changed:remove',
                                      qty=1)

        with listener.listenTo(self.list):
            self.add_button.click()
            self.add_button.click()

            sleep(config.SHORT_DELAY)

            self.assertEqual(3, self.list.childCount)
            self.assertEqual('Item 1', get_list_item_name(self.list, 0))
            self.assertEqual('Item 3', get_list_item_name(self.list, 1))
            self.assertEqual('Item 4', get_list_item_name(self.list, 2))

        assert listener.containsEvent(self.list,
                                      'object:children-changed:add',
                                      qty=2)
Example #36
0
    def test_current_value(self):
        self.slider_value.currentValue = 0
        self.assertEqual(self.slider_value.currentValue, 0)
        self.assertEqual(self.label.name, '0')

        listener = EventListener()
        with listener.listenTo(self.slider):
            self.slider_value.currentValue = 100
            self.assertEqual(self.label.name, '100')
            self.assertEqual(self.slider_value.currentValue, 100)

        assert listener.containsEvent(self.slider,
                                      'object:property-change:accessible-value',
                                      qty=1)

        with listener.listenTo(self.slider):
            self.slider_value.currentValue = 100
            self.assertEqual(self.label.name, '100')
            self.assertEqual(self.slider_value.currentValue, 100)

        assert listener.containsEvent(self.slider,
                                      'object:property-change:accessible-value',
                                      qty=0)


        with listener.listenTo(self.slider):
            self.slider_value.currentValue = 10000
            self.assertEqual(self.label.name, '100')
            self.assertEqual(self.slider_value.currentValue, 100)

        assert listener.containsEvent(self.slider,
                                      'object:property-change:accessible-value',
                                      qty=0)

        with listener.listenTo(self.slider):
            self.slider_value.currentValue = 0
            self.assertEqual(self.slider_value.currentValue, 0)
            self.assertEqual(self.label.name, '0')

        assert listener.containsEvent(self.slider,
                                      'object:property-change:accessible-value',
                                      qty=1)
Example #37
0
    def test_current_value(self):
        self.slider_value.currentValue = 0
        self.assertEqual(self.slider_value.currentValue, 0)
        self.assertEqual(self.label.name, '0')

        listener = EventListener()
        with listener.listenTo(self.slider):
            self.slider_value.currentValue = 100
            self.assertEqual(self.label.name, '100')
            self.assertEqual(self.slider_value.currentValue, 100)

        assert listener.containsEvent(
            self.slider, 'object:property-change:accessible-value', qty=1)

        with listener.listenTo(self.slider):
            self.slider_value.currentValue = 100
            self.assertEqual(self.label.name, '100')
            self.assertEqual(self.slider_value.currentValue, 100)

        assert listener.containsEvent(
            self.slider, 'object:property-change:accessible-value', qty=0)

        with listener.listenTo(self.slider):
            self.slider_value.currentValue = 10000
            self.assertEqual(self.label.name, '100')
            self.assertEqual(self.slider_value.currentValue, 100)

        assert listener.containsEvent(
            self.slider, 'object:property-change:accessible-value', qty=0)

        with listener.listenTo(self.slider):
            self.slider_value.currentValue = 0
            self.assertEqual(self.slider_value.currentValue, 0)
            self.assertEqual(self.label.name, '0')

        assert listener.containsEvent(
            self.slider, 'object:property-change:accessible-value', qty=1)
Example #38
0
    def test_controltype(self):
        listener = EventListener()

        self.assertEqual(1, self.slControl.childCount)

        subject = Accessible(self.slControl.getChildAtIndex(0))
        self.assertEqual('Hola', subject.name)
        self.assertEqual(pyatspi.ROLE_PUSH_BUTTON, subject.role)

        with listener.listenTo(self.slControl):
            subject.click()

            self.assertEqual(1, self.slControl.childCount)

            subject = Accessible(self.slControl.getChildAtIndex(0))
            self.assertEqual('Hola', subject.name)
            self.assertEqual(pyatspi.ROLE_RADIO_BUTTON, subject.role)

        assert listener.containsEvent(self.slControl,
                                      'object:children-changed:remove',
                                      qty=1)
        assert listener.containsEvent(self.slControl,
                                      'object:children-changed:add',
                                      qty=1)
Example #39
0
    def test_sensitivity_event(self):
        """
        Verify that the state-changed:sensitive event is being properly raised.
        """
        sensitivity_button = self.app.slControl.findPushButton("Toggle Sensitivity")

        self.assertTrue(self.textbox.sensitive)

        listener = EventListener()
        with listener.listenTo(self.textbox):
            sensitivity_button.click()

            sleep(config.SHORT_DELAY)
            self.assertFalse(self.textbox.sensitive)

        assert listener.containsEvent(self.textbox, "object:state-changed:sensitive", qty=1)

        with listener.listenTo(self.textbox):
            sensitivity_button.click()

            sleep(config.SHORT_DELAY)
            self.assertTrue(self.textbox.sensitive)

        assert listener.containsEvent(self.textbox, "object:state-changed:sensitive", qty=1)
Example #40
0
    def test_add_remove_events(self):
        def get_list_item_name(list, index):
            return list.getChildAtIndex(index).getChildAtIndex(0).name

        listener = EventListener()

        self.assertEqual(1, self.list.childCount)
        self.assertEqual('Item 1', get_list_item_name(self.list, 0))

        with listener.listenTo(self.list):
            self.add_button.click()

            sleep(config.SHORT_DELAY)

            self.assertEqual(2, self.list.childCount)
            self.assertEqual('Item 1', get_list_item_name(self.list, 0))
            self.assertEqual('Item 2', get_list_item_name(self.list, 1))

        assert listener.containsEvent(self.list,
                                      'object:children-changed:add',
                                      qty=1)

        with listener.listenTo(self.list):
            self.remove_button.click()

            sleep(config.SHORT_DELAY)

            self.assertEqual(1, self.list.childCount)
            self.assertEqual('Item 1', get_list_item_name(self.list, 0))

        assert listener.containsEvent(self.list,
                                      'object:children-changed:remove',
                                      qty=1)

        with listener.listenTo(self.list):
            self.add_button.click()
            self.add_button.click()

            sleep(config.SHORT_DELAY)

            self.assertEqual(3, self.list.childCount)
            self.assertEqual('Item 1', get_list_item_name(self.list, 0))
            self.assertEqual('Item 3', get_list_item_name(self.list, 1))
            self.assertEqual('Item 4', get_list_item_name(self.list, 2))

        assert listener.containsEvent(self.list,
                                      'object:children-changed:add',
                                      qty=2)
Example #41
0
    def test_accessible_name_event(self):
        """
        Verify that accessible-name events are being properly raised.
        """
        def backspace():
            procedurelogger.action('Press Backspace.', self.textbox)
            self.textbox.grabFocus()
            pyatspi.Registry.generateKeyboardEvent(0xFF08, None,
                                                   pyatspi.KEY_SYM)

        listener = EventListener()

        self.assertEqual(self.textbox.name, 'Hello World!')

        # TODO: grabFocus() doesn't currently grab app-wide focus, so we have
        # to mouseClick also.
        self.textbox.grabFocus()
        self.textbox.mouseClick()

        assert self.textbox.focused

        with listener.listenTo(self.textbox):
            self.textbox.typeText('1')

            sleep(config.SHORT_DELAY)
            self.assertEqual(self.textbox.name, 'Hello World!1')

        assert listener.containsEvent(self.textbox,
                                      'object:property-change:accessible-name',
                                      qty=1)

        with listener.listenTo(self.textbox):
            self.textbox.typeText('23')
            sleep(config.MEDIUM_DELAY)
            self.assertEqual(self.textbox.name, 'Hello World!123')

            backspace()
            sleep(config.MEDIUM_DELAY)
            self.assertEqual(self.textbox.name, 'Hello World!12')

            backspace()
            sleep(config.MEDIUM_DELAY)
            self.assertEqual(self.textbox.name, 'Hello World!1')

            backspace()
            sleep(config.MEDIUM_DELAY)
            self.assertEqual(self.textbox.name, 'Hello World!')

        assert listener.containsEvent(self.textbox,
                                      'object:property-change:accessible-name',
                                      qty=5)
Example #42
0
    def test_progressbar_value(self):
        value = self.progressbar._accessible.queryValue()

        self.assertEqual(value.minimumValue, 0)
        self.assertEqual(value.maximumValue, 100)
        self.assertEqual(value.minimumIncrement, 0)
        self.assertEqual(value.currentValue, 0)

        self.progressbar.value = 50
        self.assertEqual(self.progressbar.value, 0)

        listener = EventListener()
        with listener.listenTo(self.progressbar):
            self.textbox.text = '50'
            sleep(config.SHORT_DELAY)
            self.assertEqual(self.progressbar.value, 50)

        assert listener.containsEvent(self.progressbar,
                                      'object:property-change:accessible-value',
                                      qty=1)

        with listener.listenTo(self.progressbar):
            self.textbox.text = '100'
            sleep(config.SHORT_DELAY)
            self.assertEqual(self.progressbar.value, 100)

        assert listener.containsEvent(self.progressbar,
                                      'object:property-change:accessible-value',
                                      qty=1)

        with listener.listenTo(self.progressbar):
            self.textbox.text = '1000'
            sleep(config.SHORT_DELAY)
            self.assertEqual(self.progressbar.value, 100)

        assert listener.containsEvent(self.progressbar,
                                      'object:property-change:accessible-value',
                                      qty=0)
    def test_visible_data_changed_event(self):
        self.assertTrue(self.combobox.expandable)
        self.assertFalse(self.combobox.expanded)

        self.assertEqual(self.combobox_action.nActions, 1)
        self.assertEqual(self.combobox_action.getName(0), "expand or collapse")

        listener = EventListener()
        with listener.listenTo(self.combobox):
            self.combobox_action.doAction(0)
            self.assertTrue(self.combobox.expanded)

        assert listener.containsEvent(self.combobox, "object:visible-data-changed", qty=1)

        assert listener.containsEvent(self.combobox, "object:state-changed:expanded", qty=1)

        with listener.listenTo(self.combobox):
            self.combobox_action.doAction(0)
            self.assertFalse(self.combobox.expanded)

        assert listener.containsEvent(self.combobox, "object:visible-data-changed", qty=1)

        assert listener.containsEvent(self.combobox, "object:state-changed:expanded", qty=1)
Example #44
0
    def test_state_changed_event(self):
        self.assertFalse(self.checkbox.checked)

        self.assertEqual(self.checkbox_action.nActions, 1)
        self.assertEqual(self.checkbox_action.getName(0), 'click')

        listener = EventListener()
        with listener.listenTo(self.checkbox):
            self.checkbox_action.doAction(0)
            self.assertTrue(self.checkbox.checked)

        assert listener.containsEvent(self.checkbox,
                                      'object:state-changed:checked',
                                      qty=1)

        with listener.listenTo(self.checkbox):
            self.checkbox_action.doAction(0)
            self.assertFalse(self.checkbox.expanded)

        assert listener.containsEvent(self.checkbox,
                                      'object:state-changed:checked',
                                      qty=1)
Example #45
0
    def test_selection_events(self):
        """
        Verify that events are being properly raised.
        """
        listener = EventListener()

        child0 = self.list.getChildAtIndex(0)
        child1 = self.list.getChildAtIndex(1)

        with listener.listenTo(child0):
            self.assertTrue(self.list_selection.selectChild(0))

        assert listener.containsEvent(child0, 'object:state-changed:selected', 1)
        self.assertTrue(child0.selected)

        with listener.listenTo([child0, child1]):
            self.assertTrue(self.list_selection.selectChild(1))

        assert listener.containsEvent(child0, 'object:state-changed:selected', 1)
        self.assertFalse(child0.selected)

        assert listener.containsEvent(child1, 'object:state-changed:selected', 1)
        self.assertTrue(child1.selected)
Example #46
0
    def test_text_changed_event(self):
        t = self.textbox_text
        self.assertEqual('Foo', t.getText(0, -1))

        listener = EventListener()
        with listener.listenTo(self.textbox):
            self.addAFooButton.click()

            self.assertEqual('FooFoo\n', t.getText(0, -1))

        assert listener.containsEvent(self.textbox,
                                      'object:text-changed:insert',
                                      qty=1)

        assert listener.containsEvent(self.textbox,
                                      'object:property-change:accessible-name',
                                      qty=1)

        with listener.listenTo(self.textbox):
            self.textbox_edit.insertText(3, 'Bar', 3)

            self.assertEqual('FooBarFoo\n', t.getText(0, -1))

        assert listener.containsEvent(self.textbox,
                                      'object:text-changed:insert',
                                      qty=1)

        assert listener.containsEvent(self.textbox,
                                      'object:property-change:accessible-name',
                                      qty=1)

        with listener.listenTo(self.textbox):
            self.textbox_edit.deleteText(0, 3)

            self.assertEqual(t.getText(0, -1), 'BarFoo\n')

        assert listener.containsEvent(self.textbox,
                                      'object:text-changed:delete',
                                      qty=1)

        assert listener.containsEvent(self.textbox,
                                      'object:property-change:accessible-name',
                                      qty=1)
Example #47
0
    def test_listbox_events(self):
        listener = EventListener()

        apple = self.list.getChildAtIndex(0)
        blueberry = self.list.getChildAtIndex(1)

        with listener.listenTo([apple, blueberry]):
            self.assertTrue(self.list_selection.selectChild(0))

            self.assertTrue(apple.selected)
            self.assertFalse(blueberry.selected)

        assert listener.containsEvent(apple, 'object:state-changed:selected',
                                      1)
        assert listener.containsEvent(blueberry,
                                      'object:state-changed:selected', 0)

        with listener.listenTo([apple, blueberry]):
            self.assertTrue(self.list_selection.selectChild(1))

            self.assertFalse(apple.selected)
            self.assertTrue(blueberry.selected)

        assert listener.containsEvent(apple, 'object:state-changed:selected',
                                      1)
        assert listener.containsEvent(blueberry,
                                      'object:state-changed:selected', 1)

        with listener.listenTo([apple, blueberry]):
            self.assertTrue(self.list_selection.clearSelection())

            self.assertFalse(apple.selected)
            self.assertFalse(blueberry.selected)

        assert listener.containsEvent(apple, 'object:state-changed:selected',
                                      0)
        assert listener.containsEvent(blueberry,
                                      'object:state-changed:selected', 1)