summaryrefslogtreecommitdiffstats
path: root/Lib/test/test_re.py
diff options
context:
space:
mode:
authorEzio Melotti <ezio.melotti@gmail.com>2012-02-29 09:49:45 (GMT)
committerEzio Melotti <ezio.melotti@gmail.com>2012-02-29 09:49:45 (GMT)
commit0b8123d8ae14520aa5c8623e1c829e9e44bfe04b (patch)
tree0a5fce405cb7bc5155ec30c53bfd7f0a55057008 /Lib/test/test_re.py
parent7b5649cd48fbccceb182ff5cde8eecc20a93954a (diff)
parent5a045b9f5493b12bc8421b55ffff10b6572bc22c (diff)
downloadcpython-0b8123d8ae14520aa5c8623e1c829e9e44bfe04b.zip
cpython-0b8123d8ae14520aa5c8623e1c829e9e44bfe04b.tar.gz
cpython-0b8123d8ae14520aa5c8623e1c829e9e44bfe04b.tar.bz2
#10713: merge with 3.2.
Diffstat (limited to 'Lib/test/test_re.py')
-rw-r--r--Lib/test/test_re.py26
1 files changed, 26 insertions, 0 deletions
diff --git a/Lib/test/test_re.py b/Lib/test/test_re.py
index d23c49b..0d5f617 100644
--- a/Lib/test/test_re.py
+++ b/Lib/test/test_re.py
@@ -355,6 +355,32 @@ class ReTests(unittest.TestCase):
self.assertEqual(re.search(r"\d\D\w\W\s\S",
"1aa! a", re.UNICODE).group(0), "1aa! a")
+ def test_string_boundaries(self):
+ # See http://bugs.python.org/issue10713
+ self.assertEqual(re.search(r"\b(abc)\b", "abc").group(1),
+ "abc")
+ # There's a word boundary at the start of a string.
+ self.assertTrue(re.match(r"\b", "abc"))
+ # A non-empty string includes a non-boundary zero-length match.
+ self.assertTrue(re.search(r"\B", "abc"))
+ # There is no non-boundary match at the start of a string.
+ self.assertFalse(re.match(r"\B", "abc"))
+ # However, an empty string contains no word boundaries, and also no
+ # non-boundaries.
+ self.assertEqual(re.search(r"\B", ""), None)
+ # This one is questionable and different from the perlre behaviour,
+ # but describes current behavior.
+ self.assertEqual(re.search(r"\b", ""), None)
+ # A single word-character string has two boundaries, but no
+ # non-boundary gaps.
+ self.assertEqual(len(re.findall(r"\b", "a")), 2)
+ self.assertEqual(len(re.findall(r"\B", "a")), 0)
+ # If there are no words, there are no boundaries
+ self.assertEqual(len(re.findall(r"\b", " ")), 0)
+ self.assertEqual(len(re.findall(r"\b", " ")), 0)
+ # Can match around the whitespace.
+ self.assertEqual(len(re.findall(r"\B", " ")), 2)
+
def test_bigcharset(self):
self.assertEqual(re.match("([\u2222\u2223])",
"\u2222").group(1), "\u2222")