Ejemplo n.º 1
0
    def test_discrete_editor(self):
        w = DiscreteVariableEditor()
        self.assertEqual(w.get_data(), (None, []))

        v = Categorical("C", ("a", "b", "c"), None, (("A", "1"), ("B", "b")))
        w.set_data(v)

        self.assertEqual(w.name_edit.text(), v.name)
        self.assertEqual(w.labels_model.get_dict(), dict(v.annotations))
        self.assertEqual(w.get_data(), (v, []))
        w.set_data(None)
        self.assertEqual(w.name_edit.text(), "")
        self.assertEqual(w.labels_model.get_dict(), {})
        self.assertEqual(w.get_data(), (None, []))
        mapping = [("c", "C"), ("a", "A"), ("b", None), (None, "b")]
        w.set_data(v, [CategoriesMapping(mapping)])
        w.grab()  # run delegate paint method
        self.assertEqual(w.get_data(), (v, [CategoriesMapping(mapping)]))

        # test selection/deselection in the view
        w.set_data(v)
        view = w.values_edit
        model = view.model()
        assert model.rowCount()
        sel_model = view.selectionModel()
        model = sel_model.model()
        sel_model.select(model.index(0, 0), QItemSelectionModel.Select)
        sel_model.select(model.index(0, 0), QItemSelectionModel.Deselect)
Ejemplo n.º 2
0
    def test_discrete_editor_merge_action(self):
        """
        This function check whether results of dialog have effect on
        merging the attributes. The dialog itself is tested separately.
        """
        w = DiscreteVariableEditor()
        v = Categorical("C", ("a", "b", "c"), (("A", "1"), ("B", "b")), False)

        w.set_data_categorical(
            v, [0, 0, 0, 1, 1, 2],
            [CategoriesMapping([
                ("a", "AA"),
                ("b", "BB"),
                ("c", "CC"),
            ])])

        view = w.values_edit
        model = view.model()
        selmodel = view.selectionModel()  # type: QItemSelectionModel
        selmodel.select(QItemSelection(model.index(0, 0), model.index(1, 0)),
                        QItemSelectionModel.ClearAndSelect)
        spy = QSignalSpy(w.variable_changed)
        w.merge_items.trigger()

        self.assertEqual(model.index(0, 0).data(Qt.EditRole), "other")
        self.assertEqual(model.index(1, 0).data(Qt.EditRole), "other")
        self.assertEqual(model.index(2, 0).data(Qt.EditRole), "CC")

        self.assertSequenceEqual(list(spy), [[]],
                                 'variable_changed should emit exactly once')
Ejemplo n.º 3
0
 def test_discrete_reorder(self):
     D = DiscreteVariable("D", values=("2", "3", "1", "0"))
     DD = apply_transform_var(D, [
         CategoriesMapping((("0", "0"), ("1", "1"), ("2", "2"), ("3", "3")))
     ])
     self.assertSequenceEqual(DD.values, ["0", "1", "2", "3"])
     self._assertLookupEquals(DD.compute_value,
                              Lookup(D, np.array([2, 3, 1, 0])))
Ejemplo n.º 4
0
 def test_categories_mapping(self):
     var = Categorical("C", ("a", "b", "c"), ())
     tr = CategoriesMapping(
         (("a", "aa"), ("b", None), ("c", "cc"), (None, "ee")), )
     r = report_transform(var, [tr])
     self.assertIn("a", r)
     self.assertIn("aa", r)
     self.assertIn("b", r)
     self.assertIn("<s>", r)
Ejemplo n.º 5
0
    def test_discrete_editor(self):
        w = DiscreteVariableEditor()
        self.assertEqual(w.get_data(), (None, []))

        v = Categorical("C", ("a", "b", "c"), (("A", "1"), ("B", "b")), False)
        values = [0, 0, 0, 1, 1, 2]
        w.set_data_categorical(v, values)

        self.assertEqual(w.name_edit.text(), v.name)
        self.assertEqual(w.labels_model.get_dict(), dict(v.annotations))
        self.assertEqual(w.get_data(), (v, []))
        w.set_data_categorical(None, None)
        self.assertEqual(w.name_edit.text(), "")
        self.assertEqual(w.labels_model.get_dict(), {})
        self.assertEqual(w.get_data(), (None, []))
        mapping = [("c", "C"), ("a", "A"), ("b", None), (None, "b")]
        w.set_data_categorical(v, values, [CategoriesMapping(mapping)])
        w.grab()  # run delegate paint method
        self.assertEqual(w.get_data(), (v, [CategoriesMapping(mapping)]))

        # test selection/deselection in the view
        w.set_data_categorical(v, values)
        view = w.values_edit
        model = view.model()
        assert model.rowCount()
        sel_model = view.selectionModel()
        model = sel_model.model()
        sel_model.select(model.index(0, 0), QItemSelectionModel.Select)
        sel_model.select(model.index(0, 0), QItemSelectionModel.Deselect)

        # merge mapping
        mapping = [("a", "a"), ("b", "b"), ("c", "b")]
        w.set_data_categorical(v, values, [CategoriesMapping(mapping)])
        self.assertEqual(w.get_data()[1], [CategoriesMapping(mapping)])
        self.assertEqual(model.data(model.index(0, 0), MultiplicityRole), 1)
        self.assertEqual(model.data(model.index(1, 0), MultiplicityRole), 2)
        self.assertEqual(model.data(model.index(2, 0), MultiplicityRole), 2)
        w.grab()
        model.setData(model.index(0, 0), "b", Qt.EditRole)
        self.assertEqual(model.data(model.index(0, 0), MultiplicityRole), 3)
        self.assertEqual(model.data(model.index(1, 0), MultiplicityRole), 3)
        self.assertEqual(model.data(model.index(2, 0), MultiplicityRole), 3)
        w.grab()
Ejemplo n.º 6
0
 def test_categorical_merge_mapping(self):
     var = Categorical("C", ("a", "b1", "b2"), ())
     tr = CategoriesMapping(
         (("a", "a"),
          ("b1", "b"),
          ("b2", "b"),
          (None, "c")),
     )
     r = report_transform(var, [tr])
     self.assertIn('b', r)
Ejemplo n.º 7
0
 def test_discrete_merge(self):
     D = DiscreteVariable("D", values=("2", "3", "1", "0"))
     mapping = (
         ("0", "x"),
         ("1", "y"),
         ("2", "x"),
         ("3", "y"),
     )
     tr = [CategoriesMapping(mapping)]
     DD = apply_transform_var(D, tr)
     self.assertSequenceEqual(DD.values, ["x", "y"])
     self._assertLookupEquals(DD.compute_value,
                              Lookup(D, np.array([0, 1, 1, 0])))
Ejemplo n.º 8
0
 def test_discrete_add_drop(self):
     D = DiscreteVariable("D", values=("2", "3", "1", "0"))
     mapping = (
         ("0", None),
         ("1", "1"),
         ("2", "2"),
         ("3", None),
         (None, "A"),
     )
     tr = [CategoriesMapping(mapping)]
     DD = apply_transform_var(D, tr)
     self.assertSequenceEqual(DD.values, ["1", "2", "A"])
     self._assertLookupEquals(DD.compute_value,
                              Lookup(D, np.array([1, np.nan, 0, np.nan])))
Ejemplo n.º 9
0
 def test_discrete_rename(self):
     D = DiscreteVariable("D", values=("a", "b"))
     DD = apply_transform_var(D,
                              [CategoriesMapping((("a", "A"), ("b", "B")))])
     self.assertSequenceEqual(DD.values, ["A", "B"])
     self.assertIs(DD.compute_value.variable, D)