]> granicus.if.org Git - python/commitdiff
Issue #14107: fix bigmem tests on str.capitalize(), str.swapcase() and
authorVictor Stinner <victor.stinner@haypocalc.com>
Fri, 24 Feb 2012 23:43:27 +0000 (00:43 +0100)
committerVictor Stinner <victor.stinner@haypocalc.com>
Fri, 24 Feb 2012 23:43:27 +0000 (00:43 +0100)
str.title(). Compute correctly how much memory is required for the test
(memuse).

Lib/test/test_bigmem.py
Objects/unicodeobject.c

index 28e69a0b6c131444a7ac26bee35e67495ac563f6..0e545950ee704ed8c8a5184b67647a523b839d17 100644 (file)
@@ -69,8 +69,7 @@ ucs4_char_size = 4
 
 class BaseStrTest:
 
-    @bigmemtest(size=_2G, memuse=2)
-    def test_capitalize(self, size):
+    def _test_capitalize(self, size):
         _ = self.from_latin1
         SUBSTR = self.from_latin1(' abc def ghi')
         s = _('-') * size + SUBSTR
@@ -421,8 +420,7 @@ class BaseStrTest:
         self.assertEqual(len(s), size)
         self.assertEqual(s.strip(), SUBSTR.strip())
 
-    @bigmemtest(size=_2G, memuse=2)
-    def test_swapcase(self, size):
+    def _test_swapcase(self, size):
         _ = self.from_latin1
         SUBSTR = _("aBcDeFG12.'\xa9\x00")
         sublen = len(SUBSTR)
@@ -433,8 +431,7 @@ class BaseStrTest:
         self.assertEqual(s[:sublen * 3], SUBSTR.swapcase() * 3)
         self.assertEqual(s[-sublen * 3:], SUBSTR.swapcase() * 3)
 
-    @bigmemtest(size=_2G, memuse=2)
-    def test_title(self, size):
+    def _test_title(self, size):
         _ = self.from_latin1
         SUBSTR = _('SpaaHAaaAaham')
         s = SUBSTR * (size // len(SUBSTR) + 2)
@@ -608,6 +605,18 @@ class StrTest(unittest.TestCase, BaseStrTest):
         for name, memuse in self._adjusted.items():
             getattr(type(self), name).memuse = memuse
 
+    @bigmemtest(size=_2G, memuse=ucs4_char_size * 3)
+    def test_capitalize(self, size):
+        self._test_capitalize(size)
+
+    @bigmemtest(size=_2G, memuse=ucs4_char_size * 3)
+    def test_title(self, size):
+        self._test_title(size)
+
+    @bigmemtest(size=_2G, memuse=ucs4_char_size * 3)
+    def test_swapcase(self, size):
+        self._test_swapcase(size)
+
     # Many codecs convert to the legacy representation first, explaining
     # why we add 'ucs4_char_size' to the 'memuse' below.
 
@@ -763,6 +772,18 @@ class BytesTest(unittest.TestCase, BaseStrTest):
         s = self.from_latin1('.') * size
         self.assertEqual(len(s.decode('utf-8')), size)
 
+    @bigmemtest(size=_2G, memuse=2)
+    def test_capitalize(self, size):
+        self._test_capitalize(size)
+
+    @bigmemtest(size=_2G, memuse=2)
+    def test_title(self, size):
+        self._test_title(size)
+
+    @bigmemtest(size=_2G, memuse=2)
+    def test_swapcase(self, size):
+        self._test_swapcase(size)
+
 
 class BytearrayTest(unittest.TestCase, BaseStrTest):
 
@@ -774,6 +795,18 @@ class BytearrayTest(unittest.TestCase, BaseStrTest):
         s = self.from_latin1('.') * size
         self.assertEqual(len(s.decode('utf-8')), size)
 
+    @bigmemtest(size=_2G, memuse=2)
+    def test_capitalize(self, size):
+        self._test_capitalize(size)
+
+    @bigmemtest(size=_2G, memuse=2)
+    def test_title(self, size):
+        self._test_title(size)
+
+    @bigmemtest(size=_2G, memuse=2)
+    def test_swapcase(self, size):
+        self._test_swapcase(size)
+
     test_hash = None
     test_split_large = None
 
index 7cc6b1bd9df0a771d0471eb08720c40e02585441..d73145b458406de15fff39c2079730e976127cfb 100644 (file)
@@ -10628,7 +10628,10 @@ unicode_title(PyObject *self)
 {
     if (PyUnicode_READY(self) == -1)
         return NULL;
-    return case_operation(self, do_title);
+    if (PyUnicode_IS_ASCII(self))
+        return ascii_case_operation(self, ascii_do_title);
+    else
+        return case_operation(self, do_title);
 }
 
 PyDoc_STRVAR(capitalize__doc__,
@@ -10644,7 +10647,10 @@ unicode_capitalize(PyObject *self)
         return NULL;
     if (PyUnicode_GET_LENGTH(self) == 0)
         return unicode_result_unchanged(self);
-    return case_operation(self, do_capitalize);
+    if (PyUnicode_IS_ASCII(self))
+        return ascii_case_operation(self, ascii_do_capitalize);
+    else
+        return case_operation(self, do_capitalize);
 }
 
 PyDoc_STRVAR(casefold__doc__,
@@ -10659,7 +10665,8 @@ unicode_casefold(PyObject *self)
         return NULL;
     if (PyUnicode_IS_ASCII(self))
         return ascii_upper_or_lower(self, 1);
-    return case_operation(self, do_casefold);
+    else
+        return case_operation(self, do_casefold);
 }
 
 
@@ -11893,7 +11900,8 @@ unicode_lower(PyObject *self)
         return NULL;
     if (PyUnicode_IS_ASCII(self))
         return ascii_upper_or_lower(self, 1);
-    return case_operation(self, do_lower);
+    else
+        return case_operation(self, do_lower);
 }
 
 #define LEFTSTRIP 0
@@ -12784,7 +12792,10 @@ unicode_swapcase(PyObject *self)
 {
     if (PyUnicode_READY(self) == -1)
         return NULL;
-    return case_operation(self, do_swapcase);
+    if (PyUnicode_IS_ASCII(self))
+        return ascii_case_operation(self, ascii_do_swapcase);
+    else
+        return case_operation(self, do_swapcase);
 }
 
 PyDoc_STRVAR(maketrans__doc__,
@@ -12934,7 +12945,8 @@ unicode_upper(PyObject *self)
         return NULL;
     if (PyUnicode_IS_ASCII(self))
         return ascii_upper_or_lower(self, 0);
-    return case_operation(self, do_upper);
+    else
+        return case_operation(self, do_upper);
 }
 
 PyDoc_STRVAR(zfill__doc__,