def test_delegate(self): model = PyListModel([None]) def set_item(v: dict): model.setItemData(model.index(0), v) def get_style_option() -> QStyleOptionViewItem: opt = QStyleOptionViewItem() delegate.initStyleOption(opt, model.index(0)) return opt set_item({Qt.EditRole: Categorical("a", (), ())}) delegate = VariableEditDelegate() opt = get_style_option() self.assertEqual(opt.text, "a") self.assertFalse(opt.font.italic()) set_item({TransformRole: [Rename("b")]}) opt = get_style_option() self.assertEqual(opt.text, "a \N{RIGHTWARDS ARROW} b") self.assertTrue(opt.font.italic()) set_item({TransformRole: [AsString()]}) opt = get_style_option() self.assertIn("reinterpreted", opt.text) self.assertTrue(opt.font.italic())
def test_reinterpret_string(self): table = self.data_str domain = table.domain tvars = [] for v in domain.metas: for i, tr in enumerate( [AsContinuous(), AsCategorical(), AsTime(), AsString()]): vtr = apply_reinterpret(v, tr, table_column_data( table, v)).renamed(f"{v.name}_{i}") if isinstance(tr, AsTime): strp = StrpTime("Detect automatically", None, 1, 1) vtr = apply_transform_var(vtr, [strp]) tvars.append(vtr) tdomain = Domain([], metas=tvars) ttable = table.transform(tdomain) assert_array_nanequal( ttable.metas, np.array([ [0.1, 0., np.nan, "0.1", 2010., 0., 1262304000., "2010"], [1.0, 1., np.nan, "1.0", 2020., 1., 1577836800., "2020"], ], dtype=object))
def test_reinterpret_string(self): table = self.data_str domain = table.domain tvars = [] for v in domain.metas: for tr in [AsContinuous(), AsCategorical(), AsTime(), AsString()]: tr = apply_reinterpret(v, tr, table_column_data(table, v)) tvars.append(tr) tdomain = Domain([], metas=tvars) ttable = table.transform(tdomain) assert_array_nanequal( ttable.metas, np.array([ [0.1, 0., np.nan, "0.1", 2010., 0., 1262304000., "2010"], [1.0, 1., np.nan, "1.0", 2020., 1., 1577836800., "2020"], ], dtype=object))
def test_as_string(self): table = self.data domain = table.domain tr = AsString() dtr = [] for v in domain.variables: vtr = apply_reinterpret(v, tr, table_column_data(table, v)) dtr.append(vtr) ttable = table.transform(Domain([], [], dtr)) assert_array_equal( ttable.metas, np.array([ ["a", "2", "0.25", "00:03:00"], ["b", "1", "1.25", "00:06:00"], ["c", "0", "0.2", "00:12:00"], ["b", "0", "0.0", "00:00:00"], ], dtype=object))
def test_restore(self): iris = self.iris viris = ("Categorical", ("iris", ("Iris-setosa", "Iris-versicolor", "Iris-virginica"), ())) w = self.widget def restore(state): w._domain_change_store = state w._restore() model = w.variables_model self.send_signal(w.Inputs.data, iris, widget=w) restore({viris: [("Rename", ("Z", ))]}) tr = model.data(model.index(4), TransformRole) self.assertEqual(tr, [Rename("Z")]) restore({viris: [("AsString", ()), ("Rename", ("Z", ))]}) tr = model.data(model.index(4), TransformRole) self.assertEqual(tr, [AsString(), Rename("Z")])
def test_delegate(self): model = VariableListModel([None, None]) def set_item(row: int, v: dict): model.setItemData(model.index(row), v) def get_style_option(row: int) -> QStyleOptionViewItem: opt = QStyleOptionViewItem() delegate.initStyleOption(opt, model.index(row)) return opt set_item(0, {Qt.EditRole: Categorical("a", (), (), False)}) delegate = VariableEditDelegate() opt = get_style_option(0) self.assertEqual(opt.text, "a") self.assertFalse(opt.font.italic()) set_item(0, {TransformRole: [Rename("b")]}) opt = get_style_option(0) self.assertEqual(opt.text, "a \N{RIGHTWARDS ARROW} b") self.assertTrue(opt.font.italic()) set_item(0, {TransformRole: [AsString()]}) opt = get_style_option(0) self.assertIn("reinterpreted", opt.text) self.assertTrue(opt.font.italic()) set_item(1, { Qt.EditRole: String("b", (), False), TransformRole: [Rename("a")] }) opt = get_style_option(1) self.assertEqual(opt.palette.color(QPalette.Text), QColor(Qt.red)) view = QListView() with patch.object(QToolTip, "showText") as p: delegate.helpEvent( QHelpEvent(QHelpEvent.ToolTip, QPoint(0, 0), QPoint(0, 0)), view, opt, model.index(1), ) p.assert_called_once()