From 1694bc733d3ace8072c58e7da457dd2995998189 Mon Sep 17 00:00:00 2001 From: Damien George Date: Wed, 16 Jul 2014 11:45:10 +0100 Subject: py: Add stream reading of n unicode chars; unicode support by default. With unicode enabled, this patch allows reading a fixed number of characters from text-mode streams; eg file.read(5) will read 5 unicode chars, which can made of more than 5 bytes. For an ASCII stream (ie no chars > 127) it only needs to do 1 read. If there are lots of non-ASCII chars in a stream, then it needs multiple reads of the underlying object. Adds a new test for this case. Enables unicode support by default on unix and stmhal ports. --- tests/run-tests | 2 +- tests/unicode/data/utf-8_2.txt | 1 + tests/unicode/file2.py | 12 ++++++++++++ 3 files changed, 14 insertions(+), 1 deletion(-) create mode 100644 tests/unicode/data/utf-8_2.txt create mode 100644 tests/unicode/file2.py (limited to 'tests') diff --git a/tests/run-tests b/tests/run-tests index 71a94f946..4b48421de 100755 --- a/tests/run-tests +++ b/tests/run-tests @@ -134,7 +134,7 @@ def main(): if args.test_dirs is None: if pyb is None: # run PC tests - test_dirs = ('basics', 'micropython', 'float', 'import', 'io', 'misc') + test_dirs = ('basics', 'micropython', 'float', 'import', 'io', 'misc', 'unicode') else: # run pyboard tests test_dirs = ('basics', 'micropython', 'float', 'pyb', 'pybnative', 'inlineasm') diff --git a/tests/unicode/data/utf-8_2.txt b/tests/unicode/data/utf-8_2.txt new file mode 100644 index 000000000..ab0eaa4e0 --- /dev/null +++ b/tests/unicode/data/utf-8_2.txt @@ -0,0 +1 @@ +aαbβcγdδ diff --git a/tests/unicode/file2.py b/tests/unicode/file2.py new file mode 100644 index 000000000..aca2e0e0e --- /dev/null +++ b/tests/unicode/file2.py @@ -0,0 +1,12 @@ +# test reading a given number of characters + +def do(mode): + f = open('unicode/data/utf-8_2.txt', mode) + print(f.read(1)) + print(f.read(1)) + print(f.read(2)) + print(f.read(4)) + f.close() + +do('rb') +do('rt') -- cgit v1.2.3