def test_sort_collectionsmodel(): coll = [1, 3, 2] cm = CollectionsModel(None, coll) assert cm.rowCount() == 3 assert cm.columnCount() == 4 cm.sort(0) # sort by index assert data_table(cm, 3, 4) == [['0', '1', '2'], ['int', 'int', 'int'], ['1', '1', '1'], ['1', '3', '2']] cm.sort(3) # sort by value assert data_table(cm, 3, 4) == [['0', '2', '1'], ['int', 'int', 'int'], ['1', '1', '1'], ['1', '2', '3']] coll = [[1, 2], 3] cm = CollectionsModel(None, coll) assert cm.rowCount() == 2 assert cm.columnCount() == 4 cm.sort(1) # sort by type assert data_table(cm, 2, 4) == [['1', '0'], ['int', 'list'], ['1', '2'], ['3', '[1, 2]']] cm.sort(2) # sort by size assert data_table(cm, 2, 4) == [['1', '0'], ['int', 'list'], ['1', '2'], ['3', '[1, 2]']]
def test_sort_collectionsmodel_with_many_rows(): coll = list(range(2 * LARGE_NROWS)) cm = CollectionsModel(None, coll) assert cm.rowCount() == cm.rows_loaded == ROWS_TO_LOAD assert cm.columnCount() == 4 cm.sort(1) # This was causing an issue (#5232) cm.fetchMore() assert cm.rowCount() == 2 * ROWS_TO_LOAD for _ in range(3): cm.fetchMore() assert cm.rowCount() == len(coll)
def test_sort_collectionsmodel_with_many_rows(): coll = list(range(2*LARGE_NROWS)) cm = CollectionsModel(None, coll) assert cm.rowCount() == cm.rows_loaded == ROWS_TO_LOAD assert cm.columnCount() == 4 cm.sort(1) # This was causing an issue (#5232) cm.fetchMore() assert cm.rowCount() == 2 * ROWS_TO_LOAD for _ in range(3): cm.fetchMore() assert cm.rowCount() == len(coll)
def test_notimplementederror_multiindex(): """ Test that the NotImplementedError when scrolling a MultiIndex is handled. Regression test for issue #6284 . """ time_deltas = [pandas.Timedelta(minutes=minute) for minute in range(5, 35, 5)] time_delta_multiindex = pandas.MultiIndex.from_product([[0, 1, 2, 3, 4], time_deltas]) col_model = CollectionsModel(None, time_delta_multiindex) assert col_model.rowCount() == col_model.rows_loaded == ROWS_TO_LOAD assert col_model.columnCount() == 4 col_model.fetchMore() assert col_model.rowCount() == 2 * ROWS_TO_LOAD for _ in range(3): col_model.fetchMore() assert col_model.rowCount() == 5 * ROWS_TO_LOAD
def test_collectionsmodel_with_two_ints(): coll = {'x': 1, 'y': 2} cm = CollectionsModel(None, coll) assert cm.rowCount() == 2 assert cm.columnCount() == 4 # dict is unordered, so first row might be x or y assert data(cm, 0, 0) in {'x', 'y'} if data(cm, 0, 0) == 'x': row_with_x = 0 row_with_y = 1 else: row_with_x = 1 row_with_y = 0 assert data(cm, row_with_x, 1) == 'int' assert data(cm, row_with_x, 2) == '1' assert data(cm, row_with_x, 3) == '1' assert data(cm, row_with_y, 0) == 'y' assert data(cm, row_with_y, 1) == 'int' assert data(cm, row_with_y, 2) == '1' assert data(cm, row_with_y, 3) == '2'