def test_pop_up_widget(self): """ Check widget tab stops work as expected. """ def test_on_click(selection): raise NextScene(str(selection)) screen = MagicMock(spec=Screen, colours=8) scene = MagicMock(spec=Scene) canvas = Canvas(screen, 10, 40, 0, 0) form = PopUpDialog(canvas, "Message", ["Yes", "No"], test_on_click) form.register_scene(scene) form.reset() # Check that the pop-up is rendered correctly. form.update(0) self.assert_canvas_equals( canvas, " \n" + " \n" + " +------------------+ \n" + " |Message | \n" + " | | \n" + " | < Yes > < No > | \n" + " +------------------+ \n" + " \n" + " \n" + " \n") # Check that mouse input triggers the close function. with self.assertRaises(NextScene): self.process_mouse(form, [(14, 5, MouseEvent.LEFT_CLICK)])
def test_shadow(self): """ Check Frames support shadows. """ def test_on_click(selection): raise NextScene(str(selection)) screen = MagicMock(spec=Screen, colours=8) scene = MagicMock(spec=Scene) canvas = Canvas(screen, 10, 40, 0, 0) for y in range(10): canvas.print_at("X" * 40, 0, y) form = PopUpDialog( canvas, "Message", ["Yes", "No"], test_on_click, has_shadow=True) form.register_scene(scene) form.reset() # Check that the pop-up is rendered correctly. form.update(0) self.assert_canvas_equals( canvas, "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n" + "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n" + "XXXXXXXXXX+------------------+XXXXXXXXXX\n" + "XXXXXXXXXX|Message | XXXXXXXXX\n" + "XXXXXXXXXX| | XXXXXXXXX\n" + "XXXXXXXXXX| < Yes > < No > | XXXXXXXXX\n" + "XXXXXXXXXX+------------------+ XXXXXXXXX\n" + "XXXXXXXXXXX XXXXXXXXX\n" + "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n" + "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n")
def test_cjk_popup(self): """ Check PopUpDialog widgets work with CJK double-width characters. """ # Apologies to anyone who actually speaks this language! I just need some double-width # glyphs so have re-used the ones from the original bug report. screen = MagicMock(spec=Screen, colours=8, unicode_aware=False) scene = MagicMock(spec=Scene) canvas = Canvas(screen, 10, 40, 0, 0) form = PopUpDialog(canvas, u"你確定嗎? 你確定嗎? 你確定嗎?", [u"是", u"否"]) form.register_scene(scene) form.reset() # Check that the pop-up is rendered correctly. form.update(0) self.assert_canvas_equals( canvas, " \n" + " \n" + " +------------------------+ \n" + " |你你確確定定嗎嗎?? 你你確確定定嗎嗎?? | \n" + " |你你確確定定嗎嗎?? O \n" + " | | \n" + " | < 是是 > < 否否 > | \n" + " +------------------------+ \n" + " \n" + " \n")