[pypy-commit] pypy merge-2.7.2: Fix multibytecodec incremental tests: ensure that .encode(final=True)

amauryfa noreply at buildbot.pypy.org
Mon Jan 23 19:20:42 CET 2012


Author: Amaury Forgeot d'Arc <amauryfa at gmail.com>
Branch: merge-2.7.2
Changeset: r51694:9c27a0100918
Date: 2012-01-23 19:19 +0100
http://bitbucket.org/pypy/pypy/changeset/9c27a0100918/

Log:	Fix multibytecodec incremental tests: ensure that
	.encode(final=True) is always called at the end. Also have
	MultibyteStreamWriter.reset() call .encode(final=True) to flush the
	pending bytes.

diff --git a/pypy/module/_multibytecodec/app_multibytecodec.py b/pypy/module/_multibytecodec/app_multibytecodec.py
--- a/pypy/module/_multibytecodec/app_multibytecodec.py
+++ b/pypy/module/_multibytecodec/app_multibytecodec.py
@@ -40,7 +40,13 @@
         return self
 
     def write(self, data):
-        self.stream.write(MultibyteIncrementalEncoder.encode(self, data))
+        self.stream.write(MultibyteIncrementalEncoder.encode(
+                self, data))
+
+    def reset(self):
+        self.stream.write(MultibyteIncrementalEncoder.encode(
+                self, '', final=True))
+        MultibyteIncrementalEncoder.reset(self)
 
     def writelines(self, lines):
         for data in lines:
diff --git a/pypy/module/_multibytecodec/test/test_app_incremental.py b/pypy/module/_multibytecodec/test/test_app_incremental.py
--- a/pypy/module/_multibytecodec/test/test_app_incremental.py
+++ b/pypy/module/_multibytecodec/test/test_app_incremental.py
@@ -104,11 +104,11 @@
         r = e.encode("abcd")
         assert r == 'abcd'
         r = e.encode(u"\u5f95\u6c85")
-        assert r == '~{abcd~}'
+        assert r == '~{abcd'
         r = e.encode(u"\u5f50")
-        assert r == '~{ef~}'
-        r = e.encode(u"\u73b7")
-        assert r == '~{gh~}'
+        assert r == 'ef'
+        r = e.encode(u"\u73b7", final=True)
+        assert r == 'gh~}'
 
     def test_encode_hz_final(self):
         e = self.IncrementalHzEncoder()
@@ -127,7 +127,9 @@
         assert r == 'xyz~{abcd~}'
         e.reset()
         r = e.encode(u"xyz\u5f95\u6c85")
-        assert r == 'xyz~{abcd~}'
+        assert r == 'xyz~{abcd'
+        r = e.encode(u'', final=True)
+        assert r == '~}'
 
     def test_encode_hz_noreset(self):
         text = (u'\u5df1\u6240\u4e0d\u6b32\uff0c\u52ff\u65bd\u65bc\u4eba\u3002'
diff --git a/pypy/module/_multibytecodec/test/test_app_stream.py b/pypy/module/_multibytecodec/test/test_app_stream.py
--- a/pypy/module/_multibytecodec/test/test_app_stream.py
+++ b/pypy/module/_multibytecodec/test/test_app_stream.py
@@ -76,8 +76,9 @@
         w = self.HzStreamWriter(FakeFile())
         for input in u'!\u5f95\u6c85xyz\u5f50\u73b7':
             w.write(input)
-        assert w.stream.output == ['!', '~{ab~}', '~{cd~}', 'x', 'y', 'z',
-                                   '~{ef~}', '~{gh~}']
+        w.reset()
+        assert w.stream.output == ['!', '~{ab', 'cd', '~}x', 'y', 'z',
+                                   '~{ef', 'gh', '~}']
 
     def test_no_flush(self):
         class FakeFile:


More information about the pypy-commit mailing list