Esempio n. 1
0
class TestSelectAttributesDomainContextHandler(TestCase):
    def setUp(self):
        self.handler = SelectAttributesDomainContextHandler()
        self.handler.read_defaults = lambda: None  # Disable reading settings from disk
        self.handler.bind(MockWidget)

    def test_clone_context(self):
        context = self.handler.new_context()
        iris = Table('iris')
        attrs, metas = self.handler.encode_domain(iris.domain)
        self.handler.clone_context(context, iris.domain, attrs, metas)
Esempio n. 2
0
class TestSelectAttributesDomainContextHandler(TestCase):
    def setUp(self):
        self.domain = Domain(attributes=[
            ContinuousVariable('c1'),
            DiscreteVariable('d1', values='abc'),
            DiscreteVariable('d2', values='def')
        ],
                             class_vars=[DiscreteVariable('d3', values='ghi')],
                             metas=[
                                 ContinuousVariable('c2'),
                                 DiscreteVariable('d4', values='jkl')
                             ])
        self.args = (self.domain, {
            'c1': Continuous,
            'd1': Discrete,
            'd2': Discrete,
            'd3': Discrete
        }, {
            'c2': Continuous,
            'd4': Discrete,
        })

        self.handler = SelectAttributesDomainContextHandler(first_match=False)
        self.handler.read_defaults = lambda: None

    def test_open_context(self):
        self.handler.bind(SimpleWidget)
        context = Mock(attributes=self.args[1],
                       metas=self.args[2],
                       values=dict(domain_role_hints=({
                           ('d1', Discrete): ('available', 0),
                           ('d2', Discrete): ('meta', 0),
                           ('c1', Continuous): ('attribute', 0),
                           ('d3', Discrete): ('attribute', 1),
                           ('d4', Discrete): ('attribute', 2),
                           ('c2', Continuous): ('class', 0)
                       }, -2),
                                   with_metas=[('d1', Discrete),
                                               ('d2', Discrete)]))
        self.handler.global_contexts = \
            [Mock(values={}), context, Mock(values={})]

        widget = SimpleWidget()
        self.handler.initialize(widget)
        domain = self.args[0]
        self.handler.open_context(widget, domain)
        self.assertEqual(
            widget.domain_role_hints, {
                domain['d1']: ('available', 0),
                domain['d2']: ('meta', 0),
                domain['c1']: ('attribute', 0),
                domain['d3']: ('attribute', 1),
                domain['d4']: ('attribute', 2),
                domain['c2']: ('class', 0)
            })

    def test_open_context_with_imperfect_match(self):
        self.handler.bind(SimpleWidget)
        context1 = Mock(values=dict(domain_role_hints=({
            ('d1', Discrete): ('attribute', 0),
            ('m2', Discrete): ('meta', 0)
        }, -2)))
        context = Mock(values=dict(domain_role_hints=({
            ('d1', Discrete): ('available', 0),
            ('d2', Discrete): ('meta', 0),
            ('c1', Continuous): ('attribute', 0),
            ('d6', Discrete): ('attribute', 1),
            ('d7', Discrete): ('attribute', 2),
            ('c2', Continuous): ('class', 0)
        }, -2)))
        self.handler.global_contexts = \
            [Mock(values={}), context1, context, Mock(values={})]

        widget = SimpleWidget()
        self.handler.initialize(widget)
        domain = self.args[0]
        self.handler.open_context(widget, domain)

        self.assertEqual(
            widget.domain_role_hints, {
                domain['d1']: ('available', 0),
                domain['d2']: ('meta', 0),
                domain['c1']: ('attribute', 0),
                domain['c2']: ('class', 0)
            })