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)
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)
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_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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)