1import unittest 2import Tkinter as tkinter 3import ttk 4from test.test_support import requires, run_unittest 5from test_ttk.support import AbstractTkTest 6 7requires('gui') 8 9class StyleTest(AbstractTkTest, unittest.TestCase): 10 11 def setUp(self): 12 super(StyleTest, self).setUp() 13 self.style = ttk.Style(self.root) 14 15 16 def test_configure(self): 17 style = self.style 18 style.configure('TButton', background='yellow') 19 self.assertEqual(style.configure('TButton', 'background'), 20 'yellow') 21 self.assertIsInstance(style.configure('TButton'), dict) 22 23 24 def test_map(self): 25 style = self.style 26 style.map('TButton', background=[('active', 'background', 'blue')]) 27 self.assertEqual(style.map('TButton', 'background'), 28 [('active', 'background', 'blue')] if self.wantobjects else 29 [('active background', 'blue')]) 30 self.assertIsInstance(style.map('TButton'), dict) 31 32 33 def test_lookup(self): 34 style = self.style 35 style.configure('TButton', background='yellow') 36 style.map('TButton', background=[('active', 'background', 'blue')]) 37 38 self.assertEqual(style.lookup('TButton', 'background'), 'yellow') 39 self.assertEqual(style.lookup('TButton', 'background', 40 ['active', 'background']), 'blue') 41 self.assertEqual(style.lookup('TButton', 'optionnotdefined', 42 default='iknewit'), 'iknewit') 43 44 45 def test_layout(self): 46 style = self.style 47 self.assertRaises(tkinter.TclError, style.layout, 'NotALayout') 48 tv_style = style.layout('Treeview') 49 50 # "erase" Treeview layout 51 style.layout('Treeview', '') 52 self.assertEqual(style.layout('Treeview'), 53 [('null', {'sticky': 'nswe'})] 54 ) 55 56 # restore layout 57 style.layout('Treeview', tv_style) 58 self.assertEqual(style.layout('Treeview'), tv_style) 59 60 # should return a list 61 self.assertIsInstance(style.layout('TButton'), list) 62 63 # correct layout, but "option" doesn't exist as option 64 self.assertRaises(tkinter.TclError, style.layout, 'Treeview', 65 [('name', {'option': 'inexistent'})]) 66 67 68 def test_theme_use(self): 69 self.assertRaises(tkinter.TclError, self.style.theme_use, 70 'nonexistingname') 71 72 curr_theme = self.style.theme_use() 73 new_theme = None 74 for theme in self.style.theme_names(): 75 if theme != curr_theme: 76 new_theme = theme 77 self.style.theme_use(theme) 78 break 79 else: 80 # just one theme available, can't go on with tests 81 return 82 83 self.assertFalse(curr_theme == new_theme) 84 self.assertFalse(new_theme != self.style.theme_use()) 85 86 self.style.theme_use(curr_theme) 87 88 89tests_gui = (StyleTest, ) 90 91if __name__ == "__main__": 92 run_unittest(*tests_gui) 93