Skip to content

Commit c0ed707

Browse files
Issue python#24408: Added more tkinter.Font tests.
1 parent d004071 commit c0ed707

1 file changed

Lines changed: 65 additions & 5 deletions

File tree

Lib/tkinter/test/test_tkinter/test_font.py

Lines changed: 65 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -6,21 +6,81 @@
66

77
requires('gui')
88

9+
fontname = "TkDefaultFont"
10+
911
class FontTest(AbstractTkTest, unittest.TestCase):
1012

11-
def test_font_eq(self):
12-
fontname = "TkDefaultFont"
13+
@classmethod
14+
def setUpClass(cls):
15+
AbstractTkTest.setUpClass()
1316
try:
14-
f = font.Font(root=self.root, name=fontname, exists=True)
15-
except tkinter._tkinter.TclError:
16-
f = font.Font(root=self.root, name=fontname, exists=False)
17+
cls.font = font.Font(root=cls.root, name=fontname, exists=True)
18+
except tkinter.TclError:
19+
cls.font = font.Font(root=cls.root, name=fontname, exists=False)
20+
21+
def test_configure(self):
22+
options = self.font.configure()
23+
self.assertGreaterEqual(set(options),
24+
{'family', 'size', 'weight', 'slant', 'underline', 'overstrike'})
25+
for key in options:
26+
self.assertEqual(self.font.cget(key), options[key])
27+
self.assertEqual(self.font[key], options[key])
28+
for key in 'family', 'weight', 'slant':
29+
self.assertIsInstance(options[key], str)
30+
self.assertIsInstance(self.font.cget(key), str)
31+
self.assertIsInstance(self.font[key], str)
32+
sizetype = int if self.wantobjects else str
33+
for key in 'size', 'underline', 'overstrike':
34+
self.assertIsInstance(options[key], sizetype)
35+
self.assertIsInstance(self.font.cget(key), sizetype)
36+
self.assertIsInstance(self.font[key], sizetype)
37+
38+
def test_actual(self):
39+
options = self.font.actual()
40+
self.assertGreaterEqual(set(options),
41+
{'family', 'size', 'weight', 'slant', 'underline', 'overstrike'})
42+
for key in options:
43+
self.assertEqual(self.font.actual(key), options[key])
44+
for key in 'family', 'weight', 'slant':
45+
self.assertIsInstance(options[key], str)
46+
self.assertIsInstance(self.font.actual(key), str)
47+
sizetype = int if self.wantobjects else str
48+
for key in 'size', 'underline', 'overstrike':
49+
self.assertIsInstance(options[key], sizetype)
50+
self.assertIsInstance(self.font.actual(key), sizetype)
51+
52+
def test_name(self):
53+
self.assertEqual(self.font.name, fontname)
54+
self.assertEqual(str(self.font), fontname)
55+
56+
def test_eq(self):
1757
font1 = font.Font(root=self.root, name=fontname, exists=True)
1858
font2 = font.Font(root=self.root, name=fontname, exists=True)
1959
self.assertIsNot(font1, font2)
2060
self.assertEqual(font1, font2)
2161
self.assertNotEqual(font1, font1.copy())
2262
self.assertNotEqual(font1, 0)
2363

64+
def test_measure(self):
65+
self.assertIsInstance(self.font.measure('abc'), int)
66+
67+
def test_metrics(self):
68+
metrics = self.font.metrics()
69+
self.assertGreaterEqual(set(metrics),
70+
{'ascent', 'descent', 'linespace', 'fixed'})
71+
for key in metrics:
72+
self.assertEqual(self.font.metrics(key), metrics[key])
73+
self.assertIsInstance(metrics[key], int)
74+
self.assertIsInstance(self.font.metrics(key), int)
75+
76+
def test_families(self):
77+
families = font.families(self.root)
78+
self.assertIn(self.font.actual('family'), families)
79+
80+
def test_names(self):
81+
names = font.names(self.root)
82+
self.assertIn(fontname, names)
83+
2484
tests_gui = (FontTest, )
2585

2686
if __name__ == "__main__":

0 commit comments

Comments
 (0)