blob: 3e2a8b3fb7f4c3bfd1948f5278593545e81226c4 [file] [log] [blame]
R David Murray32a23c32013-04-19 22:15:26 -04001import keyword
2import unittest
R David Murray32a23c32013-04-19 22:15:26 -04003
4
5class Test_iskeyword(unittest.TestCase):
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):
R David Murray87e984c2013-04-19 22:38:58 -040018 oldlist = keyword.kwlist
R David Murrayf0f7cea2013-04-25 12:01:36 -040019 self.addCleanup(setattr, keyword, 'kwlist', oldlist)
R David Murray32a23c32013-04-19 22:15:26 -040020 keyword.kwlist = ['its', 'all', 'eggs', 'beans', 'and', 'a', 'slice']
21 self.assertFalse(keyword.iskeyword('eggs'))
22
Pablo Galindo91759d92019-03-25 22:01:12 +000023 def test_all_keywords_fail_to_be_used_as_names(self):
24 for key in keyword.kwlist:
25 with self.assertRaises(SyntaxError):
26 exec(f"{key} = 42")
R David Murray32a23c32013-04-19 22:15:26 -040027
Pablo Galindo91759d92019-03-25 22:01:12 +000028 def test_async_and_await_are_keywords(self):
29 self.assertIn("async", keyword.kwlist)
30 self.assertIn("await", keyword.kwlist)
R David Murray32a23c32013-04-19 22:15:26 -040031
Pablo Galindo91759d92019-03-25 22:01:12 +000032 def test_keywords_are_sorted(self):
33 self.assertListEqual(sorted(keyword.kwlist), keyword.kwlist)
R David Murray32a23c32013-04-19 22:15:26 -040034
35
36if __name__ == "__main__":
37 unittest.main()