def test_apply(self): entry = ProxyEntry() entry.data_type = currency entry.set_text('150') calc = CalculatorPopup(entry, CalculatorPopup.MODE_SUB) # calc.popup will not work here, so call _update_ui directly calc._update_ui() calc._entry.set_text('10%') event = gtk.gdk.Event(gtk.gdk.KEY_PRESS) event.keyval = gtk.keysyms.Return event.window = gtk.gdk.get_default_root_window() calc.emit('key-press-event', event) calc.emit('key-press-event', event) self.assertEqual(entry.read(), 135)
def test_apply(self): entry = ProxyEntry() entry.data_type = currency entry.set_text('150') calc = CalculatorPopup(entry, CalculatorPopup.MODE_SUB) # calc.popup will not work here, so call validate_popup directly calc.validate_popup() calc._entry.set_text('10%') event = Gdk.Event.new(Gdk.EventType.KEY_PRESS) event.keyval = Gdk.KEY_Return event.window = Gdk.get_default_root_window() calc.emit('key-press-event', event) calc.emit('key-press-event', event) self.assertEqual(entry.read(), 135)
def test_popdown(self): entry = ProxyEntry() entry.data_type = currency entry.set_text('150') calc = CalculatorPopup(entry, CalculatorPopup.MODE_SUB) with contextlib.nested( mock.patch.object(calc, '_maybe_apply_new_value'), mock.patch.object(calc, 'popdown')) as (manv, popdown): # Those keys should try to apply the value for keyval in [gtk.keysyms.Return, gtk.keysyms.KP_Enter, gtk.keysyms.Tab]: event = gtk.gdk.Event(gtk.gdk.KEY_PRESS) event.keyval = keyval event.window = gtk.gdk.get_default_root_window() calc.emit('key-press-event', event) self.assertEqual(manv.call_count, 1) self.assertEqual(popdown.call_count, 0) manv.reset_mock() popdown.reset_mock() event = gtk.gdk.Event(gtk.gdk.KEY_PRESS) # Escape should popdown the popup event.keyval = gtk.keysyms.Escape event.window = gtk.gdk.get_default_root_window() calc.emit('key-press-event', event) self.assertEqual(popdown.call_count, 1) self.assertEqual(manv.call_count, 0) manv.reset_mock() popdown.reset_mock() event = gtk.gdk.Event(gtk.gdk.KEY_PRESS) # Any other should not do anything event.keyval = gtk.keysyms.A event.window = gtk.gdk.get_default_root_window() calc.emit('key-press-event', event) self.assertEqual(manv.call_count, 0) self.assertEqual(popdown.call_count, 0)
def test_popdown(self): entry = ProxyEntry() entry.data_type = currency entry.set_text('150') calc = CalculatorPopup(entry, CalculatorPopup.MODE_SUB) with contextlib.nested( mock.patch.object(calc, '_maybe_apply_new_value'), mock.patch.object(calc, 'popdown')) as (manv, popdown): # Those keys should try to apply the value for keyval in [ gtk.keysyms.Return, gtk.keysyms.KP_Enter, gtk.keysyms.Tab ]: event = gtk.gdk.Event(gtk.gdk.KEY_PRESS) event.keyval = keyval event.window = gtk.gdk.get_default_root_window() calc.emit('key-press-event', event) self.assertEqual(manv.call_count, 1) self.assertEqual(popdown.call_count, 0) manv.reset_mock() popdown.reset_mock() event = gtk.gdk.Event(gtk.gdk.KEY_PRESS) # Escape should popdown the popup event.keyval = gtk.keysyms.Escape event.window = gtk.gdk.get_default_root_window() calc.emit('key-press-event', event) self.assertEqual(popdown.call_count, 1) self.assertEqual(manv.call_count, 0) manv.reset_mock() popdown.reset_mock() event = gtk.gdk.Event(gtk.gdk.KEY_PRESS) # Any other should not do anything event.keyval = gtk.keysyms.A event.window = gtk.gdk.get_default_root_window() calc.emit('key-press-event', event) self.assertEqual(manv.call_count, 0) self.assertEqual(popdown.call_count, 0)