MCPcopy Index your code
hub / github.com/python/cpython / test_translate

Method test_translate

Lib/test/test_fnmatch.py:219–248  ·  view source on GitHub ↗
(self)

Source from the content-addressed store, hash-verified

217class TranslateTestCase(unittest.TestCase):
218
219 def test_translate(self):
220 import re
221 self.assertEqual(translate('*'), r'(?s:.*)\z')
222 self.assertEqual(translate('?'), r'(?s:.)\z')
223 self.assertEqual(translate('a?b*'), r'(?s:a.b.*)\z')
224 self.assertEqual(translate('[abc]'), r'(?s:[abc])\z')
225 self.assertEqual(translate('[]]'), r'(?s:[]])\z')
226 self.assertEqual(translate('[!x]'), r'(?s:[^x])\z')
227 self.assertEqual(translate('[^x]'), r'(?s:[\^x])\z')
228 self.assertEqual(translate('[x'), r'(?s:\[x)\z')
229 # from the docs
230 self.assertEqual(translate('*.txt'), r'(?s:.*\.txt)\z')
231 # squash consecutive stars
232 self.assertEqual(translate('*********'), r'(?s:.*)\z')
233 self.assertEqual(translate('A*********'), r'(?s:A.*)\z')
234 self.assertEqual(translate('*********A'), r'(?s:.*A)\z')
235 self.assertEqual(translate('A*********?[?]?'), r'(?s:A.*.[?].)\z')
236 # fancy translation to prevent exponential-time match failure
237 t = translate('**a*a****a')
238 self.assertEqual(t, r'(?s:(?>.*?a)(?>.*?a).*a)\z')
239 # and try pasting multiple translate results - it's an undocumented
240 # feature that this works
241 r1 = translate('**a**a**a*')
242 r2 = translate('**b**b**b*')
243 r3 = translate('*c*c*c*')
244 fatre = "|".join([r1, r2, r3])
245 self.assertTrue(re.match(fatre, 'abaccad'))
246 self.assertTrue(re.match(fatre, 'abxbcab'))
247 self.assertTrue(re.match(fatre, 'cbabcaxc'))
248 self.assertFalse(re.match(fatre, 'dabccbad'))
249
250 def test_translate_wildcards(self):
251 for pattern, expect in [

Callers

nothing calls this directly

Calls 6

translateFunction · 0.90
assertTrueMethod · 0.80
assertFalseMethod · 0.80
assertEqualMethod · 0.45
joinMethod · 0.45
matchMethod · 0.45

Tested by

no test coverage detected