summaryrefslogtreecommitdiffstats
path: root/Lib/idlelib/idle_test
diff options
context:
space:
mode:
authorCheryl Sabella <cheryl.sabella@gmail.com>2018-02-28 22:23:58 (GMT)
committerTerry Jan Reedy <tjreedy@udel.edu>2018-02-28 22:23:58 (GMT)
commitf0daa880a405c8de6743e44fa46006754aa145c9 (patch)
tree69e9aaea4f22f22dd1886ff6d2cac7bc58bb9547 /Lib/idlelib/idle_test
parent45ab51c142c2dc70a2abb7100b3cb3457bc18516 (diff)
downloadcpython-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.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