def test_itemData(self): model = PyListModel([1, 2, 3, 4]) mi = model.index(2) model.setItemData(mi, {Qt.ToolTipRole: "foo"}) self.assertEqual(model.itemData(mi)[Qt.ToolTipRole], "foo") self.assertEqual(model.itemData(model.index(5)), {})
def test_set_data(self): model = PyListModel([1, 2, 3, 4]) model.setData(model.index(0), None, Qt.EditRole) self.assertIs(model.data(model.index(0), Qt.EditRole), None) model.setData(model.index(1), "This is two", Qt.ToolTipRole) self.assertEqual(model.data(model.index(1), Qt.ToolTipRole), "This is two",) self.assertFalse(model.setData(model.index(5), "foo"))
def test_dropMimeData(self): model = PyListModel([1, 2]) model.setData(model.index(0), "a", Qt.UserRole) mime = model.mimeData([model.index(0)]) self.assertTrue( model.dropMimeData(mime, Qt.CopyAction, 2, -1, model.index(-1, -1)) ) self.assertEqual(len(model), 3) self.assertEqual( model.itemData(model.index(2)), {Qt.DisplayRole: 1, Qt.EditRole: 1, Qt.UserRole: "a"} )
def test_moveRows(self): model = PyListModel([1, 2, 3, 4]) for i in range(model.rowCount()): model.setData(model.index(i), str(i + 1), Qt.UserRole) def modeldata(role): return [model.index(i).data(role) for i in range(model.rowCount())] def userdata(): return modeldata(Qt.UserRole) def editdata(): return modeldata(Qt.EditRole) r = model.moveRows(QModelIndex(), 1, 1, QModelIndex(), 0) self.assertIs(r, True) self.assertSequenceEqual(editdata(), [2, 1, 3, 4]) self.assertSequenceEqual(userdata(), ["2", "1", "3", "4"]) r = model.moveRows(QModelIndex(), 1, 2, QModelIndex(), 4) self.assertIs(r, True) self.assertSequenceEqual(editdata(), [2, 4, 1, 3]) self.assertSequenceEqual(userdata(), ["2", "4", "1", "3"]) r = model.moveRows(QModelIndex(), 3, 1, QModelIndex(), 0) self.assertIs(r, True) self.assertSequenceEqual(editdata(), [3, 2, 4, 1]) self.assertSequenceEqual(userdata(), ["3", "2", "4", "1"]) r = model.moveRows(QModelIndex(), 2, 1, QModelIndex(), 2) self.assertIs(r, False) model = PyListModel([]) r = model.moveRows(QModelIndex(), 0, 0, QModelIndex(), 0) self.assertIs(r, False)
def test_insert_delete_rows(self): model = PyListModel([1, 2, 3, 4]) success = model.insertRows(0, 3) self.assertIs(success, True) self.assertSequenceEqual(model, [None, None, None, 1, 2, 3, 4]) success = model.removeRows(3, 4) self.assertIs(success, True) self.assertSequenceEqual(model, [None, None, None]) self.assertFalse(model.insertRows(0, 1, model.index(0))) self.assertFalse(model.removeRows(0, 1, model.index(0)))
def test_mimeData(self): model = PyListModel([1, 2]) model._other_data[:] = [{Qt.UserRole: "a"}, {}] mime = model.mimeData([model.index(0), model.index(1)]) self.assertTrue(mime.hasFormat(PyListModel.MIME_TYPE))