1 import keyword
2 import unittest
3
4
5 class ESC[4;38;5;81mTest_iskeyword(ESC[4;38;5;149munittestESC[4;38;5;149m.ESC[4;38;5;149mTestCase):
6 def test_true_is_a_keyword(self):
7 self.assertTrue(keyword.iskeyword('True'))
8
9 def test_uppercase_true_is_not_a_keyword(self):
10 self.assertFalse(keyword.iskeyword('TRUE'))
11
12 def test_none_value_is_not_a_keyword(self):
13 self.assertFalse(keyword.iskeyword(None))
14
15 # This is probably an accident of the current implementation, but should be
16 # preserved for backward compatibility.
17 def test_changing_the_kwlist_does_not_affect_iskeyword(self):
18 oldlist = keyword.kwlist
19 self.addCleanup(setattr, keyword, 'kwlist', oldlist)
20 keyword.kwlist = ['its', 'all', 'eggs', 'beans', 'and', 'a', 'slice']
21 self.assertFalse(keyword.iskeyword('eggs'))
22
23 def test_changing_the_softkwlist_does_not_affect_issoftkeyword(self):
24 oldlist = keyword.softkwlist
25 self.addCleanup(setattr, keyword, "softkwlist", oldlist)
26 keyword.softkwlist = ["foo", "bar", "spam", "egs", "case"]
27 self.assertFalse(keyword.issoftkeyword("spam"))
28
29 def test_all_keywords_fail_to_be_used_as_names(self):
30 for key in keyword.kwlist:
31 with self.assertRaises(SyntaxError):
32 exec(f"{key} = 42")
33
34 def test_all_soft_keywords_can_be_used_as_names(self):
35 for key in keyword.softkwlist:
36 exec(f"{key} = 42")
37
38 def test_async_and_await_are_keywords(self):
39 self.assertIn("async", keyword.kwlist)
40 self.assertIn("await", keyword.kwlist)
41
42 def test_soft_keywords(self):
43 self.assertIn("type", keyword.softkwlist)
44 self.assertIn("match", keyword.softkwlist)
45 self.assertIn("case", keyword.softkwlist)
46 self.assertIn("_", keyword.softkwlist)
47
48 def test_keywords_are_sorted(self):
49 self.assertListEqual(sorted(keyword.kwlist), keyword.kwlist)
50
51 def test_softkeywords_are_sorted(self):
52 self.assertListEqual(sorted(keyword.softkwlist), keyword.softkwlist)
53
54
55 if __name__ == "__main__":
56 unittest.main()