def test_step_space_continuous(self): """ Test step """ w = self.widget event = QKeyEvent(QEvent.KeyPress, Qt.Key_Space, Qt.KeyboardModifiers(0)) # with linear regression self.send_signal(w.Inputs.data, Table('housing')[::100]) # test theta set after step if not set yet w.keyPressEvent(event) self.assertIsNotNone(w.learner.theta) # check theta is changing when step old_theta = np.copy(w.learner.theta) w.keyPressEvent(event) self.assertNotEqual(sum(old_theta - w.learner.theta), 0) old_theta = np.copy(w.learner.theta) # to cover else example and check not crashes event = QKeyEvent(QEvent.KeyPress, Qt.Key_Q, Qt.KeyboardModifiers(0)) w.keyPressEvent(event) # check nothing changes assert_array_equal(old_theta, w.learner.theta)
def _select_data(self): self.widget.attr_x, self.widget.attr_y = self.data.domain[:2] area = self.widget.areas[0] self.widget.select_area(area, QMouseEvent( QEvent.MouseButtonPress, QPoint(), Qt.LeftButton, Qt.LeftButton, Qt.KeyboardModifiers())) return [0, 4, 6, 7, 11, 17, 19, 21, 22, 24, 26, 39, 40, 43, 44, 46]
def _select_data(self): self.widget.select_area( 1, QMouseEvent( QEvent.MouseButtonPress, QPoint(), Qt.LeftButton, Qt.LeftButton, Qt.KeyboardModifiers(), ), ) return [2, 3, 9, 23, 29, 30, 34, 35, 37, 42, 47, 49]
def test_selection_setting(self): widget = self.widget data = Table("iris.tab") self.send_signal(widget.Inputs.data, data) widget.select_area( 1, QMouseEvent(QEvent.MouseButtonPress, QPoint(), Qt.LeftButton, Qt.LeftButton, Qt.KeyboardModifiers())) # Changing the data must reset the selection self.send_signal(widget.Inputs.data, Table("titanic")) self.assertFalse(bool(widget.selection)) self.assertIsNone(self.get_output(widget.Outputs.selected_data)) self.send_signal(widget.Inputs.data, data) self.assertFalse(bool(widget.selection)) self.assertIsNone(self.get_output(widget.Outputs.selected_data)) widget.select_area( 1, QMouseEvent(QEvent.MouseButtonPress, QPoint(), Qt.LeftButton, Qt.LeftButton, Qt.KeyboardModifiers())) settings = self.widget.settingsHandler.pack_data(self.widget) # Setting data to None must reset the selection self.send_signal(widget.Inputs.data, None) self.assertFalse(bool(widget.selection)) self.assertIsNone(self.get_output(widget.Outputs.selected_data)) self.send_signal(widget.Inputs.data, data) self.assertFalse(bool(widget.selection)) self.assertIsNone(self.get_output(widget.Outputs.selected_data)) w = self.create_widget(OWMosaicDisplay, stored_settings=settings) self.assertFalse(bool(widget.selection)) self.send_signal(w.Inputs.data, data, widget=w) self.assertEqual(w.selection, {1}) self.assertIsNotNone(self.get_output(w.Outputs.selected_data, widget=w))
def keySequenceClicks(widget_, keySequence, extraModifiers=Qt.NoModifier): """Use QTest.keyClick to send a QKeySequence to a widget.""" # pylint: disable=line-too-long # This is based on a simplified version of http://stackoverflow.com/questions/14034209/convert-string-representation-of-keycode-to-qtkey-or-any-int-and-back. I added code to handle the case in which the resulting key contains a modifier (for example, Shift+Home). When I execute QTest.keyClick(widget, keyWithModifier), I get the error "ASSERT: "false" in file .\qasciikey.cpp, line 495". To fix this, the following code splits the key into a key and its modifier. # Bitmask for all modifier keys. modifierMask = int(Qt.ShiftModifier | Qt.ControlModifier | Qt.AltModifier | Qt.MetaModifier | Qt.KeypadModifier) ks = QKeySequence(keySequence) # For now, we don't handle a QKeySequence("Ctrl") or any other modified by itself. assert ks.count() > 0 for _, key in enumerate(ks): modifiers = Qt.KeyboardModifiers((key & modifierMask) | extraModifiers) key = key & ~modifierMask QTest.keyClick(widget_, key, modifiers, 10)
def test_step_space_discrete(self): """ Test step """ w = self.widget event = QKeyEvent(QEvent.KeyPress, Qt.Key_Space, Qt.KeyboardModifiers(0)) # test function not crashes when no data and learner w.keyPressEvent(event) self.send_signal(w.Inputs.data, Table('iris')[::15]) # test theta set after step if not set yet w.keyPressEvent(event) self.assertIsNotNone(w.learner.theta) # check theta is changing when step old_theta = np.copy(w.learner.theta) w.keyPressEvent(event) self.assertNotEqual(sum(old_theta - w.learner.theta), 0)