xref: /third_party/python/Lib/test/test_keyword.py (revision 7db96d56)
17db96d56Sopenharmony_ciimport keyword
27db96d56Sopenharmony_ciimport unittest
37db96d56Sopenharmony_ci
47db96d56Sopenharmony_ci
57db96d56Sopenharmony_ciclass Test_iskeyword(unittest.TestCase):
67db96d56Sopenharmony_ci    def test_true_is_a_keyword(self):
77db96d56Sopenharmony_ci        self.assertTrue(keyword.iskeyword('True'))
87db96d56Sopenharmony_ci
97db96d56Sopenharmony_ci    def test_uppercase_true_is_not_a_keyword(self):
107db96d56Sopenharmony_ci        self.assertFalse(keyword.iskeyword('TRUE'))
117db96d56Sopenharmony_ci
127db96d56Sopenharmony_ci    def test_none_value_is_not_a_keyword(self):
137db96d56Sopenharmony_ci        self.assertFalse(keyword.iskeyword(None))
147db96d56Sopenharmony_ci
157db96d56Sopenharmony_ci    # This is probably an accident of the current implementation, but should be
167db96d56Sopenharmony_ci    # preserved for backward compatibility.
177db96d56Sopenharmony_ci    def test_changing_the_kwlist_does_not_affect_iskeyword(self):
187db96d56Sopenharmony_ci        oldlist = keyword.kwlist
197db96d56Sopenharmony_ci        self.addCleanup(setattr, keyword, 'kwlist', oldlist)
207db96d56Sopenharmony_ci        keyword.kwlist = ['its', 'all', 'eggs', 'beans', 'and', 'a', 'slice']
217db96d56Sopenharmony_ci        self.assertFalse(keyword.iskeyword('eggs'))
227db96d56Sopenharmony_ci
237db96d56Sopenharmony_ci    def test_changing_the_softkwlist_does_not_affect_issoftkeyword(self):
247db96d56Sopenharmony_ci        oldlist = keyword.softkwlist
257db96d56Sopenharmony_ci        self.addCleanup(setattr, keyword, "softkwlist", oldlist)
267db96d56Sopenharmony_ci        keyword.softkwlist = ["foo", "bar", "spam", "egs", "case"]
277db96d56Sopenharmony_ci        self.assertFalse(keyword.issoftkeyword("spam"))
287db96d56Sopenharmony_ci
297db96d56Sopenharmony_ci    def test_all_keywords_fail_to_be_used_as_names(self):
307db96d56Sopenharmony_ci        for key in keyword.kwlist:
317db96d56Sopenharmony_ci            with self.assertRaises(SyntaxError):
327db96d56Sopenharmony_ci                exec(f"{key} = 42")
337db96d56Sopenharmony_ci
347db96d56Sopenharmony_ci    def test_all_soft_keywords_can_be_used_as_names(self):
357db96d56Sopenharmony_ci        for key in keyword.softkwlist:
367db96d56Sopenharmony_ci            exec(f"{key} = 42")
377db96d56Sopenharmony_ci
387db96d56Sopenharmony_ci    def test_async_and_await_are_keywords(self):
397db96d56Sopenharmony_ci        self.assertIn("async", keyword.kwlist)
407db96d56Sopenharmony_ci        self.assertIn("await", keyword.kwlist)
417db96d56Sopenharmony_ci
427db96d56Sopenharmony_ci    def test_match_and_case_are_soft_keywords(self):
437db96d56Sopenharmony_ci        self.assertIn("match", keyword.softkwlist)
447db96d56Sopenharmony_ci        self.assertIn("case", keyword.softkwlist)
457db96d56Sopenharmony_ci        self.assertIn("_", keyword.softkwlist)
467db96d56Sopenharmony_ci
477db96d56Sopenharmony_ci    def test_keywords_are_sorted(self):
487db96d56Sopenharmony_ci        self.assertListEqual(sorted(keyword.kwlist), keyword.kwlist)
497db96d56Sopenharmony_ci
507db96d56Sopenharmony_ci    def test_softkeywords_are_sorted(self):
517db96d56Sopenharmony_ci        self.assertListEqual(sorted(keyword.softkwlist), keyword.softkwlist)
527db96d56Sopenharmony_ci
537db96d56Sopenharmony_ci
547db96d56Sopenharmony_ciif __name__ == "__main__":
557db96d56Sopenharmony_ci    unittest.main()
56