Esempio n. 1
0
class TestQFlagsKey:

    """Tests for qutebrowser.utils.debug.qflags_key.

    https://github.com/qutebrowser/qutebrowser/issues/42
    """

    fixme = pytest.mark.xfail(reason="See issue #42", raises=AssertionError)

    @pytest.mark.parametrize('base, value, klass, expected', [
        (Qt, Qt.AlignTop, None, 'AlignTop'),
        pytest.param(Qt, Qt.AlignLeft | Qt.AlignTop, None,
                     'AlignLeft|AlignTop', marks=fixme),
        (Qt, Qt.AlignCenter, None, 'AlignHCenter|AlignVCenter'),
        pytest.param(Qt, 0x0021, Qt.Alignment, 'AlignLeft|AlignTop',
                     marks=fixme),
        (Qt, 0x1100, Qt.Alignment, '0x0100|0x1000'),
        (Qt, Qt.DockWidgetAreas(0), Qt.DockWidgetArea, 'NoDockWidgetArea'),
        (Qt, Qt.DockWidgetAreas(0), None, '0x0000'),
    ])
    def test_qflags_key(self, base, value, klass, expected):
        flags = debug.qflags_key(base, value, klass=klass)
        assert flags == expected

    def test_add_base(self):
        """Test with add_base=True."""
        flags = debug.qflags_key(Qt, Qt.AlignTop, add_base=True)
        assert flags == 'Qt.AlignTop'

    def test_int_noklass(self):
        """Test passing an int without explicit klass given."""
        with pytest.raises(TypeError):
            debug.qflags_key(Qt, 42)
Esempio n. 2
0
class TestQFlagsKey:
    """Tests for qutebrowser.utils.debug.qflags_key.

    https://github.com/qutebrowser/qutebrowser/issues/42
    """

    fixme = pytest.mark.xfail(reason="See issue #42", raises=AssertionError)

    @pytest.mark.parametrize('base, value, klass, expected', [
        (Qt, Qt.AlignTop, None, 'AlignTop'),
        pytest.param(Qt,
                     Qt.AlignLeft | Qt.AlignTop,
                     None,
                     'AlignLeft|AlignTop',
                     marks=fixme),
        (Qt, Qt.AlignCenter, None, 'AlignHCenter|AlignVCenter'),
        pytest.param(
            Qt, 0x0021, Qt.Alignment, 'AlignLeft|AlignTop', marks=fixme),
        (Qt, 0x1100, Qt.Alignment, '0x0100|0x1000'),
        (Qt, Qt.DockWidgetAreas(0), Qt.DockWidgetArea, 'NoDockWidgetArea'),
        (Qt, Qt.DockWidgetAreas(0), None, '0x0000'),
    ])
    def test_qflags_key(self, base, value, klass, expected):
        flags = debug.qflags_key(base, value, klass=klass)
        assert flags == expected

    def test_find_flags(self):
        """Test a weird TypeError we get from PyQt.

        In exactly this constellation (happening via the "Searching with
        --reverse" BDD test), calling QMetaEnum::valueToKey without wrapping
        the flags in int() causes a TypeError.

        No idea what's happening here exactly...
        """
        qwebpage = pytest.importorskip("PyQt5.QtWebKitWidgets").QWebPage

        flags = qwebpage.FindWrapsAroundDocument
        flags |= qwebpage.FindBackward
        flags &= ~qwebpage.FindBackward
        flags &= ~qwebpage.FindWrapsAroundDocument

        debug.qflags_key(qwebpage, flags, klass=qwebpage.FindFlag)

    def test_add_base(self):
        """Test with add_base=True."""
        flags = debug.qflags_key(Qt, Qt.AlignTop, add_base=True)
        assert flags == 'Qt.AlignTop'

    def test_int_noklass(self):
        """Test passing an int without explicit klass given."""
        with pytest.raises(TypeError):
            debug.qflags_key(Qt, 42)