diff options
author | Cheryl Sabella <cheryl.sabella@gmail.com> | 2018-02-28 22:23:58 (GMT) |
---|---|---|
committer | Terry Jan Reedy <tjreedy@udel.edu> | 2018-02-28 22:23:58 (GMT) |
commit | f0daa880a405c8de6743e44fa46006754aa145c9 (patch) | |
tree | 69e9aaea4f22f22dd1886ff6d2cac7bc58bb9547 /Lib/idlelib/idle_test | |
parent | 45ab51c142c2dc70a2abb7100b3cb3457bc18516 (diff) | |
download | cpython-f0daa880a405c8de6743e44fa46006754aa145c9.zip cpython-f0daa880a405c8de6743e44fa46006754aa145c9.tar.gz cpython-f0daa880a405c8de6743e44fa46006754aa145c9.tar.bz2 |
bpo-32940: IDLE: Simplify StringTranslatePseudoMapping in pyparse (GH-5862)
The new code also runs faster.
Diffstat (limited to 'Lib/idlelib/idle_test')
-rw-r--r-- | Lib/idlelib/idle_test/test_pyparse.py | 56 |
1 files changed, 14 insertions, 42 deletions
diff --git a/Lib/idlelib/idle_test/test_pyparse.py b/Lib/idlelib/idle_test/test_pyparse.py index c7b645c..574b19d 100644 --- a/Lib/idlelib/idle_test/test_pyparse.py +++ b/Lib/idlelib/idle_test/test_pyparse.py @@ -8,44 +8,20 @@ import unittest from idlelib import pyparse -class StringTranslatePseudoMappingTest(unittest.TestCase): - - @classmethod - def setUpClass(cls): - whitespace_chars = ' \t\n\r' - cls.preserve_dict = {ord(c): ord(c) for c in whitespace_chars} - cls.default = ord('x') - cls.mapping = pyparse.StringTranslatePseudoMapping( - cls.preserve_dict, default_value=ord('x')) - - @classmethod - def tearDownClass(cls): - del cls.preserve_dict, cls.default, cls.mapping - - def test__init__(self): - m = self.mapping - self.assertEqual(m._non_defaults, self.preserve_dict) - self.assertEqual(m._default_value, self.default) - - def test__get_item__(self): - self.assertEqual(self.mapping[ord('\t')], ord('\t')) - self.assertEqual(self.mapping[ord('a')], self.default) - - def test__len__(self): - self.assertEqual(len(self.mapping), len(self.preserve_dict)) - - def test__iter__(self): - count = 0 - for key, value in self.mapping.items(): - self.assertIn(key, self.preserve_dict) - count += 1 - self.assertEqual(count, len(self.mapping)) - - def test_get(self): - self.assertEqual(self.mapping.get(ord('\t')), ord('\t')) - self.assertEqual(self.mapping.get('a'), self.default) - # Default is a parameter, but it isn't used. - self.assertEqual(self.mapping.get('a', default=500), self.default) +class ParseMapTest(unittest.TestCase): + + def test_parsemap(self): + keepwhite = {ord(c): ord(c) for c in ' \t\n\r'} + mapping = pyparse.ParseMap(keepwhite) + self.assertEqual(mapping[ord('\t')], ord('\t')) + self.assertEqual(mapping[ord('a')], ord('x')) + self.assertEqual(mapping[1000], ord('x')) + + def test_trans(self): + # trans is the production instance of ParseMap, used in _study1 + parser = pyparse.Parser(4, 4) + self.assertEqual('\t a([{b}])b"c\'d\n'.translate(pyparse.trans), + 'xxx(((x)))x"x\'x\n') class PyParseTest(unittest.TestCase): @@ -152,10 +128,6 @@ class PyParseTest(unittest.TestCase): p.set_lo(44) self.assertEqual(p.code, code[44:]) - def test_tran(self): - self.assertEqual('\t a([{b}])b"c\'d\n'.translate(self.parser._tran), - 'xxx(((x)))x"x\'x\n') - def test_study1(self): eq = self.assertEqual p = self.parser |