def send_delete(widget): event = gtk.gdk.Event(gtk.gdk.KEY_PRESS) event.keyval = int(keysyms.Delete) event.hardware_keycode = 119 event.window = widget.window widget.event(event) refresh_gui(DELAY)
def testSubView(self): self.foo.view.button.clicked() refresh_gui() self.assertEqual(self.foo.bar, self.foo.bar.view) self.assertEqual(self.foo.bar.toplevel, self.foo.bar.win) # setting None as transient window should be an error self.assertRaises(TypeError, self.foo.bar.set_transient_for, None)
def testAddingAObjectList(self): global persons self.list.add_list(persons) refresh_gui() self.assertEqual(len(self.list), len(persons))
def send_backspace(widget): event = gtk.gdk.Event(gtk.gdk.KEY_PRESS) event.keyval = int(keysyms.BackSpace) event.hardware_keycode = 22 event.window = widget.window widget.event(event) refresh_gui(DELAY)
def testMovementKeysEmptyMask(self): entry = self.entry entry.set_mask('(00) 0000-0000') entry.emit('focus', gtk.DIR_TAB_FORWARD) refresh_gui(DELAY) self.assertEqual(entry.get_position(), 1) # Left move(entry, LEFT) self.assertEqual(entry.get_position(), 1) # Right move(entry, RIGHT) self.assertEqual(entry.get_position(), 2) move(entry, RIGHT) self.assertEqual(entry.get_position(), 3) move(entry, RIGHT) self.assertEqual(entry.get_position(), 5) move(entry, LEFT) self.assertEqual(entry.get_position(), 3) # Home entry.emit('move-cursor', gtk.MOVEMENT_DISPLAY_LINE_ENDS, -1, False) self.assertEqual(entry.get_position(), 1) # End entry.emit('move-cursor', gtk.MOVEMENT_DISPLAY_LINE_ENDS, 1, False) self.assertEqual(entry.get_position(), 14)
def testBackspace(self): if sys.platform == 'win32': raise SkipTest("Not supported on windows") entry = self.entry entry.set_mask('(00) 0000-0000') entry.grab_focus() insert_text(entry, '1234') self.assertEqual(entry.get_text(), '(12) 34 - ') send_backspace(entry) refresh_gui(DELAY) self.assertEqual(entry.get_text(), '(12) 3 - ') send_backspace(entry) refresh_gui(DELAY) self.assertEqual(entry.get_text(), '(12) - ') send_backspace(entry) refresh_gui(DELAY) self.assertEqual(entry.get_text(), '(1 ) - ') send_backspace(entry) refresh_gui(DELAY) self.assertEqual(entry.get_text(), '( ) - ') self.assertEqual(entry.get_position(), 1) send_backspace(entry) refresh_gui(DELAY) self.assertEqual(entry.get_text(), '( ) - ') self.assertEqual(entry.get_position(), 1)
def testAddingABunchOfInstances(self): global persons for person in persons: self.list.append(person) refresh_gui() self.assertEqual(len(self.list), len(persons))
def testSetMask(self): entry = self.entry entry.set_mask('00/00/0000') refresh_gui(DELAY) self.assertEqual(entry.get_text(), ' / / ') entry.set_mask('(00) 0000-0000') refresh_gui(DELAY) self.assertEqual(entry.get_text(), '( ) - ')
def testSubView(self): self.foo.view.button.clicked() refresh_gui() # Broken, not how we use controllers/views in Stoq return self.assertEqual(self.foo.bar, self.foo.bar.view) self.assertEqual(self.foo.bar.toplevel, self.foo.bar.win) # setting None as transient window should be an error self.assertRaises(TypeError, self.foo.bar.set_transient_for, None)
def testClearObjectList(self): global persons self.list.add_list(persons) refresh_gui() self.list.clear() self.assertEqual(len(self.list), 0)
def testOneColumn(self): # column's attribute can not contain spaces self.assertRaises(AttributeError, Column, 'test column') mylist = ObjectList(Column('test_column')) self.win.add(mylist) refresh_gui() self.assertEqual(1, len(mylist.get_columns()))
def testClickCounter(self): clickcounter = ClickCounter() refresh_gui() # one for the boys clickcounter.button.clicked() self.assertEqual(clickcounter.clicks, 1) # one for the girls clickcounter.button.clicked() self.assertEqual(clickcounter.clicks, 2)
def testClickCounterGlade(self): clickcounter = GladeClickCounter() refresh_gui() # one for the boys clickcounter.button.clicked() self.assertEqual(clickcounter.clicks, 1) # one for the girls clickcounter.button.clicked() self.assertEqual(clickcounter.clicks, 2)
def testColors(self): self.foo.view.button.clicked() refresh_gui() win = self.foo.bar.win win.realize() color = get_background(win) self.assertEqual(color, "#001100") label = self.foo.bar.label label.realize() color = get_foreground(label) self.assertEqual(color, "#CC99FF")
def testRemovingOneInstance(self): global persons self.list.add_list(persons) refresh_gui() # we are going to remove Kiko person = persons[2] self.list.remove(person) self.assertEqual(len(self.list), len(persons) - 1)
def testColors(self): self.foo.view.button.clicked() refresh_gui() # Broken, not how we use controllers/views in Stoq return win = self.foo.bar.win win.realize() color = get_background(win) self.assertEqual(color, "#001100") label = self.foo.bar.label label.realize() color = get_foreground(label) self.assertEqual(color, "#CC99FF")
def testInsertAndMovementKeys(self): entry = self.entry entry.set_mask('(00) 0000-0000') entry.grab_focus() insert_text(entry, '1') self.assertEqual(entry.get_text(), '(1 ) - ') self.assertEqual(entry.get_position(), 2) move(entry, LEFT) self.assertEqual(entry.get_position(), 1) move(entry, RIGHT) self.assertEqual(entry.get_position(), 2) # Can't enter an empty field move(entry, RIGHT) self.assertEqual(entry.get_position(), 2) insert_text(entry, '2') refresh_gui(DELAY) self.assertEqual(entry.get_text(), '(12) - ') # The position should be after the space in the mask self.assertEqual(entry.get_position(), 5) # Can't enter an empty field move(entry, RIGHT) self.assertEqual(entry.get_position(), 5) # But we can move to the space in the mask move(entry, LEFT) self.assertEqual(entry.get_position(), 4) # But trying to insert on it should insert after the space insert_text(entry, '9') self.assertEqual(entry.get_text(), '(12) 9 - ') self.assertEqual(entry.get_position(), 6) # Even after moving to the static field ')' move(entry, LEFT) move(entry, LEFT) move(entry, LEFT) self.assertEqual(entry.get_position(), 3) insert_text(entry, '8') self.assertEqual(entry.get_text(), '(12) 89 - ') self.assertEqual(entry.get_position(), 6) insert_text(entry, '345') self.assertEqual(entry.get_text(), '(12) 8345-9 ')
def send_key(widget, key): if isinstance(key, str) and key.isdigit(): key = 'KP_'+key elif isinstance(key, str) and key in SPECIAL_KEYS: key = SPECIAL_KEYS[key] keysym = getattr(keysyms, key) # Key press event = gtk.gdk.Event(gtk.gdk.KEY_PRESS) event.keyval = int(keysym) event.window = widget.window widget.event(event) refresh_gui(DELAY)
def send_key(widget, key): if isinstance(key, str) and key.isdigit(): key = 'KP_' + key elif isinstance(key, str) and key in SPECIAL_KEYS: key = SPECIAL_KEYS[key] keysym = getattr(keysyms, key) # Key press event = gtk.gdk.Event(gtk.gdk.KEY_PRESS) event.keyval = int(keysym) event.window = widget.window widget.event(event) refresh_gui(DELAY)
def testInserting(self): entry = self.entry entry.set_mask('00/00/0000') entry.grab_focus() insert_text(entry, '12345678') self.assertEqual(entry.get_text(), '12/34/5678') entry.set_text('') insert_text(entry, '1/2/3333') self.assertEqual(entry.get_text(), '1 /2 /3333') entry.set_mask('(00) 0000-0000') entry.emit('focus', gtk.DIR_TAB_FORWARD) refresh_gui(DELAY) insert_text(entry, '1234567890') self.assertEqual(entry.get_text(), '(12) 3456-7890')
def testAddingOneInstance(self): # we should have two columns now self.assertEqual(2, len(self.list.get_columns())) person = Person('henrique', 21) self.list.append(person) refresh_gui() # usually you don't use the model directly, but tests are all about # breaking APIs, right? self.assertEqual(self.list[0], person) self.assertEqual(self.list[0].name, 'henrique') self.assertEqual(self.list[0].age, 21) # we still have to columns, right? self.assertEqual(2, len(self.list.get_columns()))
def testUpdatingOneInstance(self): global persons self.list.add_list(persons) refresh_gui() persons[0].age = 29 self.list.update(persons[0]) refresh_gui() # Do we have the same number of instances that we had before ? self.assertEqual(len(self.list), len(persons)) # Trying to find our updated instance in the list self.assertEqual(self.list[0].age, 29) # let's be evil new_person = Person('Nando', 32) self.assertRaises(ValueError, self.list.update, new_person)
def testInserting(self): entry = self.entry entry.set_mask('00/00/0000') entry.grab_focus() insert_text(entry, '12345678') self.assertEqual(entry.get_text(), '12/34/5678') entry.set_text('') insert_text(entry, '12/34/5678') self.assertEqual(entry.get_text(), '12/34/5678') entry.set_text('') insert_text(entry, '1234') self.assertEqual(entry.get_text(), '12/34/ ') entry.set_mask('(00) 0000-0000') entry.emit('focus', gtk.DIR_TAB_FORWARD) refresh_gui(DELAY) insert_text(entry, '1234567890') self.assertEqual(entry.get_text(), '(12) 3456-7890')
def testSetText(self): entry = self.entry entry.set_mask('00/00/0000') refresh_gui(DELAY) entry.set_text('12/34/5678') refresh_gui(DELAY) self.assertEqual(entry.get_text(), '12/34/5678') entry.set_mask('(00) 0000-0000') refresh_gui(DELAY) entry.set_text('(11) 1234-5678') refresh_gui(DELAY) self.assertEqual(entry.get_text(), '(11) 1234-5678') entry.set_text('') self.assertEqual(entry.get_text(), entry.get_empty_mask())
def testDeleteSelection(self): if 1: return entry = self.entry entry.set_mask('(00) 0000-0000') entry.grab_focus() insert_text(entry, '1') self.assertEqual(entry.get_text(), '(1 ) - ') select(entry, 2, 0) send_delete(entry) self.assertEqual(entry.get_position(), 1) insert_text(entry, '1234') self.assertEqual(entry.get_text(), '(12) 34 - ') select(entry, 2, 0) refresh_gui(2) send_delete(entry) refresh_gui(2) self.assertEqual(entry.get_position(), 1)
def testButtons(self): f = Foo() refresh_gui() f.foo.clicked() refresh_gui() self.assertEqual(f.x, "FOO in Foo") f.bar.clicked() refresh_gui() self.assertEqual(f.y, "BAR in B")
def testMovementKeysEmptyMask(self): entry = self.entry entry.set_mask('(00) 0000-0000') entry.emit('focus', gtk.DIR_TAB_FORWARD) refresh_gui(DELAY) self.assertEqual(entry.get_position(), 1) # Left move(entry, LEFT) self.assertEqual(entry.get_position(), 1) # Right move(entry, RIGHT) self.assertEqual(entry.get_position(), 1) # Home entry.emit('move-cursor', gtk.MOVEMENT_DISPLAY_LINE_ENDS, -1, False) self.assertEqual(entry.get_position(), 1) # End entry.emit('move-cursor', gtk.MOVEMENT_DISPLAY_LINE_ENDS, 1, False) self.assertEqual(entry.get_position(), 1)
def testDelete(self): if sys.platform == 'win32': raise SkipTest("Not supported on windows") entry = self.entry entry.set_mask('(00) 0000-0000') entry.grab_focus() insert_text(entry, '12345678') self.assertEqual(entry.get_text(), '(12) 3456-78 ') # Home entry.emit('move-cursor', gtk.MOVEMENT_DISPLAY_LINE_ENDS, -1, False) self.assertEqual(entry.get_position(), 1) send_delete(entry) refresh_gui(DELAY) self.assertEqual(entry.get_text(), '(23) 4567-8 ') send_delete(entry) refresh_gui(DELAY) self.assertEqual(entry.get_text(), '(34) 5678- ') move(entry, RIGHT) move(entry, RIGHT) move(entry, RIGHT) move(entry, RIGHT) self.assertEqual(entry.get_position(), 5) send_delete(entry) refresh_gui(DELAY) self.assertEqual(entry.get_text(), '(34) 678 - ') send_delete(entry) refresh_gui(DELAY) self.assertEqual(entry.get_text(), '(34) 78 - ')
def testDelete(self): if 1: return entry = self.entry entry.set_mask('(00) 0000-0000') entry.grab_focus() insert_text(entry, '12345678') self.assertEqual(entry.get_text(), '(12) 3456-78 ') # Home entry.emit('move-cursor', gtk.MOVEMENT_DISPLAY_LINE_ENDS, -1, False) self.assertEqual(entry.get_position(), 1) send_delete(entry) refresh_gui(DELAY) self.assertEqual(entry.get_text(), '(2 ) 3456-78 ') send_delete(entry) refresh_gui(DELAY) self.assertEqual(entry.get_text(), '( ) 3456-78 ') move(entry, RIGHT) move(entry, RIGHT) move(entry, RIGHT) move(entry, RIGHT) self.assertEqual(entry.get_position(), 6) send_delete(entry) refresh_gui(DELAY) self.assertEqual(entry.get_text(), '( ) 356 -78 ') send_delete(entry) refresh_gui(DELAY) self.assertEqual(entry.get_text(), '( ) 36 -78 ')
def testFooButton(self): self.foo.view.foo__button.clicked() refresh_gui() # Broken, not how we use controllers/views in Stoq return self.assertEqual(self.foo.view.label.get_text(), "Good click!")
def setUp(self): self.win = gtk.Window() self.win.set_default_size(400, 400) self.list = ObjectList([Column('name'), Column('age')]) self.win.add(self.list) refresh_gui()
def testEmptyObjectList(self): mylist = ObjectList() self.win.add(mylist) refresh_gui()
def setUp(self): self.view = FooView() self.foo = FooController(self.view) refresh_gui()
def insert_text(widget, text): for i in text: send_key(widget, i) refresh_gui(DELAY)
def testBackspace(self): if 1: return entry = self.entry entry.set_mask('(00) 0000-0000') entry.grab_focus() insert_text(entry, '1234') refresh_gui(DELAY) self.assertEqual(entry.get_text(), '(12) 34 - ') send_backspace(entry) refresh_gui(DELAY) self.assertEqual(entry.get_text(), '(12) 3 - ') send_backspace(entry) refresh_gui(DELAY) self.assertEqual(entry.get_text(), '(12) - ') send_backspace(entry) refresh_gui(DELAY) self.assertEqual(entry.get_text(), '(1 ) - ') send_backspace(entry) refresh_gui(DELAY) self.assertEqual(entry.get_text(), '( ) - ') self.assertEqual(entry.get_position(), 1) send_backspace(entry) refresh_gui(DELAY) self.assertEqual(entry.get_text(), '( ) - ') self.assertEqual(entry.get_position(), 1)
def testButtons(self): action_delegate = ActionDelegate() refresh_gui() action_delegate.New.activate() refresh_gui() self.assertEqual(action_delegate.new_activated, True)