Linux server1.dn-server.com 4.18.0-553.89.1.lve.el8.x86_64 #1 SMP Wed Dec 10 13:58:50 UTC 2025 x86_64
LiteSpeed
Server IP : 195.201.204.189 & Your IP : 216.73.216.198
Domains :
Cant Read [ /etc/named.conf ]
User : beriska1
Terminal
Auto Root
Create File
Create Folder
Localroot Suggester
Backdoor Destroyer
Readme
/
opt /
alt /
python33 /
lib64 /
python3.3 /
test /
Delete
Unzip
Name
Size
Permission
Date
Action
__pycache__
[ DIR ]
drwxr-xr-x
2026-05-01 04:20
audiodata
[ DIR ]
drwxr-xr-x
2026-05-01 04:20
capath
[ DIR ]
drwxr-xr-x
2026-05-01 04:20
cjkencodings
[ DIR ]
drwxr-xr-x
2026-05-01 04:20
data
[ DIR ]
drwxr-xr-x
2026-05-01 04:20
decimaltestdata
[ DIR ]
drwxr-xr-x
2026-05-01 04:20
encoded_modules
[ DIR ]
drwxr-xr-x
2026-05-01 04:20
imghdrdata
[ DIR ]
drwxr-xr-x
2026-05-01 04:20
namespace_pkgs
[ DIR ]
drwxr-xr-x
2026-05-01 04:20
sndhdrdata
[ DIR ]
drwxr-xr-x
2026-05-01 04:20
subprocessdata
[ DIR ]
drwxr-xr-x
2026-05-01 04:20
support
[ DIR ]
drwxr-xr-x
2026-05-01 04:20
test_email
[ DIR ]
drwxr-xr-x
2026-05-01 04:20
test_importlib
[ DIR ]
drwxr-xr-x
2026-05-01 04:20
test_json
[ DIR ]
drwxr-xr-x
2026-05-01 04:20
tracedmodules
[ DIR ]
drwxr-xr-x
2026-05-01 04:20
xmltestdata
[ DIR ]
drwxr-xr-x
2026-05-01 04:20
185test.db
16
KB
-rw-r--r--
2017-09-19 12:02
Sine-1000Hz-300ms.aif
60.25
KB
-rw-r--r--
2017-09-19 12:02
__init__.py
47
B
-rw-r--r--
2024-04-17 20:28
__main__.py
474
B
-rw-r--r--
2024-04-17 20:28
audiotests.py
9.34
KB
-rw-r--r--
2024-04-17 20:28
autotest.py
211
B
-rw-r--r--
2024-04-17 20:28
bad_coding.py
24
B
-rw-r--r--
2024-04-17 20:28
bad_coding2.py
30
B
-rw-r--r--
2024-04-17 20:28
badcert.pem
1.88
KB
-rw-r--r--
2017-09-19 12:02
badkey.pem
2.11
KB
-rw-r--r--
2017-09-19 12:02
badsyntax_3131.py
32
B
-rw-r--r--
2024-04-17 20:28
badsyntax_future3.py
172
B
-rw-r--r--
2024-04-17 20:28
badsyntax_future4.py
153
B
-rw-r--r--
2024-04-17 20:28
badsyntax_future5.py
184
B
-rw-r--r--
2024-04-17 20:28
badsyntax_future6.py
161
B
-rw-r--r--
2024-04-17 20:28
badsyntax_future7.py
196
B
-rw-r--r--
2024-04-17 20:28
badsyntax_future8.py
122
B
-rw-r--r--
2024-04-17 20:28
badsyntax_future9.py
142
B
-rw-r--r--
2024-04-17 20:28
badsyntax_pep3120.py
14
B
-rw-r--r--
2024-04-17 20:28
buffer_tests.py
10.79
KB
-rw-r--r--
2024-04-17 20:28
cfgparser.1
21
B
-rw-r--r--
2017-09-19 12:02
cfgparser.2
19.02
KB
-rw-r--r--
2017-09-19 12:02
cfgparser.3
1.55
KB
-rw-r--r--
2017-09-19 12:02
check_soundcard.vbs
411
B
-rw-r--r--
2017-09-19 12:02
cmath_testcases.txt
133.86
KB
-rw-r--r--
2017-09-19 12:02
coding20731.py
18
B
-rw-r--r--
2024-04-17 20:28
curses_tests.py
1.22
KB
-rwxr-xr-x
2024-04-17 20:28
datetimetester.py
146.82
KB
-rw-r--r--
2024-04-17 20:28
dh1024.pem
300
B
-rw-r--r--
2017-09-19 12:02
dis_module.py
76
B
-rw-r--r--
2024-04-17 20:28
doctest_aliases.py
240
B
-rw-r--r--
2024-04-17 20:28
double_const.py
1.18
KB
-rw-r--r--
2024-04-17 20:28
empty.vbs
70
B
-rw-r--r--
2017-09-19 12:02
exception_hierarchy.txt
1.69
KB
-rw-r--r--
2017-09-19 12:02
floating_points.txt
15.92
KB
-rw-r--r--
2017-09-19 12:02
fork_wait.py
2.1
KB
-rw-r--r--
2024-04-17 20:28
formatfloat_testcases.txt
7.45
KB
-rw-r--r--
2017-09-19 12:02
future_test1.py
229
B
-rw-r--r--
2024-04-17 20:28
future_test2.py
149
B
-rw-r--r--
2024-04-17 20:28
gdb_sample.py
153
B
-rw-r--r--
2024-04-17 20:28
ieee754.txt
3.21
KB
-rw-r--r--
2017-09-19 12:02
inspect_fodder.py
854
B
-rw-r--r--
2024-04-17 20:28
inspect_fodder2.py
1.39
KB
-rw-r--r--
2024-04-17 20:28
keycert.passwd.pem
1.79
KB
-rw-r--r--
2017-09-19 12:02
keycert.pem
1.74
KB
-rw-r--r--
2017-09-19 12:02
keycert2.pem
1.75
KB
-rw-r--r--
2017-09-19 12:02
list_tests.py
17.26
KB
-rw-r--r--
2024-04-17 20:28
lock_tests.py
25.47
KB
-rw-r--r--
2024-04-17 20:28
mailcap.txt
1.24
KB
-rw-r--r--
2017-09-19 12:02
make_ssl_certs.py
1.84
KB
-rw-r--r--
2024-04-17 20:28
mapping_tests.py
21.5
KB
-rw-r--r--
2024-04-17 20:28
math_testcases.txt
23.19
KB
-rw-r--r--
2017-09-19 12:02
memory_watchdog.py
859
B
-rw-r--r--
2024-04-17 20:28
mime.types
47.37
KB
-rw-r--r--
2017-09-19 12:02
mock_socket.py
3.32
KB
-rw-r--r--
2024-04-17 20:28
mp_fork_bomb.py
323
B
-rw-r--r--
2024-04-17 20:28
multibytecodec_support.py
14.25
KB
-rw-r--r--
2024-04-17 20:28
nokia.pem
1.88
KB
-rw-r--r--
2017-09-19 12:02
nullbytecert.pem
5.31
KB
-rw-r--r--
2017-09-19 12:02
nullcert.pem
0
B
-rw-r--r--
2017-09-19 12:02
outstanding_bugs.py
370
B
-rw-r--r--
2024-04-17 20:28
pickletester.py
60.31
KB
-rw-r--r--
2024-04-17 20:28
profilee.py
2.97
KB
-rw-r--r--
2024-04-17 20:28
pstats.pck
65.05
KB
-rw-r--r--
2017-09-19 12:02
pyclbr_input.py
648
B
-rw-r--r--
2024-04-17 20:28
pydoc_mod.py
461
B
-rw-r--r--
2024-04-17 20:28
pydocfodder.py
6.18
KB
-rw-r--r--
2024-04-17 20:28
pystone.py
7.22
KB
-rwxr-xr-x
2024-04-17 20:28
randv2_32.pck
7.34
KB
-rw-r--r--
2017-09-19 12:02
randv2_64.pck
7.19
KB
-rw-r--r--
2017-09-19 12:02
randv3.pck
7.82
KB
-rw-r--r--
2017-09-19 12:02
re_tests.py
31.06
KB
-rwxr-xr-x
2024-04-17 20:28
regrtest.py
63.54
KB
-rwxr-xr-x
2024-04-17 20:28
relimport.py
27
B
-rw-r--r--
2024-04-17 20:28
reperf.py
538
B
-rw-r--r--
2024-04-17 20:28
sample_doctest.py
1.02
KB
-rw-r--r--
2024-04-17 20:28
sample_doctest_no_docstrings.py
227
B
-rw-r--r--
2024-04-17 20:28
sample_doctest_no_doctests.py
269
B
-rw-r--r--
2024-04-17 20:28
script_helper.py
5.22
KB
-rw-r--r--
2024-04-17 20:28
selfsigned_pythontestdotnet.pem
956
B
-rw-r--r--
2017-09-19 12:02
seq_tests.py
13.49
KB
-rw-r--r--
2024-04-17 20:28
sgml_input.html
8.1
KB
-rw-r--r--
2017-09-19 12:02
sha256.pem
8.15
KB
-rw-r--r--
2017-09-19 12:02
sortperf.py
4.69
KB
-rw-r--r--
2024-04-17 20:28
ssl_cert.pem
867
B
-rw-r--r--
2017-09-19 12:02
ssl_key.passwd.pem
963
B
-rw-r--r--
2017-09-19 12:02
ssl_key.pem
916
B
-rw-r--r--
2017-09-19 12:02
ssl_servers.py
6.82
KB
-rw-r--r--
2024-04-17 20:28
string_tests.py
62.74
KB
-rw-r--r--
2024-04-17 20:28
test___all__.py
3.86
KB
-rw-r--r--
2024-04-17 20:28
test___future__.py
2.44
KB
-rw-r--r--
2024-04-17 20:28
test__locale.py
6.89
KB
-rw-r--r--
2024-04-17 20:28
test__osx_support.py
11.41
KB
-rw-r--r--
2024-04-17 20:28
test_abc.py
12.76
KB
-rw-r--r--
2024-04-17 20:28
test_abstract_numbers.py
1.49
KB
-rw-r--r--
2024-04-17 20:28
test_aifc.py
14.48
KB
-rw-r--r--
2024-04-17 20:28
test_argparse.py
158.6
KB
-rw-r--r--
2024-04-17 20:28
test_array.py
43.88
KB
-rw-r--r--
2024-04-17 20:28
test_ast.py
43.49
KB
-rw-r--r--
2024-04-17 20:28
test_asynchat.py
9.08
KB
-rw-r--r--
2024-04-17 20:28
test_asyncore.py
26.05
KB
-rw-r--r--
2024-04-17 20:28
test_atexit.py
3.53
KB
-rw-r--r--
2024-04-17 20:28
test_audioop.py
17.39
KB
-rw-r--r--
2024-04-17 20:28
test_augassign.py
7.44
KB
-rw-r--r--
2024-04-17 20:28
test_base64.py
14.34
KB
-rw-r--r--
2024-04-17 20:28
test_bigaddrspace.py
2.92
KB
-rw-r--r--
2024-04-17 20:28
test_bigmem.py
44.18
KB
-rw-r--r--
2024-04-17 20:28
test_binascii.py
9.94
KB
-rw-r--r--
2024-04-17 20:28
test_binhex.py
1.47
KB
-rw-r--r--
2024-04-17 20:28
test_binop.py
12.36
KB
-rw-r--r--
2024-04-17 20:28
test_bisect.py
13.65
KB
-rw-r--r--
2024-04-17 20:28
test_bool.py
11.81
KB
-rw-r--r--
2024-04-17 20:28
test_buffer.py
155.09
KB
-rw-r--r--
2024-04-17 20:28
test_bufio.py
2.54
KB
-rw-r--r--
2024-04-17 20:28
test_builtin.py
54.84
KB
-rw-r--r--
2024-04-17 20:28
test_bytes.py
52.86
KB
-rw-r--r--
2024-04-17 20:28
test_bz2.py
30.8
KB
-rw-r--r--
2024-04-17 20:28
test_calendar.py
38.7
KB
-rw-r--r--
2024-04-17 20:28
test_call.py
3.08
KB
-rw-r--r--
2024-04-17 20:28
test_capi.py
13.81
KB
-rw-r--r--
2024-04-17 20:28
test_cgi.py
17.34
KB
-rw-r--r--
2024-04-17 20:28
test_cgitb.py
2.49
KB
-rw-r--r--
2024-04-17 20:28
test_charmapcodec.py
1.75
KB
-rw-r--r--
2024-04-17 20:28
test_class.py
13.79
KB
-rw-r--r--
2024-04-17 20:28
test_cmath.py
20.38
KB
-rw-r--r--
2024-04-17 20:28
test_cmd.py
6.08
KB
-rw-r--r--
2024-04-17 20:28
test_cmd_line.py
15.35
KB
-rw-r--r--
2024-04-17 20:28
test_cmd_line_script.py
16.95
KB
-rw-r--r--
2024-04-17 20:28
test_code.py
3.54
KB
-rw-r--r--
2024-04-17 20:28
test_code_module.py
2.42
KB
-rw-r--r--
2024-04-17 20:28
test_codeccallbacks.py
33.17
KB
-rw-r--r--
2024-04-17 20:28
test_codecencodings_cn.py
3.38
KB
-rw-r--r--
2024-04-17 20:28
test_codecencodings_hk.py
775
B
-rw-r--r--
2024-04-17 20:28
test_codecencodings_iso2022.py
1.43
KB
-rw-r--r--
2024-04-17 20:28
test_codecencodings_jp.py
4.86
KB
-rw-r--r--
2024-04-17 20:28
test_codecencodings_kr.py
3.03
KB
-rw-r--r--
2024-04-17 20:28
test_codecencodings_tw.py
755
B
-rw-r--r--
2024-04-17 20:28
test_codecmaps_cn.py
930
B
-rw-r--r--
2024-04-17 20:28
test_codecmaps_hk.py
505
B
-rw-r--r--
2024-04-17 20:28
test_codecmaps_jp.py
1.88
KB
-rw-r--r--
2024-04-17 20:28
test_codecmaps_kr.py
1.34
KB
-rw-r--r--
2024-04-17 20:28
test_codecmaps_tw.py
880
B
-rw-r--r--
2024-04-17 20:28
test_codecs.py
96.02
KB
-rw-r--r--
2024-04-17 20:28
test_codeop.py
7.45
KB
-rw-r--r--
2024-04-17 20:28
test_coding.py
2.51
KB
-rw-r--r--
2024-04-17 20:28
test_collections.py
54.31
KB
-rw-r--r--
2024-04-17 20:28
test_colorsys.py
2.77
KB
-rw-r--r--
2024-04-17 20:28
test_compare.py
1.63
KB
-rw-r--r--
2024-04-17 20:28
test_compile.py
18.62
KB
-rw-r--r--
2024-04-17 20:28
test_compileall.py
15.73
KB
-rw-r--r--
2024-04-17 20:28
test_complex.py
27.09
KB
-rw-r--r--
2024-04-17 20:28
test_concurrent_futures.py
22.57
KB
-rw-r--r--
2024-04-17 20:28
test_configparser.py
69.26
KB
-rw-r--r--
2024-04-17 20:28
test_contains.py
2.58
KB
-rw-r--r--
2024-04-17 20:28
test_contextlib.py
21.39
KB
-rw-r--r--
2024-04-17 20:28
test_copy.py
21.9
KB
-rw-r--r--
2024-04-17 20:28
test_copyreg.py
4.12
KB
-rw-r--r--
2024-04-17 20:28
test_cprofile.py
5.32
KB
-rw-r--r--
2024-04-17 20:28
test_crashers.py
1.18
KB
-rw-r--r--
2024-04-17 20:28
test_crypt.py
1.24
KB
-rw-r--r--
2024-04-17 20:28
test_csv.py
40.9
KB
-rw-r--r--
2024-04-17 20:28
test_ctypes.py
400
B
-rw-r--r--
2024-04-17 20:28
test_curses.py
10.7
KB
-rw-r--r--
2024-04-17 20:28
test_datetime.py
1.81
KB
-rw-r--r--
2024-04-17 20:28
test_dbm.py
5.52
KB
-rw-r--r--
2024-04-17 20:28
test_dbm_dumb.py
5.49
KB
-rw-r--r--
2024-04-17 20:28
test_dbm_gnu.py
2.85
KB
-rw-r--r--
2024-04-17 20:28
test_dbm_ndbm.py
1.13
KB
-rw-r--r--
2024-04-17 20:28
test_decimal.py
197.66
KB
-rw-r--r--
2024-04-17 20:28
test_decorators.py
9.6
KB
-rw-r--r--
2024-04-17 20:28
test_defaultdict.py
5.94
KB
-rw-r--r--
2024-04-17 20:28
test_deque.py
25
KB
-rw-r--r--
2024-04-17 20:28
test_descr.py
156.64
KB
-rw-r--r--
2024-04-17 20:28
test_descrtut.py
11.5
KB
-rw-r--r--
2024-04-17 20:28
test_devpoll.py
3.49
KB
-rw-r--r--
2024-04-17 20:28
test_dict.py
31.11
KB
-rw-r--r--
2024-04-17 20:28
test_dictcomps.py
3.69
KB
-rw-r--r--
2024-04-17 20:28
test_dictviews.py
8.51
KB
-rw-r--r--
2024-04-17 20:28
test_difflib.py
10.78
KB
-rw-r--r--
2024-04-17 20:28
test_difflib_expect.html
100.86
KB
-rw-r--r--
2017-09-19 12:02
test_dis.py
12.33
KB
-rw-r--r--
2024-04-17 20:28
test_distutils.py
375
B
-rw-r--r--
2024-04-17 20:28
test_doctest.py
81.78
KB
-rw-r--r--
2024-04-17 20:28
test_doctest.txt
300
B
-rw-r--r--
2017-09-19 12:02
test_doctest2.py
2.3
KB
-rw-r--r--
2024-04-17 20:28
test_doctest2.txt
392
B
-rw-r--r--
2017-09-19 12:02
test_doctest3.txt
82
B
-rw-r--r--
2017-09-19 12:02
test_doctest4.txt
244
B
-rw-r--r--
2017-09-19 12:02
test_docxmlrpc.py
8.33
KB
-rw-r--r--
2024-04-17 20:28
test_dummy_thread.py
6.99
KB
-rw-r--r--
2024-04-17 20:28
test_dummy_threading.py
1.76
KB
-rw-r--r--
2024-04-17 20:28
test_dynamic.py
4.37
KB
-rw-r--r--
2024-04-17 20:28
test_enumerate.py
7.96
KB
-rw-r--r--
2024-04-17 20:28
test_eof.py
855
B
-rw-r--r--
2024-04-17 20:28
test_epoll.py
7.48
KB
-rw-r--r--
2024-04-17 20:28
test_errno.py
1.14
KB
-rw-r--r--
2024-04-17 20:28
test_exception_variations.py
3.94
KB
-rw-r--r--
2024-04-17 20:28
test_exceptions.py
33.47
KB
-rw-r--r--
2024-04-17 20:28
test_extcall.py
8.64
KB
-rw-r--r--
2024-04-17 20:28
test_faulthandler.py
17.69
KB
-rw-r--r--
2024-04-17 20:28
test_fcntl.py
4.4
KB
-rw-r--r--
2024-04-17 20:28
test_file.py
11.1
KB
-rw-r--r--
2024-04-17 20:28
test_file_eintr.py
10.09
KB
-rw-r--r--
2024-04-17 20:28
test_filecmp.py
5.5
KB
-rw-r--r--
2024-04-17 20:28
test_fileinput.py
33.37
KB
-rw-r--r--
2024-04-17 20:28
test_fileio.py
15.11
KB
-rw-r--r--
2024-04-17 20:28
test_float.py
57.46
KB
-rw-r--r--
2024-04-17 20:28
test_flufl.py
836
B
-rw-r--r--
2024-04-17 20:28
test_fnmatch.py
2.84
KB
-rw-r--r--
2024-04-17 20:28
test_fork1.py
3.69
KB
-rw-r--r--
2024-04-17 20:28
test_format.py
16.04
KB
-rw-r--r--
2024-04-17 20:28
test_fractions.py
24.45
KB
-rw-r--r--
2024-04-17 20:28
test_frozen.py
2.81
KB
-rw-r--r--
2024-04-17 20:28
test_ftplib.py
35.85
KB
-rw-r--r--
2024-04-17 20:28
test_funcattrs.py
12.7
KB
-rw-r--r--
2024-04-17 20:28
test_functools.py
29.11
KB
-rw-r--r--
2024-04-17 20:28
test_future.py
3.77
KB
-rw-r--r--
2024-04-17 20:28
test_future3.py
490
B
-rw-r--r--
2024-04-17 20:28
test_future4.py
105
B
-rw-r--r--
2024-04-17 20:28
test_future5.py
510
B
-rw-r--r--
2024-04-17 20:28
test_gc.py
29
KB
-rw-r--r--
2024-04-17 20:28
test_gdb.py
35.86
KB
-rw-r--r--
2024-04-17 20:28
test_generators.py
48.5
KB
-rw-r--r--
2024-04-17 20:28
test_genericpath.py
13.3
KB
-rw-r--r--
2024-04-17 20:28
test_genexps.py
7.12
KB
-rw-r--r--
2024-04-17 20:28
test_getargs2.py
23.74
KB
-rw-r--r--
2024-04-17 20:28
test_getopt.py
6.8
KB
-rw-r--r--
2024-04-17 20:28
test_getpass.py
5.95
KB
-rw-r--r--
2024-04-17 20:28
test_gettext.py
22.11
KB
-rw-r--r--
2024-04-17 20:28
test_glob.py
6.69
KB
-rw-r--r--
2024-04-17 20:28
test_global.py
1.25
KB
-rw-r--r--
2024-04-17 20:28
test_grammar.py
31.96
KB
-rw-r--r--
2024-04-17 20:28
test_grp.py
3.18
KB
-rw-r--r--
2024-04-17 20:28
test_gzip.py
17.79
KB
-rw-r--r--
2024-04-17 20:28
test_hash.py
7.25
KB
-rw-r--r--
2024-04-17 20:28
test_hashlib.py
18.79
KB
-rw-r--r--
2024-04-17 20:28
test_heapq.py
14.14
KB
-rw-r--r--
2024-04-17 20:28
test_hmac.py
17.23
KB
-rw-r--r--
2024-04-17 20:28
test_html.py
579
B
-rw-r--r--
2024-04-17 20:28
test_htmlparser.py
30.74
KB
-rw-r--r--
2024-04-17 20:28
test_http_cookiejar.py
70
KB
-rw-r--r--
2024-04-17 20:28
test_http_cookies.py
9.98
KB
-rw-r--r--
2024-04-17 20:28
test_httplib.py
37.59
KB
-rw-r--r--
2024-04-17 20:28
test_httpservers.py
26.35
KB
-rw-r--r--
2024-04-17 20:28
test_idle.py
1.3
KB
-rw-r--r--
2024-04-17 20:28
test_imaplib.py
15.67
KB
-rw-r--r--
2024-04-17 20:28
test_imghdr.py
4.31
KB
-rw-r--r--
2024-04-17 20:28
test_imp.py
18.89
KB
-rw-r--r--
2024-04-17 20:28
test_import.py
38.55
KB
-rw-r--r--
2024-04-17 20:28
test_importhooks.py
7.83
KB
-rw-r--r--
2024-04-17 20:28
test_index.py
8.31
KB
-rw-r--r--
2024-04-17 20:28
test_inspect.py
87.19
KB
-rw-r--r--
2024-04-17 20:28
test_int.py
15.07
KB
-rw-r--r--
2024-04-17 20:28
test_int_literal.py
6.96
KB
-rw-r--r--
2024-04-17 20:28
test_io.py
119.84
KB
-rw-r--r--
2024-04-17 20:28
test_ioctl.py
3.25
KB
-rw-r--r--
2024-04-17 20:28
test_ipaddress.py
72.5
KB
-rw-r--r--
2024-04-17 20:28
test_isinstance.py
9.93
KB
-rw-r--r--
2024-04-17 20:28
test_iter.py
28.5
KB
-rw-r--r--
2024-04-17 20:28
test_iterlen.py
7.4
KB
-rw-r--r--
2024-04-17 20:28
test_itertools.py
82.48
KB
-rw-r--r--
2024-04-17 20:28
test_keywordonlyarg.py
6.7
KB
-rw-r--r--
2024-04-17 20:28
test_kqueue.py
6.61
KB
-rw-r--r--
2024-04-17 20:28
test_largefile.py
6.4
KB
-rw-r--r--
2024-04-17 20:28
test_lib2to3.py
637
B
-rw-r--r--
2024-04-17 20:28
test_linecache.py
4.04
KB
-rw-r--r--
2024-04-17 20:28
test_list.py
4.12
KB
-rw-r--r--
2024-04-17 20:28
test_listcomps.py
3.76
KB
-rw-r--r--
2024-04-17 20:28
test_locale.py
18.35
KB
-rw-r--r--
2024-04-17 20:28
test_logging.py
133.5
KB
-rw-r--r--
2024-04-17 20:28
test_long.py
49.64
KB
-rw-r--r--
2024-04-17 20:28
test_longexp.py
308
B
-rw-r--r--
2024-04-17 20:28
test_lzma.py
69.44
KB
-rw-r--r--
2024-04-17 20:28
test_macpath.py
4.82
KB
-rw-r--r--
2024-04-17 20:28
test_macurl2path.py
1.8
KB
-rw-r--r--
2024-04-17 20:28
test_mailbox.py
90.48
KB
-rw-r--r--
2024-04-17 20:28
test_mailcap.py
9
KB
-rw-r--r--
2024-04-17 20:28
test_marshal.py
11.9
KB
-rw-r--r--
2024-04-17 20:28
test_math.py
45.89
KB
-rw-r--r--
2024-04-17 20:28
test_memoryio.py
28.07
KB
-rw-r--r--
2024-04-17 20:28
test_memoryview.py
15.41
KB
-rw-r--r--
2024-04-17 20:28
test_metaclass.py
6.2
KB
-rw-r--r--
2024-04-17 20:28
test_mimetypes.py
4.18
KB
-rw-r--r--
2024-04-17 20:28
test_minidom.py
61.08
KB
-rw-r--r--
2024-04-17 20:28
test_mmap.py
25.91
KB
-rw-r--r--
2024-04-17 20:28
test_module.py
5.82
KB
-rw-r--r--
2024-04-17 20:28
test_modulefinder.py
8.24
KB
-rw-r--r--
2024-04-17 20:28
test_msilib.py
1.43
KB
-rw-r--r--
2024-04-17 20:28
test_multibytecodec.py
11.27
KB
-rw-r--r--
2024-04-17 20:28
test_multiprocessing.py
108.06
KB
-rw-r--r--
2024-04-17 20:28
test_namespace_pkgs.py
9.19
KB
-rw-r--r--
2024-04-17 20:28
test_netrc.py
4.5
KB
-rw-r--r--
2024-04-17 20:28
test_nis.py
1.19
KB
-rw-r--r--
2024-04-17 20:28
test_nntplib.py
54.81
KB
-rw-r--r--
2024-04-17 20:28
test_normalization.py
3.15
KB
-rw-r--r--
2024-04-17 20:28
test_ntpath.py
15.13
KB
-rw-r--r--
2024-04-17 20:28
test_numeric_tower.py
7.27
KB
-rw-r--r--
2024-04-17 20:28
test_opcodes.py
2.61
KB
-rw-r--r--
2024-04-17 20:28
test_openpty.py
779
B
-rw-r--r--
2024-04-17 20:28
test_operator.py
16.59
KB
-rw-r--r--
2024-04-17 20:28
test_optparse.py
60.74
KB
-rw-r--r--
2024-04-17 20:28
test_os.py
80.83
KB
-rw-r--r--
2024-04-17 20:28
test_ossaudiodev.py
7.05
KB
-rw-r--r--
2024-04-17 20:28
test_osx_env.py
1.31
KB
-rw-r--r--
2024-04-17 20:28
test_parser.py
25.5
KB
-rw-r--r--
2024-04-17 20:28
test_pdb.py
21.79
KB
-rw-r--r--
2024-04-17 20:28
test_peepholer.py
12.47
KB
-rw-r--r--
2024-04-17 20:28
test_pep247.py
2.03
KB
-rw-r--r--
2024-04-17 20:28
test_pep263.py
2.74
KB
-rw-r--r--
2024-04-17 20:28
test_pep277.py
7.7
KB
-rw-r--r--
2024-04-17 20:28
test_pep292.py
9.32
KB
-rw-r--r--
2024-04-17 20:28
test_pep3120.py
1.24
KB
-rw-r--r--
2024-04-17 20:28
test_pep3131.py
977
B
-rw-r--r--
2024-04-17 20:28
test_pep3151.py
7.34
KB
-rw-r--r--
2024-04-17 20:28
test_pep352.py
6.98
KB
-rw-r--r--
2024-04-17 20:28
test_pep380.py
28.42
KB
-rw-r--r--
2024-04-17 20:28
test_pickle.py
4.41
KB
-rw-r--r--
2024-04-17 20:28
test_pickletools.py
643
B
-rw-r--r--
2024-04-17 20:28
test_pipes.py
6.32
KB
-rw-r--r--
2024-04-17 20:28
test_pkg.py
9.39
KB
-rw-r--r--
2024-04-17 20:28
test_pkgimport.py
2.71
KB
-rw-r--r--
2024-04-17 20:28
test_pkgutil.py
12.25
KB
-rw-r--r--
2024-04-17 20:28
test_platform.py
12.12
KB
-rw-r--r--
2024-04-17 20:28
test_plistlib.py
8.42
KB
-rw-r--r--
2024-04-17 20:28
test_poll.py
6.26
KB
-rw-r--r--
2024-04-17 20:28
test_popen.py
1.92
KB
-rw-r--r--
2024-04-17 20:28
test_poplib.py
11.67
KB
-rw-r--r--
2024-04-17 20:28
test_posix.py
47.3
KB
-rw-r--r--
2024-04-17 20:28
test_posixpath.py
25.56
KB
-rw-r--r--
2024-04-17 20:28
test_pow.py
4.49
KB
-rw-r--r--
2024-04-17 20:28
test_pprint.py
27.85
KB
-rw-r--r--
2024-04-17 20:28
test_print.py
4.57
KB
-rw-r--r--
2024-04-17 20:28
test_profile.py
6.84
KB
-rw-r--r--
2024-04-17 20:28
test_property.py
7.63
KB
-rw-r--r--
2024-04-17 20:28
test_pstats.py
1.26
KB
-rw-r--r--
2024-04-17 20:28
test_pty.py
11.12
KB
-rw-r--r--
2024-04-17 20:28
test_pulldom.py
12.17
KB
-rw-r--r--
2024-04-17 20:28
test_pwd.py
4.13
KB
-rw-r--r--
2024-04-17 20:28
test_py_compile.py
2.25
KB
-rw-r--r--
2024-04-17 20:28
test_pyclbr.py
6.8
KB
-rw-r--r--
2024-04-17 20:28
test_pydoc.py
23.26
KB
-rw-r--r--
2024-04-17 20:28
test_pyexpat.py
24.45
KB
-rw-r--r--
2024-04-17 20:28
test_queue.py
12.84
KB
-rw-r--r--
2024-04-17 20:28
test_quopri.py
7.53
KB
-rw-r--r--
2024-04-17 20:28
test_raise.py
11.08
KB
-rw-r--r--
2024-04-17 20:28
test_random.py
21.67
KB
-rw-r--r--
2024-04-17 20:28
test_range.py
22.62
KB
-rw-r--r--
2024-04-17 20:28
test_re.py
56.47
KB
-rw-r--r--
2024-04-17 20:28
test_readline.py
1.66
KB
-rw-r--r--
2024-04-17 20:28
test_reprlib.py
14.21
KB
-rw-r--r--
2024-04-17 20:28
test_resource.py
5.17
KB
-rw-r--r--
2024-04-17 20:28
test_richcmp.py
10.83
KB
-rw-r--r--
2024-04-17 20:28
test_rlcompleter.py
2.74
KB
-rw-r--r--
2024-04-17 20:28
test_robotparser.py
6.9
KB
-rw-r--r--
2024-04-17 20:28
test_runpy.py
23.24
KB
-rw-r--r--
2024-04-17 20:28
test_sax.py
33.48
KB
-rw-r--r--
2024-04-17 20:28
test_sched.py
6.48
KB
-rw-r--r--
2024-04-17 20:28
test_scope.py
19.59
KB
-rw-r--r--
2024-04-17 20:28
test_select.py
2.7
KB
-rw-r--r--
2024-04-17 20:28
test_set.py
62.31
KB
-rw-r--r--
2024-04-17 20:28
test_setcomps.py
3.7
KB
-rw-r--r--
2024-04-17 20:28
test_shelve.py
5.7
KB
-rw-r--r--
2024-04-17 20:28
test_shlex.py
5.77
KB
-rw-r--r--
2024-04-17 20:28
test_shutil.py
66.87
KB
-rw-r--r--
2024-04-17 20:28
test_signal.py
31.59
KB
-rw-r--r--
2024-04-17 20:28
test_site.py
17.32
KB
-rw-r--r--
2024-04-17 20:28
test_slice.py
4.33
KB
-rw-r--r--
2024-04-17 20:28
test_smtpd.py
22.06
KB
-rw-r--r--
2024-04-17 20:28
test_smtplib.py
33.58
KB
-rw-r--r--
2024-04-17 20:28
test_smtpnet.py
1.85
KB
-rw-r--r--
2024-04-17 20:28
test_sndhdr.py
869
B
-rw-r--r--
2024-04-17 20:28
test_socket.py
181.8
KB
-rw-r--r--
2024-04-17 20:28
test_socketserver.py
10.72
KB
-rw-r--r--
2024-04-17 20:28
test_sort.py
8.95
KB
-rw-r--r--
2024-04-17 20:28
test_sqlite.py
893
B
-rw-r--r--
2024-04-17 20:28
test_ssl.py
94.63
KB
-rw-r--r--
2024-04-17 20:28
test_startfile.py
1.21
KB
-rw-r--r--
2024-04-17 20:28
test_stat.py
6.29
KB
-rw-r--r--
2024-04-17 20:28
test_strftime.py
7.55
KB
-rw-r--r--
2024-04-17 20:28
test_string.py
6.11
KB
-rw-r--r--
2024-04-17 20:28
test_stringprep.py
3.12
KB
-rw-r--r--
2024-04-17 20:28
test_strlit.py
8.03
KB
-rw-r--r--
2024-04-17 20:28
test_strptime.py
25.84
KB
-rw-r--r--
2024-04-17 20:28
test_strtod.py
20.11
KB
-rw-r--r--
2024-04-17 20:28
test_struct.py
24.67
KB
-rw-r--r--
2024-04-17 20:28
test_structmembers.py
4.77
KB
-rw-r--r--
2024-04-17 20:28
test_structseq.py
3.96
KB
-rw-r--r--
2024-04-17 20:28
test_subprocess.py
96.46
KB
-rw-r--r--
2024-04-17 20:28
test_sunau.py
3.55
KB
-rw-r--r--
2024-04-17 20:28
test_sundry.py
2.12
KB
-rw-r--r--
2024-04-17 20:28
test_super.py
3.5
KB
-rw-r--r--
2024-04-17 20:28
test_support.py
10.03
KB
-rw-r--r--
2024-04-17 20:28
test_symtable.py
5.82
KB
-rw-r--r--
2024-04-17 20:28
test_syntax.py
17.64
KB
-rw-r--r--
2024-04-17 20:28
test_sys.py
33.13
KB
-rw-r--r--
2024-04-17 20:28
test_sys_setprofile.py
11.09
KB
-rw-r--r--
2024-04-17 20:28
test_sys_settrace.py
24.37
KB
-rw-r--r--
2024-04-17 20:28
test_sysconfig.py
15.75
KB
-rw-r--r--
2024-04-17 20:28
test_syslog.py
1.08
KB
-rw-r--r--
2024-04-17 20:28
test_tarfile.py
70.04
KB
-rw-r--r--
2024-04-17 20:28
test_tcl.py
20.19
KB
-rw-r--r--
2024-04-17 20:28
test_telnetlib.py
14.84
KB
-rw-r--r--
2024-04-17 20:28
test_tempfile.py
39.85
KB
-rw-r--r--
2024-04-17 20:28
test_textwrap.py
29.83
KB
-rw-r--r--
2024-04-17 20:28
test_thread.py
8.1
KB
-rw-r--r--
2024-04-17 20:28
test_threaded_import.py
8.12
KB
-rw-r--r--
2024-04-17 20:28
test_threadedtempfile.py
2.14
KB
-rw-r--r--
2024-04-17 20:28
test_threading.py
33.87
KB
-rw-r--r--
2024-04-17 20:28
test_threading_local.py
6.19
KB
-rw-r--r--
2024-04-17 20:28
test_threadsignals.py
8.88
KB
-rw-r--r--
2024-04-17 20:28
test_time.py
25.86
KB
-rw-r--r--
2024-04-17 20:28
test_timeit.py
10.83
KB
-rw-r--r--
2024-04-17 20:28
test_timeout.py
11.11
KB
-rw-r--r--
2024-04-17 20:28
test_tk.py
747
B
-rw-r--r--
2024-04-17 20:28
test_tokenize.py
47.22
KB
-rw-r--r--
2024-04-17 20:28
test_tools.py
12.48
KB
-rw-r--r--
2024-04-17 20:28
test_trace.py
14.48
KB
-rw-r--r--
2024-04-17 20:28
test_traceback.py
14.02
KB
-rw-r--r--
2024-04-17 20:28
test_ttk_guionly.py
1.05
KB
-rw-r--r--
2024-04-17 20:28
test_ttk_textonly.py
405
B
-rw-r--r--
2024-04-17 20:28
test_tuple.py
6.78
KB
-rw-r--r--
2024-04-17 20:28
test_typechecks.py
2.64
KB
-rw-r--r--
2024-04-17 20:28
test_types.py
41.34
KB
-rw-r--r--
2024-04-17 20:28
test_ucn.py
9.41
KB
-rw-r--r--
2024-04-17 20:28
test_unary.py
1.71
KB
-rw-r--r--
2024-04-17 20:28
test_unicode.py
104.9
KB
-rw-r--r--
2024-04-17 20:28
test_unicode_file.py
5.8
KB
-rw-r--r--
2024-04-17 20:28
test_unicodedata.py
12.06
KB
-rw-r--r--
2024-04-17 20:28
test_unittest.py
286
B
-rw-r--r--
2024-04-17 20:28
test_univnewlines.py
3.83
KB
-rw-r--r--
2024-04-17 20:28
test_unpack.py
2.56
KB
-rw-r--r--
2024-04-17 20:28
test_unpack_ex.py
4.04
KB
-rw-r--r--
2024-04-17 20:28
test_urllib.py
55.37
KB
-rw-r--r--
2024-04-17 20:28
test_urllib2.py
60.39
KB
-rw-r--r--
2024-04-17 20:28
test_urllib2_localnet.py
21.78
KB
-rw-r--r--
2024-04-17 20:28
test_urllib2net.py
12.94
KB
-rw-r--r--
2024-04-17 20:28
test_urllib_response.py
871
B
-rw-r--r--
2024-04-17 20:28
test_urllibnet.py
8.89
KB
-rw-r--r--
2024-04-17 20:28
test_urlparse.py
50.39
KB
-rw-r--r--
2024-04-17 20:28
test_userdict.py
6.32
KB
-rw-r--r--
2024-04-17 20:28
test_userlist.py
1.85
KB
-rw-r--r--
2024-04-17 20:28
test_userstring.py
1.44
KB
-rw-r--r--
2024-04-17 20:28
test_uu.py
6.71
KB
-rw-r--r--
2024-04-17 20:28
test_uuid.py
21.6
KB
-rw-r--r--
2024-04-17 20:28
test_venv.py
7.32
KB
-rw-r--r--
2024-04-17 20:28
test_wait3.py
1.2
KB
-rw-r--r--
2024-04-17 20:28
test_wait4.py
1.11
KB
-rw-r--r--
2024-04-17 20:28
test_warnings.py
32.76
KB
-rw-r--r--
2024-04-17 20:28
test_wave.py
4.39
KB
-rw-r--r--
2024-04-17 20:28
test_weakref.py
49.49
KB
-rw-r--r--
2024-04-17 20:28
test_weakset.py
15.18
KB
-rw-r--r--
2024-04-17 20:28
test_webbrowser.py
5.65
KB
-rw-r--r--
2024-04-17 20:28
test_winreg.py
19.99
KB
-rw-r--r--
2024-04-17 20:28
test_winsound.py
8.86
KB
-rw-r--r--
2024-04-17 20:28
test_with.py
25.88
KB
-rw-r--r--
2024-04-17 20:28
test_wsgiref.py
21.84
KB
-rw-r--r--
2024-04-17 20:28
test_xdrlib.py
1.56
KB
-rw-r--r--
2024-04-17 20:28
test_xml_dom_minicompat.py
2.91
KB
-rw-r--r--
2024-04-17 20:28
test_xml_etree.py
88.5
KB
-rw-r--r--
2024-04-17 20:28
test_xml_etree_c.py
2.53
KB
-rw-r--r--
2024-04-17 20:28
test_xmlrpc.py
41.85
KB
-rw-r--r--
2024-04-17 20:28
test_xmlrpc_net.py
1.89
KB
-rw-r--r--
2024-04-17 20:28
test_zipfile.py
65.66
KB
-rw-r--r--
2024-04-17 20:28
test_zipfile64.py
4.17
KB
-rw-r--r--
2024-04-17 20:28
test_zipimport.py
17
KB
-rw-r--r--
2024-04-17 20:28
test_zipimport_support.py
10.28
KB
-rw-r--r--
2024-04-17 20:28
test_zlib.py
26.14
KB
-rw-r--r--
2024-04-17 20:28
testcodec.py
1.02
KB
-rw-r--r--
2024-04-17 20:28
testtar.tar
425
KB
-rw-r--r--
2017-09-19 12:02
tf_inherit_check.py
578
B
-rw-r--r--
2024-04-17 20:28
threaded_import_hangers.py
1.45
KB
-rw-r--r--
2024-04-17 20:28
time_hashlib.py
2.82
KB
-rw-r--r--
2024-04-17 20:28
tokenize_tests-latin1-coding-cookie-and-utf8-bom-sig.txt
444
B
-rw-r--r--
2017-09-19 12:02
tokenize_tests-no-coding-cookie-and-utf8-bom-sig-only.txt
303
B
-rw-r--r--
2017-09-19 12:02
tokenize_tests-utf8-coding-cookie-and-no-utf8-bom-sig.txt
421
B
-rw-r--r--
2017-09-19 12:02
tokenize_tests-utf8-coding-cookie-and-utf8-bom-sig.txt
327
B
-rw-r--r--
2017-09-19 12:02
tokenize_tests.txt
2.65
KB
-rw-r--r--
2017-09-19 12:02
warning_tests.py
240
B
-rw-r--r--
2024-04-17 20:28
win_console_handler.py
1.38
KB
-rw-r--r--
2024-04-17 20:28
xmltests.py
499
B
-rw-r--r--
2024-04-17 20:28
zip_cp437_header.zip
270
B
-rw-r--r--
2017-09-19 12:02
zipdir.zip
374
B
-rw-r--r--
2017-09-19 12:02
Save
Rename
"""Test the arraymodule. Roger E. Masse """ import unittest from test import support import weakref import pickle import operator import io import math import struct import sys import warnings import array from array import _array_reconstructor as array_reconstructor try: # Try to determine availability of long long independently # of the array module under test struct.calcsize('@q') have_long_long = True except struct.error: have_long_long = False sizeof_wchar = array.array('u').itemsize class ArraySubclass(array.array): pass class ArraySubclassWithKwargs(array.array): def __init__(self, typecode, newarg=None): array.array.__init__(self) typecodes = "ubBhHiIlLfd" if have_long_long: typecodes += 'qQ' class BadConstructorTest(unittest.TestCase): def test_constructor(self): self.assertRaises(TypeError, array.array) self.assertRaises(TypeError, array.array, spam=42) self.assertRaises(TypeError, array.array, 'xx') self.assertRaises(ValueError, array.array, 'x') # Machine format codes. # # Search for "enum machine_format_code" in Modules/arraymodule.c to get the # authoritative values. UNKNOWN_FORMAT = -1 UNSIGNED_INT8 = 0 SIGNED_INT8 = 1 UNSIGNED_INT16_LE = 2 UNSIGNED_INT16_BE = 3 SIGNED_INT16_LE = 4 SIGNED_INT16_BE = 5 UNSIGNED_INT32_LE = 6 UNSIGNED_INT32_BE = 7 SIGNED_INT32_LE = 8 SIGNED_INT32_BE = 9 UNSIGNED_INT64_LE = 10 UNSIGNED_INT64_BE = 11 SIGNED_INT64_LE = 12 SIGNED_INT64_BE = 13 IEEE_754_FLOAT_LE = 14 IEEE_754_FLOAT_BE = 15 IEEE_754_DOUBLE_LE = 16 IEEE_754_DOUBLE_BE = 17 UTF16_LE = 18 UTF16_BE = 19 UTF32_LE = 20 UTF32_BE = 21 class ArrayReconstructorTest(unittest.TestCase): def test_error(self): self.assertRaises(TypeError, array_reconstructor, "", "b", 0, b"") self.assertRaises(TypeError, array_reconstructor, str, "b", 0, b"") self.assertRaises(TypeError, array_reconstructor, array.array, "b", '', b"") self.assertRaises(TypeError, array_reconstructor, array.array, "b", 0, "") self.assertRaises(ValueError, array_reconstructor, array.array, "?", 0, b"") self.assertRaises(ValueError, array_reconstructor, array.array, "b", UNKNOWN_FORMAT, b"") self.assertRaises(ValueError, array_reconstructor, array.array, "b", 22, b"") self.assertRaises(ValueError, array_reconstructor, array.array, "d", 16, b"a") def test_numbers(self): testcases = ( (['B', 'H', 'I', 'L'], UNSIGNED_INT8, '=BBBB', [0x80, 0x7f, 0, 0xff]), (['b', 'h', 'i', 'l'], SIGNED_INT8, '=bbb', [-0x80, 0x7f, 0]), (['H', 'I', 'L'], UNSIGNED_INT16_LE, '<HHHH', [0x8000, 0x7fff, 0, 0xffff]), (['H', 'I', 'L'], UNSIGNED_INT16_BE, '>HHHH', [0x8000, 0x7fff, 0, 0xffff]), (['h', 'i', 'l'], SIGNED_INT16_LE, '<hhh', [-0x8000, 0x7fff, 0]), (['h', 'i', 'l'], SIGNED_INT16_BE, '>hhh', [-0x8000, 0x7fff, 0]), (['I', 'L'], UNSIGNED_INT32_LE, '<IIII', [1<<31, (1<<31)-1, 0, (1<<32)-1]), (['I', 'L'], UNSIGNED_INT32_BE, '>IIII', [1<<31, (1<<31)-1, 0, (1<<32)-1]), (['i', 'l'], SIGNED_INT32_LE, '<iii', [-1<<31, (1<<31)-1, 0]), (['i', 'l'], SIGNED_INT32_BE, '>iii', [-1<<31, (1<<31)-1, 0]), (['L'], UNSIGNED_INT64_LE, '<QQQQ', [1<<31, (1<<31)-1, 0, (1<<32)-1]), (['L'], UNSIGNED_INT64_BE, '>QQQQ', [1<<31, (1<<31)-1, 0, (1<<32)-1]), (['l'], SIGNED_INT64_LE, '<qqq', [-1<<31, (1<<31)-1, 0]), (['l'], SIGNED_INT64_BE, '>qqq', [-1<<31, (1<<31)-1, 0]), # The following tests for INT64 will raise an OverflowError # when run on a 32-bit machine. The tests are simply skipped # in that case. (['L'], UNSIGNED_INT64_LE, '<QQQQ', [1<<63, (1<<63)-1, 0, (1<<64)-1]), (['L'], UNSIGNED_INT64_BE, '>QQQQ', [1<<63, (1<<63)-1, 0, (1<<64)-1]), (['l'], SIGNED_INT64_LE, '<qqq', [-1<<63, (1<<63)-1, 0]), (['l'], SIGNED_INT64_BE, '>qqq', [-1<<63, (1<<63)-1, 0]), (['f'], IEEE_754_FLOAT_LE, '<ffff', [16711938.0, float('inf'), float('-inf'), -0.0]), (['f'], IEEE_754_FLOAT_BE, '>ffff', [16711938.0, float('inf'), float('-inf'), -0.0]), (['d'], IEEE_754_DOUBLE_LE, '<dddd', [9006104071832581.0, float('inf'), float('-inf'), -0.0]), (['d'], IEEE_754_DOUBLE_BE, '>dddd', [9006104071832581.0, float('inf'), float('-inf'), -0.0]) ) for testcase in testcases: valid_typecodes, mformat_code, struct_fmt, values = testcase arraystr = struct.pack(struct_fmt, *values) for typecode in valid_typecodes: try: a = array.array(typecode, values) except OverflowError: continue # Skip this test case. b = array_reconstructor( array.array, typecode, mformat_code, arraystr) self.assertEqual(a, b, msg="{0!r} != {1!r}; testcase={2!r}".format(a, b, testcase)) def test_unicode(self): teststr = "Bonne Journ\xe9e \U0002030a\U00020347" testcases = ( (UTF16_LE, "UTF-16-LE"), (UTF16_BE, "UTF-16-BE"), (UTF32_LE, "UTF-32-LE"), (UTF32_BE, "UTF-32-BE") ) for testcase in testcases: mformat_code, encoding = testcase a = array.array('u', teststr) b = array_reconstructor( array.array, 'u', mformat_code, teststr.encode(encoding)) self.assertEqual(a, b, msg="{0!r} != {1!r}; testcase={2!r}".format(a, b, testcase)) class BaseTest: # Required class attributes (provided by subclasses # typecode: the typecode to test # example: an initializer usable in the constructor for this type # smallerexample: the same length as example, but smaller # biggerexample: the same length as example, but bigger # outside: An entry that is not in example # minitemsize: the minimum guaranteed itemsize def assertEntryEqual(self, entry1, entry2): self.assertEqual(entry1, entry2) def badtypecode(self): # Return a typecode that is different from our own return typecodes[(typecodes.index(self.typecode)+1) % len(typecodes)] def test_constructor(self): a = array.array(self.typecode) self.assertEqual(a.typecode, self.typecode) self.assertGreaterEqual(a.itemsize, self.minitemsize) self.assertRaises(TypeError, array.array, self.typecode, None) def test_len(self): a = array.array(self.typecode) a.append(self.example[0]) self.assertEqual(len(a), 1) a = array.array(self.typecode, self.example) self.assertEqual(len(a), len(self.example)) def test_buffer_info(self): a = array.array(self.typecode, self.example) self.assertRaises(TypeError, a.buffer_info, 42) bi = a.buffer_info() self.assertIsInstance(bi, tuple) self.assertEqual(len(bi), 2) self.assertIsInstance(bi[0], int) self.assertIsInstance(bi[1], int) self.assertEqual(bi[1], len(a)) def test_byteswap(self): if self.typecode == 'u': example = '\U00100100' else: example = self.example a = array.array(self.typecode, example) self.assertRaises(TypeError, a.byteswap, 42) if a.itemsize in (1, 2, 4, 8): b = array.array(self.typecode, example) b.byteswap() if a.itemsize==1: self.assertEqual(a, b) else: self.assertNotEqual(a, b) b.byteswap() self.assertEqual(a, b) def test_copy(self): import copy a = array.array(self.typecode, self.example) b = copy.copy(a) self.assertNotEqual(id(a), id(b)) self.assertEqual(a, b) def test_deepcopy(self): import copy a = array.array(self.typecode, self.example) b = copy.deepcopy(a) self.assertNotEqual(id(a), id(b)) self.assertEqual(a, b) def test_reduce_ex(self): a = array.array(self.typecode, self.example) for protocol in range(3): self.assertIs(a.__reduce_ex__(protocol)[0], array.array) for protocol in range(3, pickle.HIGHEST_PROTOCOL): self.assertIs(a.__reduce_ex__(protocol)[0], array_reconstructor) def test_pickle(self): for protocol in range(pickle.HIGHEST_PROTOCOL + 1): a = array.array(self.typecode, self.example) b = pickle.loads(pickle.dumps(a, protocol)) self.assertNotEqual(id(a), id(b)) self.assertEqual(a, b) a = ArraySubclass(self.typecode, self.example) a.x = 10 b = pickle.loads(pickle.dumps(a, protocol)) self.assertNotEqual(id(a), id(b)) self.assertEqual(a, b) self.assertEqual(a.x, b.x) self.assertEqual(type(a), type(b)) def test_pickle_for_empty_array(self): for protocol in range(pickle.HIGHEST_PROTOCOL + 1): a = array.array(self.typecode) b = pickle.loads(pickle.dumps(a, protocol)) self.assertNotEqual(id(a), id(b)) self.assertEqual(a, b) a = ArraySubclass(self.typecode) a.x = 10 b = pickle.loads(pickle.dumps(a, protocol)) self.assertNotEqual(id(a), id(b)) self.assertEqual(a, b) self.assertEqual(a.x, b.x) self.assertEqual(type(a), type(b)) def test_iterator_pickle(self): data = array.array(self.typecode, self.example) orgit = iter(data) d = pickle.dumps(orgit) it = pickle.loads(d) self.assertEqual(type(orgit), type(it)) self.assertEqual(list(it), list(data)) if len(data): it = pickle.loads(d) next(it) d = pickle.dumps(it) self.assertEqual(list(it), list(data)[1:]) def test_insert(self): a = array.array(self.typecode, self.example) a.insert(0, self.example[0]) self.assertEqual(len(a), 1+len(self.example)) self.assertEqual(a[0], a[1]) self.assertRaises(TypeError, a.insert) self.assertRaises(TypeError, a.insert, None) self.assertRaises(TypeError, a.insert, 0, None) a = array.array(self.typecode, self.example) a.insert(-1, self.example[0]) self.assertEqual( a, array.array( self.typecode, self.example[:-1] + self.example[:1] + self.example[-1:] ) ) a = array.array(self.typecode, self.example) a.insert(-1000, self.example[0]) self.assertEqual( a, array.array(self.typecode, self.example[:1] + self.example) ) a = array.array(self.typecode, self.example) a.insert(1000, self.example[0]) self.assertEqual( a, array.array(self.typecode, self.example + self.example[:1]) ) def test_tofromfile(self): a = array.array(self.typecode, 2*self.example) self.assertRaises(TypeError, a.tofile) support.unlink(support.TESTFN) f = open(support.TESTFN, 'wb') try: a.tofile(f) f.close() b = array.array(self.typecode) f = open(support.TESTFN, 'rb') self.assertRaises(TypeError, b.fromfile) b.fromfile(f, len(self.example)) self.assertEqual(b, array.array(self.typecode, self.example)) self.assertNotEqual(a, b) self.assertRaises(EOFError, b.fromfile, f, len(self.example)+1) self.assertEqual(a, b) f.close() finally: if not f.closed: f.close() support.unlink(support.TESTFN) def test_fromfile_ioerror(self): # Issue #5395: Check if fromfile raises a proper IOError # instead of EOFError. a = array.array(self.typecode) f = open(support.TESTFN, 'wb') try: self.assertRaises(IOError, a.fromfile, f, len(self.example)) finally: f.close() support.unlink(support.TESTFN) def test_filewrite(self): a = array.array(self.typecode, 2*self.example) f = open(support.TESTFN, 'wb') try: f.write(a) f.close() b = array.array(self.typecode) f = open(support.TESTFN, 'rb') b.fromfile(f, len(self.example)) self.assertEqual(b, array.array(self.typecode, self.example)) self.assertNotEqual(a, b) b.fromfile(f, len(self.example)) self.assertEqual(a, b) f.close() finally: if not f.closed: f.close() support.unlink(support.TESTFN) def test_tofromlist(self): a = array.array(self.typecode, 2*self.example) b = array.array(self.typecode) self.assertRaises(TypeError, a.tolist, 42) self.assertRaises(TypeError, b.fromlist) self.assertRaises(TypeError, b.fromlist, 42) self.assertRaises(TypeError, b.fromlist, [None]) b.fromlist(a.tolist()) self.assertEqual(a, b) def test_tofromstring(self): nb_warnings = 4 with warnings.catch_warnings(record=True) as r: warnings.filterwarnings("always", message=r"(to|from)string\(\) is deprecated", category=DeprecationWarning) a = array.array(self.typecode, 2*self.example) b = array.array(self.typecode) self.assertRaises(TypeError, a.tostring, 42) self.assertRaises(TypeError, b.fromstring) self.assertRaises(TypeError, b.fromstring, 42) b.fromstring(a.tostring()) self.assertEqual(a, b) if a.itemsize>1: self.assertRaises(ValueError, b.fromstring, "x") nb_warnings += 1 self.assertEqual(len(r), nb_warnings) def test_tofrombytes(self): a = array.array(self.typecode, 2*self.example) b = array.array(self.typecode) self.assertRaises(TypeError, a.tobytes, 42) self.assertRaises(TypeError, b.frombytes) self.assertRaises(TypeError, b.frombytes, 42) b.frombytes(a.tobytes()) c = array.array(self.typecode, bytearray(a.tobytes())) self.assertEqual(a, b) self.assertEqual(a, c) if a.itemsize>1: self.assertRaises(ValueError, b.frombytes, b"x") def test_fromarray(self): a = array.array(self.typecode, self.example) b = array.array(self.typecode, a) self.assertEqual(a, b) def test_repr(self): a = array.array(self.typecode, 2*self.example) self.assertEqual(a, eval(repr(a), {"array": array.array})) a = array.array(self.typecode) self.assertEqual(repr(a), "array('%s')" % self.typecode) def test_str(self): a = array.array(self.typecode, 2*self.example) str(a) def test_cmp(self): a = array.array(self.typecode, self.example) self.assertIs(a == 42, False) self.assertIs(a != 42, True) self.assertIs(a == a, True) self.assertIs(a != a, False) self.assertIs(a < a, False) self.assertIs(a <= a, True) self.assertIs(a > a, False) self.assertIs(a >= a, True) al = array.array(self.typecode, self.smallerexample) ab = array.array(self.typecode, self.biggerexample) self.assertIs(a == 2*a, False) self.assertIs(a != 2*a, True) self.assertIs(a < 2*a, True) self.assertIs(a <= 2*a, True) self.assertIs(a > 2*a, False) self.assertIs(a >= 2*a, False) self.assertIs(a == al, False) self.assertIs(a != al, True) self.assertIs(a < al, False) self.assertIs(a <= al, False) self.assertIs(a > al, True) self.assertIs(a >= al, True) self.assertIs(a == ab, False) self.assertIs(a != ab, True) self.assertIs(a < ab, True) self.assertIs(a <= ab, True) self.assertIs(a > ab, False) self.assertIs(a >= ab, False) def test_add(self): a = array.array(self.typecode, self.example) \ + array.array(self.typecode, self.example[::-1]) self.assertEqual( a, array.array(self.typecode, self.example + self.example[::-1]) ) b = array.array(self.badtypecode()) self.assertRaises(TypeError, a.__add__, b) self.assertRaises(TypeError, a.__add__, "bad") def test_iadd(self): a = array.array(self.typecode, self.example[::-1]) b = a a += array.array(self.typecode, 2*self.example) self.assertIs(a, b) self.assertEqual( a, array.array(self.typecode, self.example[::-1]+2*self.example) ) a = array.array(self.typecode, self.example) a += a self.assertEqual( a, array.array(self.typecode, self.example + self.example) ) b = array.array(self.badtypecode()) self.assertRaises(TypeError, a.__add__, b) self.assertRaises(TypeError, a.__iadd__, "bad") def test_mul(self): a = 5*array.array(self.typecode, self.example) self.assertEqual( a, array.array(self.typecode, 5*self.example) ) a = array.array(self.typecode, self.example)*5 self.assertEqual( a, array.array(self.typecode, self.example*5) ) a = 0*array.array(self.typecode, self.example) self.assertEqual( a, array.array(self.typecode) ) a = (-1)*array.array(self.typecode, self.example) self.assertEqual( a, array.array(self.typecode) ) a = 5 * array.array(self.typecode, self.example[:1]) self.assertEqual( a, array.array(self.typecode, [a[0]] * 5) ) self.assertRaises(TypeError, a.__mul__, "bad") def test_imul(self): a = array.array(self.typecode, self.example) b = a a *= 5 self.assertIs(a, b) self.assertEqual( a, array.array(self.typecode, 5*self.example) ) a *= 0 self.assertIs(a, b) self.assertEqual(a, array.array(self.typecode)) a *= 1000 self.assertIs(a, b) self.assertEqual(a, array.array(self.typecode)) a *= -1 self.assertIs(a, b) self.assertEqual(a, array.array(self.typecode)) a = array.array(self.typecode, self.example) a *= -1 self.assertEqual(a, array.array(self.typecode)) self.assertRaises(TypeError, a.__imul__, "bad") def test_getitem(self): a = array.array(self.typecode, self.example) self.assertEntryEqual(a[0], self.example[0]) self.assertEntryEqual(a[0], self.example[0]) self.assertEntryEqual(a[-1], self.example[-1]) self.assertEntryEqual(a[-1], self.example[-1]) self.assertEntryEqual(a[len(self.example)-1], self.example[-1]) self.assertEntryEqual(a[-len(self.example)], self.example[0]) self.assertRaises(TypeError, a.__getitem__) self.assertRaises(IndexError, a.__getitem__, len(self.example)) self.assertRaises(IndexError, a.__getitem__, -len(self.example)-1) def test_setitem(self): a = array.array(self.typecode, self.example) a[0] = a[-1] self.assertEntryEqual(a[0], a[-1]) a = array.array(self.typecode, self.example) a[0] = a[-1] self.assertEntryEqual(a[0], a[-1]) a = array.array(self.typecode, self.example) a[-1] = a[0] self.assertEntryEqual(a[0], a[-1]) a = array.array(self.typecode, self.example) a[-1] = a[0] self.assertEntryEqual(a[0], a[-1]) a = array.array(self.typecode, self.example) a[len(self.example)-1] = a[0] self.assertEntryEqual(a[0], a[-1]) a = array.array(self.typecode, self.example) a[-len(self.example)] = a[-1] self.assertEntryEqual(a[0], a[-1]) self.assertRaises(TypeError, a.__setitem__) self.assertRaises(TypeError, a.__setitem__, None) self.assertRaises(TypeError, a.__setitem__, 0, None) self.assertRaises( IndexError, a.__setitem__, len(self.example), self.example[0] ) self.assertRaises( IndexError, a.__setitem__, -len(self.example)-1, self.example[0] ) def test_delitem(self): a = array.array(self.typecode, self.example) del a[0] self.assertEqual( a, array.array(self.typecode, self.example[1:]) ) a = array.array(self.typecode, self.example) del a[-1] self.assertEqual( a, array.array(self.typecode, self.example[:-1]) ) a = array.array(self.typecode, self.example) del a[len(self.example)-1] self.assertEqual( a, array.array(self.typecode, self.example[:-1]) ) a = array.array(self.typecode, self.example) del a[-len(self.example)] self.assertEqual( a, array.array(self.typecode, self.example[1:]) ) self.assertRaises(TypeError, a.__delitem__) self.assertRaises(TypeError, a.__delitem__, None) self.assertRaises(IndexError, a.__delitem__, len(self.example)) self.assertRaises(IndexError, a.__delitem__, -len(self.example)-1) def test_getslice(self): a = array.array(self.typecode, self.example) self.assertEqual(a[:], a) self.assertEqual( a[1:], array.array(self.typecode, self.example[1:]) ) self.assertEqual( a[:1], array.array(self.typecode, self.example[:1]) ) self.assertEqual( a[:-1], array.array(self.typecode, self.example[:-1]) ) self.assertEqual( a[-1:], array.array(self.typecode, self.example[-1:]) ) self.assertEqual( a[-1:-1], array.array(self.typecode) ) self.assertEqual( a[2:1], array.array(self.typecode) ) self.assertEqual( a[1000:], array.array(self.typecode) ) self.assertEqual(a[-1000:], a) self.assertEqual(a[:1000], a) self.assertEqual( a[:-1000], array.array(self.typecode) ) self.assertEqual(a[-1000:1000], a) self.assertEqual( a[2000:1000], array.array(self.typecode) ) def test_extended_getslice(self): # Test extended slicing by comparing with list slicing # (Assumes list conversion works correctly, too) a = array.array(self.typecode, self.example) indices = (0, None, 1, 3, 19, 100, -1, -2, -31, -100) for start in indices: for stop in indices: # Everything except the initial 0 (invalid step) for step in indices[1:]: self.assertEqual(list(a[start:stop:step]), list(a)[start:stop:step]) def test_setslice(self): a = array.array(self.typecode, self.example) a[:1] = a self.assertEqual( a, array.array(self.typecode, self.example + self.example[1:]) ) a = array.array(self.typecode, self.example) a[:-1] = a self.assertEqual( a, array.array(self.typecode, self.example + self.example[-1:]) ) a = array.array(self.typecode, self.example) a[-1:] = a self.assertEqual( a, array.array(self.typecode, self.example[:-1] + self.example) ) a = array.array(self.typecode, self.example) a[1:] = a self.assertEqual( a, array.array(self.typecode, self.example[:1] + self.example) ) a = array.array(self.typecode, self.example) a[1:-1] = a self.assertEqual( a, array.array( self.typecode, self.example[:1] + self.example + self.example[-1:] ) ) a = array.array(self.typecode, self.example) a[1000:] = a self.assertEqual( a, array.array(self.typecode, 2*self.example) ) a = array.array(self.typecode, self.example) a[-1000:] = a self.assertEqual( a, array.array(self.typecode, self.example) ) a = array.array(self.typecode, self.example) a[:1000] = a self.assertEqual( a, array.array(self.typecode, self.example) ) a = array.array(self.typecode, self.example) a[:-1000] = a self.assertEqual( a, array.array(self.typecode, 2*self.example) ) a = array.array(self.typecode, self.example) a[1:0] = a self.assertEqual( a, array.array(self.typecode, self.example[:1] + self.example + self.example[1:]) ) a = array.array(self.typecode, self.example) a[2000:1000] = a self.assertEqual( a, array.array(self.typecode, 2*self.example) ) a = array.array(self.typecode, self.example) self.assertRaises(TypeError, a.__setitem__, slice(0, 0), None) self.assertRaises(TypeError, a.__setitem__, slice(0, 1), None) b = array.array(self.badtypecode()) self.assertRaises(TypeError, a.__setitem__, slice(0, 0), b) self.assertRaises(TypeError, a.__setitem__, slice(0, 1), b) def test_extended_set_del_slice(self): indices = (0, None, 1, 3, 19, 100, -1, -2, -31, -100) for start in indices: for stop in indices: # Everything except the initial 0 (invalid step) for step in indices[1:]: a = array.array(self.typecode, self.example) L = list(a) # Make sure we have a slice of exactly the right length, # but with (hopefully) different data. data = L[start:stop:step] data.reverse() L[start:stop:step] = data a[start:stop:step] = array.array(self.typecode, data) self.assertEqual(a, array.array(self.typecode, L)) del L[start:stop:step] del a[start:stop:step] self.assertEqual(a, array.array(self.typecode, L)) def test_index(self): example = 2*self.example a = array.array(self.typecode, example) self.assertRaises(TypeError, a.index) for x in example: self.assertEqual(a.index(x), example.index(x)) self.assertRaises(ValueError, a.index, None) self.assertRaises(ValueError, a.index, self.outside) def test_count(self): example = 2*self.example a = array.array(self.typecode, example) self.assertRaises(TypeError, a.count) for x in example: self.assertEqual(a.count(x), example.count(x)) self.assertEqual(a.count(self.outside), 0) self.assertEqual(a.count(None), 0) def test_remove(self): for x in self.example: example = 2*self.example a = array.array(self.typecode, example) pos = example.index(x) example2 = example[:pos] + example[pos+1:] a.remove(x) self.assertEqual(a, array.array(self.typecode, example2)) a = array.array(self.typecode, self.example) self.assertRaises(ValueError, a.remove, self.outside) self.assertRaises(ValueError, a.remove, None) def test_pop(self): a = array.array(self.typecode) self.assertRaises(IndexError, a.pop) a = array.array(self.typecode, 2*self.example) self.assertRaises(TypeError, a.pop, 42, 42) self.assertRaises(TypeError, a.pop, None) self.assertRaises(IndexError, a.pop, len(a)) self.assertRaises(IndexError, a.pop, -len(a)-1) self.assertEntryEqual(a.pop(0), self.example[0]) self.assertEqual( a, array.array(self.typecode, self.example[1:]+self.example) ) self.assertEntryEqual(a.pop(1), self.example[2]) self.assertEqual( a, array.array(self.typecode, self.example[1:2]+self.example[3:]+self.example) ) self.assertEntryEqual(a.pop(0), self.example[1]) self.assertEntryEqual(a.pop(), self.example[-1]) self.assertEqual( a, array.array(self.typecode, self.example[3:]+self.example[:-1]) ) def test_reverse(self): a = array.array(self.typecode, self.example) self.assertRaises(TypeError, a.reverse, 42) a.reverse() self.assertEqual( a, array.array(self.typecode, self.example[::-1]) ) def test_extend(self): a = array.array(self.typecode, self.example) self.assertRaises(TypeError, a.extend) a.extend(array.array(self.typecode, self.example[::-1])) self.assertEqual( a, array.array(self.typecode, self.example+self.example[::-1]) ) a = array.array(self.typecode, self.example) a.extend(a) self.assertEqual( a, array.array(self.typecode, self.example+self.example) ) b = array.array(self.badtypecode()) self.assertRaises(TypeError, a.extend, b) a = array.array(self.typecode, self.example) a.extend(self.example[::-1]) self.assertEqual( a, array.array(self.typecode, self.example+self.example[::-1]) ) def test_constructor_with_iterable_argument(self): a = array.array(self.typecode, iter(self.example)) b = array.array(self.typecode, self.example) self.assertEqual(a, b) # non-iterable argument self.assertRaises(TypeError, array.array, self.typecode, 10) # pass through errors raised in __iter__ class A: def __iter__(self): raise UnicodeError self.assertRaises(UnicodeError, array.array, self.typecode, A()) # pass through errors raised in next() def B(): raise UnicodeError yield None self.assertRaises(UnicodeError, array.array, self.typecode, B()) def test_coveritertraverse(self): try: import gc except ImportError: self.skipTest('gc module not available') a = array.array(self.typecode) l = [iter(a)] l.append(l) gc.collect() def test_buffer(self): a = array.array(self.typecode, self.example) m = memoryview(a) expected = m.tobytes() self.assertEqual(a.tobytes(), expected) self.assertEqual(a.tobytes()[0], expected[0]) # Resizing is forbidden when there are buffer exports. # For issue 4509, we also check after each error that # the array was not modified. self.assertRaises(BufferError, a.append, a[0]) self.assertEqual(m.tobytes(), expected) self.assertRaises(BufferError, a.extend, a[0:1]) self.assertEqual(m.tobytes(), expected) self.assertRaises(BufferError, a.remove, a[0]) self.assertEqual(m.tobytes(), expected) self.assertRaises(BufferError, a.pop, 0) self.assertEqual(m.tobytes(), expected) self.assertRaises(BufferError, a.fromlist, a.tolist()) self.assertEqual(m.tobytes(), expected) self.assertRaises(BufferError, a.frombytes, a.tobytes()) self.assertEqual(m.tobytes(), expected) if self.typecode == 'u': self.assertRaises(BufferError, a.fromunicode, a.tounicode()) self.assertEqual(m.tobytes(), expected) self.assertRaises(BufferError, operator.imul, a, 2) self.assertEqual(m.tobytes(), expected) self.assertRaises(BufferError, operator.imul, a, 0) self.assertEqual(m.tobytes(), expected) self.assertRaises(BufferError, operator.setitem, a, slice(0, 0), a) self.assertEqual(m.tobytes(), expected) self.assertRaises(BufferError, operator.delitem, a, 0) self.assertEqual(m.tobytes(), expected) self.assertRaises(BufferError, operator.delitem, a, slice(0, 1)) self.assertEqual(m.tobytes(), expected) def test_weakref(self): s = array.array(self.typecode, self.example) p = weakref.proxy(s) self.assertEqual(p.tobytes(), s.tobytes()) s = None self.assertRaises(ReferenceError, len, p) @unittest.skipUnless(hasattr(sys, 'getrefcount'), 'test needs sys.getrefcount()') def test_bug_782369(self): for i in range(10): b = array.array('B', range(64)) rc = sys.getrefcount(10) for i in range(10): b = array.array('B', range(64)) self.assertEqual(rc, sys.getrefcount(10)) def test_subclass_with_kwargs(self): # SF bug #1486663 -- this used to erroneously raise a TypeError ArraySubclassWithKwargs('b', newarg=1) def test_create_from_bytes(self): # XXX This test probably needs to be moved in a subclass or # generalized to use self.typecode. a = array.array('H', b"1234") self.assertEqual(len(a) * a.itemsize, 4) @support.cpython_only def test_sizeof_with_buffer(self): a = array.array(self.typecode, self.example) basesize = support.calcvobjsize('Pn2Pi') buffer_size = a.buffer_info()[1] * a.itemsize support.check_sizeof(self, a, basesize + buffer_size) @support.cpython_only def test_sizeof_without_buffer(self): a = array.array(self.typecode) basesize = support.calcvobjsize('Pn2Pi') support.check_sizeof(self, a, basesize) class StringTest(BaseTest): def test_setitem(self): super().test_setitem() a = array.array(self.typecode, self.example) self.assertRaises(TypeError, a.__setitem__, 0, self.example[:2]) class UnicodeTest(StringTest, unittest.TestCase): typecode = 'u' example = '\x01\u263a\x00\ufeff' smallerexample = '\x01\u263a\x00\ufefe' biggerexample = '\x01\u263a\x01\ufeff' outside = str('\x33') minitemsize = 2 def test_unicode(self): self.assertRaises(TypeError, array.array, 'b', 'foo') a = array.array('u', '\xa0\xc2\u1234') a.fromunicode(' ') a.fromunicode('') a.fromunicode('') a.fromunicode('\x11abc\xff\u1234') s = a.tounicode() self.assertEqual(s, '\xa0\xc2\u1234 \x11abc\xff\u1234') self.assertEqual(a.itemsize, sizeof_wchar) s = '\x00="\'a\\b\x80\xff\u0000\u0001\u1234' a = array.array('u', s) self.assertEqual( repr(a), "array('u', '\\x00=\"\\'a\\\\b\\x80\xff\\x00\\x01\u1234')") self.assertRaises(TypeError, a.fromunicode) def test_issue17223(self): # this used to crash if sizeof_wchar == 4: # U+FFFFFFFF is an invalid code point in Unicode 6.0 invalid_str = b'\xff\xff\xff\xff' else: # PyUnicode_FromUnicode() cannot fail with 16-bit wchar_t self.skipTest("specific to 32-bit wchar_t") a = array.array('u', invalid_str) self.assertRaises(ValueError, a.tounicode) self.assertRaises(ValueError, str, a) class NumberTest(BaseTest): def test_extslice(self): a = array.array(self.typecode, range(5)) self.assertEqual(a[::], a) self.assertEqual(a[::2], array.array(self.typecode, [0,2,4])) self.assertEqual(a[1::2], array.array(self.typecode, [1,3])) self.assertEqual(a[::-1], array.array(self.typecode, [4,3,2,1,0])) self.assertEqual(a[::-2], array.array(self.typecode, [4,2,0])) self.assertEqual(a[3::-2], array.array(self.typecode, [3,1])) self.assertEqual(a[-100:100:], a) self.assertEqual(a[100:-100:-1], a[::-1]) self.assertEqual(a[-100:100:2], array.array(self.typecode, [0,2,4])) self.assertEqual(a[1000:2000:2], array.array(self.typecode, [])) self.assertEqual(a[-1000:-2000:-2], array.array(self.typecode, [])) def test_delslice(self): a = array.array(self.typecode, range(5)) del a[::2] self.assertEqual(a, array.array(self.typecode, [1,3])) a = array.array(self.typecode, range(5)) del a[1::2] self.assertEqual(a, array.array(self.typecode, [0,2,4])) a = array.array(self.typecode, range(5)) del a[1::-2] self.assertEqual(a, array.array(self.typecode, [0,2,3,4])) a = array.array(self.typecode, range(10)) del a[::1000] self.assertEqual(a, array.array(self.typecode, [1,2,3,4,5,6,7,8,9])) # test issue7788 a = array.array(self.typecode, range(10)) del a[9::1<<333] def test_assignment(self): a = array.array(self.typecode, range(10)) a[::2] = array.array(self.typecode, [42]*5) self.assertEqual(a, array.array(self.typecode, [42, 1, 42, 3, 42, 5, 42, 7, 42, 9])) a = array.array(self.typecode, range(10)) a[::-4] = array.array(self.typecode, [10]*3) self.assertEqual(a, array.array(self.typecode, [0, 10, 2, 3, 4, 10, 6, 7, 8 ,10])) a = array.array(self.typecode, range(4)) a[::-1] = a self.assertEqual(a, array.array(self.typecode, [3, 2, 1, 0])) a = array.array(self.typecode, range(10)) b = a[:] c = a[:] ins = array.array(self.typecode, range(2)) a[2:3] = ins b[slice(2,3)] = ins c[2:3:] = ins def test_iterationcontains(self): a = array.array(self.typecode, range(10)) self.assertEqual(list(a), list(range(10))) b = array.array(self.typecode, [20]) self.assertEqual(a[-1] in a, True) self.assertEqual(b[0] not in a, True) def check_overflow(self, lower, upper): # method to be used by subclasses # should not overflow assigning lower limit a = array.array(self.typecode, [lower]) a[0] = lower # should overflow assigning less than lower limit self.assertRaises(OverflowError, array.array, self.typecode, [lower-1]) self.assertRaises(OverflowError, a.__setitem__, 0, lower-1) # should not overflow assigning upper limit a = array.array(self.typecode, [upper]) a[0] = upper # should overflow assigning more than upper limit self.assertRaises(OverflowError, array.array, self.typecode, [upper+1]) self.assertRaises(OverflowError, a.__setitem__, 0, upper+1) def test_subclassing(self): typecode = self.typecode class ExaggeratingArray(array.array): __slots__ = ['offset'] def __new__(cls, typecode, data, offset): return array.array.__new__(cls, typecode, data) def __init__(self, typecode, data, offset): self.offset = offset def __getitem__(self, i): return array.array.__getitem__(self, i) + self.offset a = ExaggeratingArray(self.typecode, [3, 6, 7, 11], 4) self.assertEntryEqual(a[0], 7) self.assertRaises(AttributeError, setattr, a, "color", "blue") def test_frombytearray(self): a = array.array('b', range(10)) b = array.array(self.typecode, a) self.assertEqual(a, b) class SignedNumberTest(NumberTest): example = [-1, 0, 1, 42, 0x7f] smallerexample = [-1, 0, 1, 42, 0x7e] biggerexample = [-1, 0, 1, 43, 0x7f] outside = 23 def test_overflow(self): a = array.array(self.typecode) lower = -1 * int(pow(2, a.itemsize * 8 - 1)) upper = int(pow(2, a.itemsize * 8 - 1)) - 1 self.check_overflow(lower, upper) class UnsignedNumberTest(NumberTest): example = [0, 1, 17, 23, 42, 0xff] smallerexample = [0, 1, 17, 23, 42, 0xfe] biggerexample = [0, 1, 17, 23, 43, 0xff] outside = 0xaa def test_overflow(self): a = array.array(self.typecode) lower = 0 upper = int(pow(2, a.itemsize * 8)) - 1 self.check_overflow(lower, upper) def test_bytes_extend(self): s = bytes(self.example) a = array.array(self.typecode, self.example) a.extend(s) self.assertEqual( a, array.array(self.typecode, self.example+self.example) ) a = array.array(self.typecode, self.example) a.extend(bytearray(reversed(s))) self.assertEqual( a, array.array(self.typecode, self.example+self.example[::-1]) ) class ByteTest(SignedNumberTest, unittest.TestCase): typecode = 'b' minitemsize = 1 class UnsignedByteTest(UnsignedNumberTest, unittest.TestCase): typecode = 'B' minitemsize = 1 class ShortTest(SignedNumberTest, unittest.TestCase): typecode = 'h' minitemsize = 2 class UnsignedShortTest(UnsignedNumberTest, unittest.TestCase): typecode = 'H' minitemsize = 2 class IntTest(SignedNumberTest, unittest.TestCase): typecode = 'i' minitemsize = 2 class UnsignedIntTest(UnsignedNumberTest, unittest.TestCase): typecode = 'I' minitemsize = 2 class LongTest(SignedNumberTest, unittest.TestCase): typecode = 'l' minitemsize = 4 class UnsignedLongTest(UnsignedNumberTest, unittest.TestCase): typecode = 'L' minitemsize = 4 @unittest.skipIf(not have_long_long, 'need long long support') class LongLongTest(SignedNumberTest, unittest.TestCase): typecode = 'q' minitemsize = 8 @unittest.skipIf(not have_long_long, 'need long long support') class UnsignedLongLongTest(UnsignedNumberTest, unittest.TestCase): typecode = 'Q' minitemsize = 8 class FPTest(NumberTest): example = [-42.0, 0, 42, 1e5, -1e10] smallerexample = [-42.0, 0, 42, 1e5, -2e10] biggerexample = [-42.0, 0, 42, 1e5, 1e10] outside = 23 def assertEntryEqual(self, entry1, entry2): self.assertAlmostEqual(entry1, entry2) def test_byteswap(self): a = array.array(self.typecode, self.example) self.assertRaises(TypeError, a.byteswap, 42) if a.itemsize in (1, 2, 4, 8): b = array.array(self.typecode, self.example) b.byteswap() if a.itemsize==1: self.assertEqual(a, b) else: # On alphas treating the byte swapped bit patters as # floats/doubles results in floating point exceptions # => compare the 8bit string values instead self.assertNotEqual(a.tobytes(), b.tobytes()) b.byteswap() self.assertEqual(a, b) class FloatTest(FPTest, unittest.TestCase): typecode = 'f' minitemsize = 4 class DoubleTest(FPTest, unittest.TestCase): typecode = 'd' minitemsize = 8 def test_alloc_overflow(self): from sys import maxsize a = array.array('d', [-1]*65536) try: a *= maxsize//65536 + 1 except MemoryError: pass else: self.fail("Array of size > maxsize created - MemoryError expected") b = array.array('d', [ 2.71828183, 3.14159265, -1]) try: b * (maxsize//3 + 1) except MemoryError: pass else: self.fail("Array of size > maxsize created - MemoryError expected") if __name__ == "__main__": unittest.main()