summaryrefslogtreecommitdiffstats
path: root/Lib/idlelib/idle_test/test_pyparse.py
diff options
context:
space:
mode:
authorMiss Islington (bot) <31488909+miss-islington@users.noreply.github.com>2018-02-28 23:08:21 (GMT)
committerGitHub <noreply@github.com>2018-02-28 23:08:21 (GMT)
commit7e5763469e2fc9d08a3f6b6205f87f20a1bdd465 (patch)
tree5f3fa69fed6c2b43082496c7a629a92f83a647b2 /Lib/idlelib/idle_test/test_pyparse.py
parentcefbd0101d4fd0a258be0c182cf27609ad26c100 (diff)
downloadcpython-7e5763469e2fc9d08a3f6b6205f87f20a1bdd465.zip
cpython-7e5763469e2fc9d08a3f6b6205f87f20a1bdd465.tar.gz
cpython-7e5763469e2fc9d08a3f6b6205f87f20a1bdd465.tar.bz2
bpo-32940: IDLE: Simplify StringTranslatePseudoMapping in pyparse (GH-5862)
The new code also runs faster. (cherry picked from commit f0daa880a405c8de6743e44fa46006754aa145c9) Co-authored-by: Cheryl Sabella <cheryl.sabella@gmail.com>
Diffstat (limited to 'Lib/idlelib/idle_test/test_pyparse.py')
-rw-r--r--Lib/idlelib/idle_test/test_pyparse.py56
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