1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74
|
# (C) Copyright 2005-2023 Enthought, Inc., Austin, TX
# All rights reserved.
#
# This software is provided without warranty under the terms of the BSD
# license included in LICENSE.txt and may be redistributed only under
# the conditions described in the aforementioned license. The license
# is also available online at http://www.enthought.com/licenses/BSD.txt
#
# Thanks for using Enthought open source!
from unittest import TestCase
from traits.testing.optional_dependencies import numpy as np, requires_numpy
from pyface.qt.QtCore import QMimeData
# This import results in an error without numpy installed
# see enthought/pyface#742
if np is not None:
from pyface.data_view.data_models.api import ArrayDataModel
from pyface.data_view.exporters.row_exporter import RowExporter
from pyface.data_view.data_formats import table_format
from pyface.data_view.value_types.api import FloatValue
from pyface.ui.qt.data_view.data_view_item_model import DataViewItemModel
@requires_numpy
class TestDataViewItemModel(TestCase):
def setUp(self):
self.item_model = self._create_item_model()
def _create_item_model(self):
self.data = np.arange(120.0).reshape(4, 5, 6)
self.model = ArrayDataModel(data=self.data, value_type=FloatValue())
return DataViewItemModel(
model=self.model,
selection_type='row',
exporters=[],
)
def _make_indexes(self, indices):
return [
self.item_model._to_model_index(row, column)
for row, column in indices
]
def test_mimeData(self):
self.item_model.exporters = [RowExporter(format=table_format)]
indexes = self._make_indexes([
((0, row), (column,))
for column in range(2, 5)
for row in range(2, 4)
])
mime_data = self.item_model.mimeData(indexes)
self.assertIsInstance(mime_data, QMimeData)
self.assertTrue(mime_data.hasFormat('text/plain'))
raw_data = mime_data.data('text/plain').data()
data = table_format.deserialize(bytes(raw_data))
np.testing.assert_array_equal(
data,
[
['12', '13', '14', '15', '16', '17'],
['18', '19', '20', '21', '22', '23'],
]
)
def test_mimeData_empty(self):
mime_data = self.item_model.mimeData([])
self.assertIsInstance(mime_data, QMimeData)
# exact contents depend on Qt, so won't test more deeply
|