17db96d56Sopenharmony_ciimport unittest
27db96d56Sopenharmony_ciimport tkinter
37db96d56Sopenharmony_cifrom test.support import requires, swap_attr
47db96d56Sopenharmony_cifrom tkinter.test.support import AbstractDefaultRootTest
57db96d56Sopenharmony_cifrom tkinter.commondialog import Dialog
67db96d56Sopenharmony_cifrom tkinter.messagebox import showinfo
77db96d56Sopenharmony_ci
87db96d56Sopenharmony_cirequires('gui')
97db96d56Sopenharmony_ci
107db96d56Sopenharmony_ci
117db96d56Sopenharmony_ciclass DefaultRootTest(AbstractDefaultRootTest, unittest.TestCase):
127db96d56Sopenharmony_ci
137db96d56Sopenharmony_ci    def test_showinfo(self):
147db96d56Sopenharmony_ci        def test_callback(dialog, master):
157db96d56Sopenharmony_ci            nonlocal ismapped
167db96d56Sopenharmony_ci            master.update()
177db96d56Sopenharmony_ci            ismapped = master.winfo_ismapped()
187db96d56Sopenharmony_ci            raise ZeroDivisionError
197db96d56Sopenharmony_ci
207db96d56Sopenharmony_ci        with swap_attr(Dialog, '_test_callback', test_callback):
217db96d56Sopenharmony_ci            ismapped = None
227db96d56Sopenharmony_ci            self.assertRaises(ZeroDivisionError, showinfo, "Spam", "Egg Information")
237db96d56Sopenharmony_ci            self.assertEqual(ismapped, False)
247db96d56Sopenharmony_ci
257db96d56Sopenharmony_ci            root = tkinter.Tk()
267db96d56Sopenharmony_ci            ismapped = None
277db96d56Sopenharmony_ci            self.assertRaises(ZeroDivisionError, showinfo, "Spam", "Egg Information")
287db96d56Sopenharmony_ci            self.assertEqual(ismapped, True)
297db96d56Sopenharmony_ci            root.destroy()
307db96d56Sopenharmony_ci
317db96d56Sopenharmony_ci            tkinter.NoDefaultRoot()
327db96d56Sopenharmony_ci            self.assertRaises(RuntimeError, showinfo, "Spam", "Egg Information")
337db96d56Sopenharmony_ci
347db96d56Sopenharmony_ci
357db96d56Sopenharmony_ciif __name__ == "__main__":
367db96d56Sopenharmony_ci    unittest.main()
37