diff options
Diffstat (limited to 'tests')
-rw-r--r-- | tests/basics/struct1.py | 4 | ||||
-rw-r--r-- | tests/misc/recursion.py | 7 | ||||
-rw-r--r-- | tests/misc/recursive_data.py_ | 9 | ||||
-rwxr-xr-x | tests/run-tests | 8 | ||||
-rw-r--r-- | tests/unicode/data/utf-8_1.txt | 1 | ||||
-rw-r--r-- | tests/unicode/file1.py | 4 | ||||
-rw-r--r-- | tests/unicode/unicode.py | 18 | ||||
-rw-r--r-- | tests/unicode/unicode_index.py | 6 | ||||
-rw-r--r-- | tests/unicode/unicode_iter.py | 4 | ||||
-rw-r--r-- | tests/unicode/unicode_pos.py | 5 |
10 files changed, 62 insertions, 4 deletions
diff --git a/tests/basics/struct1.py b/tests/basics/struct1.py index b114a789b5..c3049c55d6 100644 --- a/tests/basics/struct1.py +++ b/tests/basics/struct1.py @@ -21,3 +21,7 @@ print(struct.calcsize("100sI")) print(struct.calcsize("97sI")) print(struct.unpack("<6sH", b"foo\0\0\0\x12\x34")) print(struct.pack("<6sH", b"foo", 10000)) + +s = struct.pack("BHBI", 10, 100, 200, 300) +v = struct.unpack("BHBI", s) +print(v == (10, 100, 200, 300)) diff --git a/tests/misc/recursion.py b/tests/misc/recursion.py new file mode 100644 index 0000000000..227f48396a --- /dev/null +++ b/tests/misc/recursion.py @@ -0,0 +1,7 @@ +def foo(): + foo() + +try: + foo() +except RuntimeError: + print("RuntimeError") diff --git a/tests/misc/recursive_data.py_ b/tests/misc/recursive_data.py_ new file mode 100644 index 0000000000..6a52a3c0e8 --- /dev/null +++ b/tests/misc/recursive_data.py_ @@ -0,0 +1,9 @@ +# This tests that printing recursive data structure doesn't lead to segfault. +# Unfortunately, print() so far doesn't support "file "kwarg, so variable-len +# output of this test cannot be redirected, and this test cannot be validated. +l = [1, 2, 3, None] +l[-1] = l +try: + print(l) +except RuntimeError: + print("RuntimeError") diff --git a/tests/run-tests b/tests/run-tests index 8f5f7d470d..c6bc4020d4 100755 --- a/tests/run-tests +++ b/tests/run-tests @@ -88,10 +88,10 @@ def run_tests(pyb, tests): rm_f(filename_expected) rm_f(filename_mupy) else: - with open(filename_expected, "w") as f: - f.write(str(output_expected, "ascii")) - with open(filename_mupy, "w") as f: - f.write(str(output_mupy, "ascii")) + with open(filename_expected, "wb") as f: + f.write(output_expected) + with open(filename_mupy, "wb") as f: + f.write(output_mupy) print("FAIL ", test_file) failed_tests.append(test_name) diff --git a/tests/unicode/data/utf-8_1.txt b/tests/unicode/data/utf-8_1.txt new file mode 100644 index 0000000000..d84c480d1d --- /dev/null +++ b/tests/unicode/data/utf-8_1.txt @@ -0,0 +1 @@ +Привет diff --git a/tests/unicode/file1.py b/tests/unicode/file1.py new file mode 100644 index 0000000000..554e886743 --- /dev/null +++ b/tests/unicode/file1.py @@ -0,0 +1,4 @@ +f = open("unicode/data/utf-8_1.txt") +l = f.readline() +print(l) +print(len(l)) diff --git a/tests/unicode/unicode.py b/tests/unicode/unicode.py new file mode 100644 index 0000000000..c7e523f06a --- /dev/null +++ b/tests/unicode/unicode.py @@ -0,0 +1,18 @@ +# Test a UTF-8 encoded literal +s = "asdf©qwer" +for i in range(len(s)): + print("s[%d]: %s %X"%(i, s[i], ord(s[i]))) + +# Test all three forms of Unicode escape, and +# all blocks of UTF-8 byte patterns +s = "a\xA9\xFF\u0123\u0800\uFFEE\U0001F44C" +for i in range(-len(s), len(s)): + print("s[%d]: %s %X"%(i, s[i], ord(s[i]))) + print("s[:%d]: %d chars, '%s'"%(i, len(s[:i]), s[:i])) + for j in range(i, len(s)): + print("s[%d:%d]: %d chars, '%s'"%(i, j, len(s[i:j]), s[i:j])) + print("s[%d:]: %d chars, '%s'"%(i, len(s[i:]), s[i:])) + +# Test UTF-8 encode and decode +enc = s.encode() +print(enc, enc.decode() == s) diff --git a/tests/unicode/unicode_index.py b/tests/unicode/unicode_index.py new file mode 100644 index 0000000000..3c31468a41 --- /dev/null +++ b/tests/unicode/unicode_index.py @@ -0,0 +1,6 @@ +print("Привет".find("т")) +print("Привет".find("П")) +print("Привет".rfind("т")) +print("Привет".rfind("П")) +print("Привет".index("т")) +print("Привет".index("П")) diff --git a/tests/unicode/unicode_iter.py b/tests/unicode/unicode_iter.py new file mode 100644 index 0000000000..f08a4aceed --- /dev/null +++ b/tests/unicode/unicode_iter.py @@ -0,0 +1,4 @@ +for c in "Hello": + print(c) +for c in "Привет": + print(c) diff --git a/tests/unicode/unicode_pos.py b/tests/unicode/unicode_pos.py new file mode 100644 index 0000000000..6a5982920a --- /dev/null +++ b/tests/unicode/unicode_pos.py @@ -0,0 +1,5 @@ +# str methods with explicit start/end pos +print("Привет".startswith("П")) +print("Привет".startswith("р", 1)) +print("абвба".find("а", 1)) +print("абвба".find("а", 1, -1)) |