14adfde8bc82dd39f59e0445588c3e599ada477dJosh Gaoimport unittest 24adfde8bc82dd39f59e0445588c3e599ada477dJosh Gaoimport Tkinter 34adfde8bc82dd39f59e0445588c3e599ada477dJosh Gaoimport ttk 44adfde8bc82dd39f59e0445588c3e599ada477dJosh Gaofrom test.test_support import requires, run_unittest 54adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao 64adfde8bc82dd39f59e0445588c3e599ada477dJosh Gaoimport support 74adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao 84adfde8bc82dd39f59e0445588c3e599ada477dJosh Gaorequires('gui') 94adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao 104adfde8bc82dd39f59e0445588c3e599ada477dJosh Gaoclass StyleTest(unittest.TestCase): 114adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao 124adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao def setUp(self): 134adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao self.style = ttk.Style() 144adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao 154adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao 164adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao def test_configure(self): 174adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao style = self.style 184adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao style.configure('TButton', background='yellow') 194adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao self.assertEqual(style.configure('TButton', 'background'), 204adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao 'yellow') 214adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao self.assertTrue(isinstance(style.configure('TButton'), dict)) 224adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao 234adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao 244adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao def test_map(self): 254adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao style = self.style 264adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao style.map('TButton', background=[('active', 'background', 'blue')]) 274adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao self.assertEqual(style.map('TButton', 'background'), 284adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao [('active', 'background', 'blue')]) 294adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao self.assertTrue(isinstance(style.map('TButton'), dict)) 304adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao 314adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao 324adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao def test_lookup(self): 334adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao style = self.style 344adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao style.configure('TButton', background='yellow') 354adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao style.map('TButton', background=[('active', 'background', 'blue')]) 364adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao 374adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao self.assertEqual(style.lookup('TButton', 'background'), 'yellow') 384adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao self.assertEqual(style.lookup('TButton', 'background', 394adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao ['active', 'background']), 'blue') 404adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao self.assertEqual(style.lookup('TButton', 'optionnotdefined', 414adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao default='iknewit'), 'iknewit') 424adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao 434adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao 444adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao def test_layout(self): 454adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao style = self.style 464adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao self.assertRaises(Tkinter.TclError, style.layout, 'NotALayout') 474adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao tv_style = style.layout('Treeview') 484adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao 494adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao # "erase" Treeview layout 504adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao style.layout('Treeview', '') 514adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao self.assertEqual(style.layout('Treeview'), 524adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao [('null', {'sticky': 'nswe'})] 534adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao ) 544adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao 554adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao # restore layout 564adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao style.layout('Treeview', tv_style) 574adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao self.assertEqual(style.layout('Treeview'), tv_style) 584adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao 594adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao # should return a list 604adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao self.assertTrue(isinstance(style.layout('TButton'), list)) 614adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao 624adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao # correct layout, but "option" doesn't exist as option 634adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao self.assertRaises(Tkinter.TclError, style.layout, 'Treeview', 644adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao [('name', {'option': 'inexistent'})]) 654adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao 664adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao 674adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao def test_theme_use(self): 684adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao self.assertRaises(Tkinter.TclError, self.style.theme_use, 694adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao 'nonexistingname') 704adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao 714adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao curr_theme = self.style.theme_use() 724adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao new_theme = None 734adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao for theme in self.style.theme_names(): 744adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao if theme != curr_theme: 754adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao new_theme = theme 764adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao self.style.theme_use(theme) 774adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao break 784adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao else: 794adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao # just one theme available, can't go on with tests 804adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao return 814adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao 824adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao self.assertFalse(curr_theme == new_theme) 834adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao self.assertFalse(new_theme != self.style.theme_use()) 844adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao 854adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao self.style.theme_use(curr_theme) 864adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao 874adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao 884adfde8bc82dd39f59e0445588c3e599ada477dJosh Gaotests_gui = (StyleTest, ) 894adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao 904adfde8bc82dd39f59e0445588c3e599ada477dJosh Gaoif __name__ == "__main__": 914adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao run_unittest(*tests_gui) 92