Skip to content

Commit

Permalink
itemmodels.AbstractSortTableModel: Fix mapFromSourceRows
Browse files Browse the repository at this point in the history
  • Loading branch information
janezd committed Nov 2, 2017
1 parent 9225e8d commit 4ccaaec
Show file tree
Hide file tree
Showing 2 changed files with 24 additions and 1 deletion.
5 changes: 4 additions & 1 deletion Orange/widgets/utils/itemmodels.py
Original file line number Diff line number Diff line change
Expand Up @@ -127,7 +127,10 @@ def mapToSourceRows(self, rows):
Source rows matching input rows. If they are the same,
simply input `rows` is returned.
"""
if self.__sortInd is not None:
# self.__sortInd[rows] fails if `rows` is an empty list or array
if self.__sortInd is not None \
and (isinstance(rows, (int, type(Ellipsis)))
or len(rows)):
new_rows = self.__sortInd[rows]
if rows is Ellipsis:
new_rows.setflags(write=False)
Expand Down
20 changes: 20 additions & 0 deletions Orange/widgets/utils/tests/test_itemmodels.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,8 @@

from unittest import TestCase

import numpy as np

from AnyQt.QtCore import Qt

from Orange.data import Domain, ContinuousVariable, DiscreteVariable
Expand Down Expand Up @@ -133,6 +135,24 @@ def test_sorting(self):
self.model.sort(1, Qt.DescendingOrder)
self.assertSequenceEqual(self.model.mapToSourceRows(...).tolist(), [0, 1])

def test_mapToSourceRows(self):
self.model.sort(1, Qt.AscendingOrder)
self.assertSequenceEqual(
self.model.mapToSourceRows(...).tolist(),
[1, 0])
self.assertEqual(
self.model.mapToSourceRows(1).tolist(),
0)
self.assertSequenceEqual(
self.model.mapToSourceRows([1, 0]).tolist(),
[0, 1])
self.assertSequenceEqual(
self.model.mapToSourceRows([]),
[])
self.assertSequenceEqual(
self.model.mapToSourceRows(np.array([], dtype=int)).tolist(),
[])


class TestPyListModel(TestCase):
@classmethod
Expand Down

0 comments on commit 4ccaaec

Please sign in to comment.