test_style.py 2.8 KB

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