def METHOD_NAME(self):
    gp = self.frame.grid_panel
    gui_loop(0.2)
    csize = self.frame.ClientSize
    # Hide 1 windows
    # Hide top left
    gp.hide_viewport(self.frame.red)
    gui_loop(0.2)
    self.assertEqual(self.frame.blue.Size, (csize.x, gp.grid_layout.tr.size.y))
    self.assertEqual(self.frame.purple.Size, gp.grid_layout.bl.size)
    self.assertEqual(self.frame.brown.Size, gp.grid_layout.br.size)
    gp.show_viewport(self.frame.red)
    # Hide top right
    gp.hide_viewport(self.frame.blue)
    gui_loop(0.2)
    self.assertEqual(self.frame.red.Size, (csize.x, gp.grid_layout.tl.size.y))
    self.assertEqual(self.frame.purple.Size, gp.grid_layout.bl.size)
    self.assertEqual(self.frame.brown.Size, gp.grid_layout.br.size)
    gp.show_viewport(self.frame.blue)
    # Hide bottom left
    gp.hide_viewport(self.frame.purple)
    gui_loop(0.2)
    self.assertEqual(self.frame.red.Size, gp.grid_layout.tl.size)
    self.assertEqual(self.frame.blue.Size, gp.grid_layout.tr.size)
    self.assertEqual(self.frame.brown.Size, (csize.x, gp.grid_layout.br.size.y))
    gp.show_viewport(self.frame.purple)
    # Hide bottom right
    gp.hide_viewport(self.frame.brown)
    gui_loop(0.2)
    self.assertEqual(self.frame.red.Size, gp.grid_layout.tl.size)
    self.assertEqual(self.frame.blue.Size, gp.grid_layout.tr.size)
    self.assertEqual(self.frame.purple.Size, (csize.x, gp.grid_layout.bl.size.y))
    gp.show_viewport(self.frame.brown)
    # Hide 2 windows
    # Hide top
    gp.hide_viewport(self.frame.red)
    gp.hide_viewport(self.frame.blue)
    gui_loop(0.2)
    self.assertEqual(self.frame.purple.Size, (csize.x, gp.grid_layout.tl.size.y))
    self.assertEqual(self.frame.brown.Size, (csize.x, gp.grid_layout.bl.size.y))
    gp.show_viewport(self.frame.red)
    gp.show_viewport(self.frame.blue)
    # Hide right
    gp.hide_viewport(self.frame.blue)
    gp.hide_viewport(self.frame.brown)
    gui_loop(0.2)
    self.assertEqual(self.frame.red.Size, (csize.x, gp.grid_layout.tl.size.y))
    self.assertEqual(self.frame.purple.Size, (csize.x, gp.grid_layout.bl.size.y))
    gp.show_viewport(self.frame.brown)
    gp.show_viewport(self.frame.blue)
    # Hide bottom
    gp.hide_viewport(self.frame.purple)
    gp.hide_viewport(self.frame.brown)
    gui_loop(0.2)
    self.assertEqual(self.frame.red.Size, (csize.x, gp.grid_layout.tl.size.y))
    self.assertEqual(self.frame.blue.Size, (csize.x, gp.grid_layout.bl.size.y))
    gp.show_viewport(self.frame.brown)
    gp.show_viewport(self.frame.purple)
    # Hide left
    gp.hide_viewport(self.frame.red)
    gp.hide_viewport(self.frame.purple)
    gui_loop(0.2)
    self.assertEqual(self.frame.blue.Size, (csize.x, gp.grid_layout.tr.size.y))
    self.assertEqual(self.frame.brown.Size, (csize.x, gp.grid_layout.br.size.y))
    gp.show_viewport(self.frame.purple)
    gp.show_viewport(self.frame.red)
    # Hide 3 windows
    gp.set_shown_viewports(self.frame.red)
    gui_loop(0.2)
    self.assertEqual(self.frame.red.Size, csize)
    gp.set_shown_viewports(self.frame.blue)
    gui_loop(0.2)
    self.assertEqual(self.frame.blue.Size, csize)
    gp.set_shown_viewports(self.frame.purple)
    gui_loop(0.2)
    self.assertEqual(self.frame.purple.Size, csize)
    gp.set_shown_viewports(self.frame.brown)
    gui_loop(0.2)
    self.assertEqual(self.frame.brown.Size, csize)
    gp.set_shown_viewports(self.frame.yellow)
    gui_loop(0.2)
    self.assertEqual(self.frame.yellow.Size, csize)
    gp.show_grid_viewports()