def test_move_to_window(self):
        # Create destination window with one tab
        dest = TabbedWindow()
        dest.addView(QtGui.QWidget(), "test")

        # Get reference of the view to be moved
        index = self.ghost.index()
        view = self.window.tabs.widget(index)
        text = self.window.tabs.tabText(index)

        # Move tab into new window
        self.tabbar._move_to_window(dest, dest.tabs.tabBar().tabRect(0).topLeft(), self.ghost)  # pylint: disable=W0212

        # Check
        self.assertFalse(self.window.tabs.count())
        self.assertEqual(dest.tabs.count(), 2)
        self.assertEqual(dest.tabs.widget(0), view)
        self.assertEqual(dest.tabs.tabText(0), text)
        self.assertEqual(dest.currentView(), view)
class TabbedWindowTests(WidgetTestsMixin, unittest.TestCase):
    """
    TabbedWindow test cases
    """

    def setUp(self):
        # Call superclass
        super(TabbedWindowTests, self).setUp()

        # Set up
        self.window = TabbedWindow()

    def test_clone(self):
        rect = self.window.geometry().adjusted(10, 10, 10, 10)
        clone = self.window.clone(rect)

        self.assertIsInstance(clone, TabbedWindow)
        self.assertEqual(clone.geometry(), rect)

    def test_add_view(self):
        # Add view
        view = QtGui.QWidget()
        title = "title"

        index = self.window.addView(view, title)

        # Check
        self.assertEqual(index, 0)
        self.assertEqual(self.window.tabs.tabText(index), title)
        self.assertEqual(self.window.tabs.widget(index), view)

    def test_insert_view(self):
        # Add view
        view1 = QtGui.QWidget()
        title1 = "title1"

        index = self.window.addView(view1, title1)

        self.assertEqual(index, 0)

        # Insert another view
        view2 = QtGui.QWidget()
        title2 = "title2"

        index = self.window.insertView(QtCore.QPoint(), view2, title2)

        # Check
        self.assertEqual(index, 0)
        self.assertEqual(self.window.tabs.tabText(index), title2)
        self.assertEqual(self.window.tabs.widget(index), view2)
        self.assertEqual(self.window.tabs.tabText(index + 1), title1)
        self.assertEqual(self.window.tabs.widget(index + 1), view1)

    def test_current_view(self):
        # Add view
        view1 = QtGui.QWidget()
        view2 = QtGui.QWidget()
        title1 = "title1"
        title2 = "title2"

        index1 = self.window.addView(view1, title1)
        index2 = self.window.addView(view2, title2)

        # Check set current view
        self.window.setCurrentView(index1)
        self.assertEqual(self.window.currentView(), view1)

        self.window.setCurrentView(index2)
        self.assertEqual(self.window.currentView(), view2)

    def test_remove_view(self):
        # Add view
        view = QtGui.QWidget()
        title = "title"

        index = self.window.addView(view, title)

        self.assertEqual(self.window.tabs.widget(index), view)

        # Remove view
        self.window.removeView(index)

        self.assertIsNone(self.window.tabs.widget(index))