Skip to content
Projeler
Gruplar
Parçacıklar
Yardım
Yükleniyor...
Oturum aç / Kaydol
Gezinmeyi değiştir
C
cpython
Proje
Proje
Ayrıntılar
Etkinlik
Cycle Analytics
Depo (repository)
Depo (repository)
Dosyalar
Kayıtlar (commit)
Dallar (branch)
Etiketler
Katkıda bulunanlar
Grafik
Karşılaştır
Grafikler
Konular (issue)
0
Konular (issue)
0
Liste
Pano
Etiketler
Kilometre Taşları
Birleştirme (merge) Talepleri
0
Birleştirme (merge) Talepleri
0
CI / CD
CI / CD
İş akışları (pipeline)
İşler
Zamanlamalar
Grafikler
Paketler
Paketler
Wiki
Wiki
Parçacıklar
Parçacıklar
Üyeler
Üyeler
Collapse sidebar
Close sidebar
Etkinlik
Grafik
Grafikler
Yeni bir konu (issue) oluştur
İşler
Kayıtlar (commit)
Konu (issue) Panoları
Kenar çubuğunu aç
Batuhan Osman TASKAYA
cpython
Commits
3a3d8ea4
Kaydet (Commit)
3a3d8ea4
authored
Eki 28, 2006
tarafından
Walter Dörwald
Dosyalara gözat
Seçenekler
Dosyalara Gözat
İndir
Eposta Yamaları
Sade Fark
Port test_bufio to unittest.
üst
27562783
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
61 additions
and
55 deletions
+61
-55
test_bufio.py
Lib/test/test_bufio.py
+61
-55
No files found.
Lib/test/test_bufio.py
Dosyayı görüntüle @
3a3d8ea4
from
test.test_support
import
verify
,
TestFailed
,
TESTFN
import
unittest
from
test
import
test_support
# Simple test to ensure that optimizations in fileobject.c deliver
# the expected results. For best testing, run this under a debug-build
# Python too (to exercise asserts in the C code).
# Repeat string 'pattern' as often as needed to reach total length
# 'length'. Then call try_one with that string, a string one larger
# than that, and a string one smaller than that. The main driver
# feeds this all small sizes and various powers of 2, so we exercise
# all likely stdio buffer sizes, and "off by one" errors on both
# sides.
def
drive_one
(
pattern
,
length
):
q
,
r
=
divmod
(
length
,
len
(
pattern
))
teststring
=
pattern
*
q
+
pattern
[:
r
]
verify
(
len
(
teststring
)
==
length
)
try_one
(
teststring
)
try_one
(
teststring
+
"x"
)
try_one
(
teststring
[:
-
1
])
# Write s + "\n" + s to file, then open it and ensure that successive
# .readline()s deliver what we wrote.
def
try_one
(
s
):
# Since C doesn't guarantee we can write/read arbitrary bytes in text
# files, use binary mode.
f
=
open
(
TESTFN
,
"wb"
)
# write once with \n and once without
f
.
write
(
s
)
f
.
write
(
"
\n
"
)
f
.
write
(
s
)
f
.
close
()
f
=
open
(
TESTFN
,
"rb"
)
line
=
f
.
readline
()
if
line
!=
s
+
"
\n
"
:
raise
TestFailed
(
"Expected
%
r got
%
r"
%
(
s
+
"
\n
"
,
line
))
line
=
f
.
readline
()
if
line
!=
s
:
raise
TestFailed
(
"Expected
%
r got
%
r"
%
(
s
,
line
))
line
=
f
.
readline
()
if
line
:
raise
TestFailed
(
"Expected EOF but got
%
r"
%
line
)
f
.
close
()
# A pattern with prime length, to avoid simple relationships with
# stdio buffer sizes.
primepat
=
"1234567890
\00\01\02\03\04\05\06
"
nullpat
=
"
\0
"
*
1000
try
:
for
size
in
range
(
1
,
257
)
+
[
512
,
1000
,
1024
,
2048
,
4096
,
8192
,
10000
,
16384
,
32768
,
65536
,
1000000
]:
drive_one
(
primepat
,
size
)
drive_one
(
nullpat
,
size
)
finally
:
try
:
import
os
os
.
unlink
(
TESTFN
)
except
:
pass
lengths
=
range
(
1
,
257
)
+
[
512
,
1000
,
1024
,
2048
,
4096
,
8192
,
10000
,
16384
,
32768
,
65536
,
1000000
]
class
BufferSizeTest
(
unittest
.
TestCase
):
def
try_one
(
self
,
s
):
# Write s + "\n" + s to file, then open it and ensure that successive
# .readline()s deliver what we wrote.
# Since C doesn't guarantee we can write/read arbitrary bytes in text
# files, use binary mode.
f
=
open
(
test_support
.
TESTFN
,
"wb"
)
try
:
# write once with \n and once without
f
.
write
(
s
)
f
.
write
(
"
\n
"
)
f
.
write
(
s
)
f
.
close
()
f
=
open
(
test_support
.
TESTFN
,
"rb"
)
line
=
f
.
readline
()
self
.
assertEqual
(
line
,
s
+
"
\n
"
)
line
=
f
.
readline
()
self
.
assertEqual
(
line
,
s
)
line
=
f
.
readline
()
self
.
assert_
(
not
line
)
# Must be at EOF
f
.
close
()
finally
:
try
:
import
os
os
.
unlink
(
test_support
.
TESTFN
)
except
:
pass
def
drive_one
(
self
,
pattern
):
for
length
in
lengths
:
# Repeat string 'pattern' as often as needed to reach total length
# 'length'. Then call try_one with that string, a string one larger
# than that, and a string one smaller than that. Try this with all
# small sizes and various powers of 2, so we exercise all likely
# stdio buffer sizes, and "off by one" errors on both sides.
q
,
r
=
divmod
(
length
,
len
(
pattern
))
teststring
=
pattern
*
q
+
pattern
[:
r
]
self
.
assertEqual
(
len
(
teststring
),
length
)
self
.
try_one
(
teststring
)
self
.
try_one
(
teststring
+
"x"
)
self
.
try_one
(
teststring
[:
-
1
])
def
test_primepat
(
self
):
# A pattern with prime length, to avoid simple relationships with
# stdio buffer sizes.
self
.
drive_one
(
"1234567890
\00\01\02\03\04\05\06
"
)
def
test_nullpat
(
self
):
self
.
drive_one
(
"
\0
"
*
1000
)
def
test_main
():
test_support
.
run_unittest
(
BufferSizeTest
)
if
__name__
==
"__main__"
:
test_main
()
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment