Whole lotta changes.

This commit is contained in:
Guido van Rossum 1997-04-02 06:13:34 +00:00
parent d69a84b01e
commit 228b8e88bc
52 changed files with 2276 additions and 434 deletions

View File

@ -191,11 +191,6 @@ def executable(path):
def test(HandlerClass = CGIHTTPRequestHandler,
ServerClass = BaseHTTPServer.HTTPServer):
import sys
if sys.argv[1:2] == ['-r']:
db = MyArchive()
db.regenindices()
return
SimpleHTTPServer.test(HandlerClass, ServerClass)

View File

@ -265,9 +265,9 @@ class AbstractFormatter:
class NullWriter:
"""Minimal writer interface to use in testing.
"""
"""Minimal writer interface to use in testing & inheritance."""
def __init__(self): pass
def flush(self): pass
def new_alignment(self, align): pass
def new_font(self, font): pass
def new_margin(self, margin, level): pass

View File

@ -26,15 +26,20 @@ def isabs(s):
return s[:1] == '/'
# Join two pathnames.
# Ignore the first part if the second part is absolute.
# Join pathnames.
# Ignore the previous parts if a part is absolute.
# Insert a '/' unless the first part is empty or already ends in '/'.
def join(a, b):
if b[:1] == '/': return b
if a == '' or a[-1:] == '/': return a + b
# Note: join('x', '') returns 'x/'; is this what we want?
return a + '/' + b
def join(a, *p):
path = a
for b in p:
if b[:1] == '/':
path = b
elif path == '' or path[-1:] == '/':
path = path + b
else:
path = path + '/' + b
return path
# Split a path in head (everything up to the last '/') and tail (the

View File

@ -19,7 +19,7 @@ def compile(file, cfile = None):
timestamp = long(os.stat(file)[8])
codeobject = __builtin__.compile(codestring, file, 'exec')
if not cfile:
cfile = file + 'c'
cfile = file + (__debug__ and 'c' or 'o')
fc = open(cfile, 'wb')
fc.write(MAGIC)
wr_long(fc, timestamp)

View File

@ -1,16 +1,26 @@
#! /usr/bin/env python
"""Test the arraymodule.
Roger E. Masse
Roger E. Masse
"""
import array
from test_support import verbose
def main():
testtype('c', 'c')
for type in (['b', 'h', 'i', 'l', 'f', 'd']):
testtype(type, 1)
def testtype(type, example):
a = array.array(type)
a.append(example)
#print 40*'*'
#print 'array after append: ', a
if verbose:
print 40*'*'
print 'array after append: ', a
a.typecode
a.itemsize
if a.typecode in ('i', 'b', 'h', 'l'):
@ -19,22 +29,24 @@ def testtype(type, example):
if a.typecode == 'c':
f = open('/etc/passwd', 'r')
a.fromfile(f, 10)
#print 'char array with 10 bytes of /etc/passwd appended: ', a
if verbose:
print 'char array with 10 bytes of /etc/passwd appended: ', a
a.fromlist(['a', 'b', 'c'])
#print 'char array with list appended: ', a
if verbose:
print 'char array with list appended: ', a
a.insert(0, example)
#print 'array of %s after inserting another:' % a.typecode, a
if verbose:
print 'array of %s after inserting another:' % a.typecode, a
f = open('/dev/null', 'w')
a.tofile(f)
a.tolist()
a.tostring()
#print 'array of %s converted to a list: ' % a.typecode, a.tolist()
#print 'array of %s converted to a string: ' % a.typecode, a.tostring()
testtype('c', 'c')
for type in (['b', 'h', 'i', 'l', 'f', 'd']):
testtype(type, 1)
if verbose:
print 'array of %s converted to a list: ' % a.typecode, a.tolist()
if verbose:
print 'array of %s converted to a string: ' \
% a.typecode, a.tostring()
main()

View File

@ -1,202 +1,263 @@
# Test audioop.
import audioop
from test_support import verbose
def gendata1():
return '\0\1\2'
return '\0\1\2'
def gendata2():
if audioop.getsample('\0\1', 2, 0) == 1:
return '\0\0\0\1\0\2'
else:
return '\0\0\1\0\2\0'
if verbose:
print 'getsample'
if audioop.getsample('\0\1', 2, 0) == 1:
return '\0\0\0\1\0\2'
else:
return '\0\0\1\0\2\0'
def gendata4():
if audioop.getsample('\0\0\0\1', 4, 0) == 1:
return '\0\0\0\0\0\0\0\1\0\0\0\2'
else:
return '\0\0\0\0\1\0\0\0\2\0\0\0'
if verbose:
print 'getsample'
if audioop.getsample('\0\0\0\1', 4, 0) == 1:
return '\0\0\0\0\0\0\0\1\0\0\0\2'
else:
return '\0\0\0\0\1\0\0\0\2\0\0\0'
def testmax(data):
if audioop.max(data[0], 1) <> 2 or \
audioop.max(data[1], 2) <> 2 or \
audioop.max(data[2], 4) <> 2:
return 0
return 1
if verbose:
print 'max'
if audioop.max(data[0], 1) <> 2 or \
audioop.max(data[1], 2) <> 2 or \
audioop.max(data[2], 4) <> 2:
return 0
return 1
def testminmax(data):
if verbose:
print 'minmax'
if audioop.minmax(data[0], 1) <> (0, 2) or \
audioop.minmax(data[1], 2) <> (0, 2) or \
audioop.minmax(data[2], 4) <> (0, 2):
return 0
return 1
def testmaxpp(data):
if audioop.maxpp(data[0], 1) <> 0 or \
audioop.maxpp(data[1], 2) <> 0 or \
audioop.maxpp(data[2], 4) <> 0:
return 0
return 1
if verbose:
print 'maxpp'
if audioop.maxpp(data[0], 1) <> 0 or \
audioop.maxpp(data[1], 2) <> 0 or \
audioop.maxpp(data[2], 4) <> 0:
return 0
return 1
def testavg(data):
if audioop.avg(data[0], 1) <> 1 or \
audioop.avg(data[1], 2) <> 1 or \
audioop.avg(data[2], 4) <> 1:
return 0
return 1
if verbose:
print 'avg'
if audioop.avg(data[0], 1) <> 1 or \
audioop.avg(data[1], 2) <> 1 or \
audioop.avg(data[2], 4) <> 1:
return 0
return 1
def testavgpp(data):
if audioop.avgpp(data[0], 1) <> 0 or \
audioop.avgpp(data[1], 2) <> 0 or \
audioop.avgpp(data[2], 4) <> 0:
return 0
return 1
if verbose:
print 'avgpp'
if audioop.avgpp(data[0], 1) <> 0 or \
audioop.avgpp(data[1], 2) <> 0 or \
audioop.avgpp(data[2], 4) <> 0:
return 0
return 1
def testrms(data):
if audioop.rms(data[0], 1) <> 1 or \
audioop.rms(data[1], 2) <> 1 or \
audioop.rms(data[2], 4) <> 1:
return 0
return 1
if audioop.rms(data[0], 1) <> 1 or \
audioop.rms(data[1], 2) <> 1 or \
audioop.rms(data[2], 4) <> 1:
return 0
return 1
def testcross(data):
if audioop.cross(data[0], 1) <> 0 or \
audioop.cross(data[1], 2) <> 0 or \
audioop.cross(data[2], 4) <> 0:
return 0
return 1
if verbose:
print 'cross'
if audioop.cross(data[0], 1) <> 0 or \
audioop.cross(data[1], 2) <> 0 or \
audioop.cross(data[2], 4) <> 0:
return 0
return 1
def testadd(data):
data2 = []
for d in data:
str = ''
for s in d:
str = str + chr(ord(s)*2)
data2.append(str)
if audioop.add(data[0], data[0], 1) <> data2[0] or \
audioop.add(data[1], data[1], 2) <> data2[1] or \
audioop.add(data[2], data[2], 4) <> data2[2]:
return 0
return 1
if verbose:
print 'add'
data2 = []
for d in data:
str = ''
for s in d:
str = str + chr(ord(s)*2)
data2.append(str)
if audioop.add(data[0], data[0], 1) <> data2[0] or \
audioop.add(data[1], data[1], 2) <> data2[1] or \
audioop.add(data[2], data[2], 4) <> data2[2]:
return 0
return 1
def testbias(data):
# Note: this test assumes that avg() works
d1 = audioop.bias(data[0], 1, 100)
d2 = audioop.bias(data[1], 2, 100)
d4 = audioop.bias(data[2], 4, 100)
if audioop.avg(d1, 1) <> 101 or \
audioop.avg(d2, 2) <> 101 or \
audioop.avg(d4, 4) <> 101:
return 0
return 1
if verbose:
print 'bias'
# Note: this test assumes that avg() works
d1 = audioop.bias(data[0], 1, 100)
d2 = audioop.bias(data[1], 2, 100)
d4 = audioop.bias(data[2], 4, 100)
if audioop.avg(d1, 1) <> 101 or \
audioop.avg(d2, 2) <> 101 or \
audioop.avg(d4, 4) <> 101:
return 0
return 1
def testlin2lin(data):
# too simple: we test only the size
for d1 in data:
for d2 in data:
got = len(d1)/3
wtd = len(d2)/3
if len(audioop.lin2lin(d1, got, wtd)) <> len(d2):
return 0
return 1
if verbose:
print 'lin2lin'
# too simple: we test only the size
for d1 in data:
for d2 in data:
got = len(d1)/3
wtd = len(d2)/3
if len(audioop.lin2lin(d1, got, wtd)) <> len(d2):
return 0
return 1
def testadpcm2lin(data):
# Very cursory test
if audioop.adpcm2lin('\0\0', 1, None) <> ('\0\0\0\0', (0,0)):
return 0
return 1
# Very cursory test
if audioop.adpcm2lin('\0\0', 1, None) <> ('\0\0\0\0', (0,0)):
return 0
return 1
def testlin2adpcm(data):
# Very cursory test
if audioop.lin2adpcm('\0\0\0\0', 1, None) <> ('\0\0', (0,0)):
return 0
return 1
if verbose:
print 'lin2adpcm'
# Very cursory test
if audioop.lin2adpcm('\0\0\0\0', 1, None) <> ('\0\0', (0,0)):
return 0
return 1
def testlin2ulaw(data):
if audioop.lin2ulaw(data[0], 1) <> '\377\347\333' or \
audioop.lin2ulaw(data[1], 2) <> '\377\377\377' or \
audioop.lin2ulaw(data[2], 4) <> '\377\377\377':
return 0
return 1
if verbose:
print 'lin2ulaw'
if audioop.lin2ulaw(data[0], 1) <> '\377\347\333' or \
audioop.lin2ulaw(data[1], 2) <> '\377\377\377' or \
audioop.lin2ulaw(data[2], 4) <> '\377\377\377':
return 0
return 1
def testulaw2lin(data):
# Cursory
d = audioop.lin2ulaw(data[0], 1)
if audioop.ulaw2lin(d, 1) <> data[0]:
return 0
return 1
if verbose:
print 'ulaw2lin'
# Cursory
d = audioop.lin2ulaw(data[0], 1)
if audioop.ulaw2lin(d, 1) <> data[0]:
return 0
return 1
def testmul(data):
data2 = []
for d in data:
str = ''
for s in d:
str = str + chr(ord(s)*2)
data2.append(str)
if audioop.mul(data[0], 1, 2) <> data2[0] or \
audioop.mul(data[1],2, 2) <> data2[1] or \
audioop.mul(data[2], 4, 2) <> data2[2]:
return 0
return 1
if verbose:
print 'mul'
data2 = []
for d in data:
str = ''
for s in d:
str = str + chr(ord(s)*2)
data2.append(str)
if audioop.mul(data[0], 1, 2) <> data2[0] or \
audioop.mul(data[1],2, 2) <> data2[1] or \
audioop.mul(data[2], 4, 2) <> data2[2]:
return 0
return 1
def testratecv(data):
if verbose:
print 'ratecv'
state = (-8000, ((256, 512),))
if audioop.ratecv(data[0], 1, 1, 8000, 16000, state) != \
('\001\000\000\001\001\002', state):
return 0
return 1
def testreverse(data):
if audioop.reverse(data[0], 1) <> '\2\1\0':
return 0
return 1
if verbose:
print 'reverse'
if audioop.reverse(data[0], 1) <> '\2\1\0':
return 0
return 1
def testtomono(data):
data2 = ''
for d in data[0]:
data2 = data2 + d + d
if audioop.tomono(data2, 1, 0.5, 0.5) <> data[0]:
return 0
return 1
if verbose:
print 'tomono'
data2 = ''
for d in data[0]:
data2 = data2 + d + d
if audioop.tomono(data2, 1, 0.5, 0.5) <> data[0]:
return 0
return 1
def testtostereo(data):
data2 = ''
for d in data[0]:
data2 = data2 + d + d
if audioop.tostereo(data[0], 1, 1, 1) <> data2:
return 0
return 1
if verbose:
print 'tostereo'
data2 = ''
for d in data[0]:
data2 = data2 + d + d
if audioop.tostereo(data[0], 1, 1, 1) <> data2:
return 0
return 1
def testfindfactor(data):
if audioop.findfactor(data[1], data[1]) <> 1.0:
return 0
return 1
if verbose:
print 'findfactor'
if audioop.findfactor(data[1], data[1]) <> 1.0:
return 0
return 1
def testfindfit(data):
if audioop.findfit(data[1], data[1]) <> (0, 1.0):
return 0
return 1
if verbose:
print 'findfit'
if audioop.findfit(data[1], data[1]) <> (0, 1.0):
return 0
return 1
def testfindmax(data):
if audioop.findmax(data[1], 1) <> 2:
return 0
return 1
if verbose:
print 'findmax'
if audioop.findmax(data[1], 1) <> 2:
return 0
return 1
def testgetsample(data):
for i in range(3):
if audioop.getsample(data[0], 1, i) <> i or \
audioop.getsample(data[1], 2, i) <> i or \
audioop.getsample(data[2], 4, i) <> i:
return 0
return 1
if verbose:
print 'getsample'
for i in range(3):
if audioop.getsample(data[0], 1, i) <> i or \
audioop.getsample(data[1], 2, i) <> i or \
audioop.getsample(data[2], 4, i) <> i:
return 0
return 1
def testone(name, data):
try:
func = eval('test'+name)
except NameError:
print 'No test found for audioop.'+name+'()'
return
try:
rv = func(data)
except 'xx':
print 'Test FAILED for audioop.'+name+'() (with an exception)'
return
if not rv:
print 'Test FAILED for audioop.'+name+'()'
try:
func = eval('test'+name)
except NameError:
print 'No test found for audioop.'+name+'()'
return
try:
rv = func(data)
except 'xx':
print 'Test FAILED for audioop.'+name+'() (with an exception)'
return
if not rv:
print 'Test FAILED for audioop.'+name+'()'
def testall():
data = [gendata1(), gendata2(), gendata4()]
names = dir(audioop)
# We know there is a routine 'add'
routines = []
for n in names:
if type(eval('audioop.'+n)) == type(audioop.add):
routines.append(n)
for n in routines:
testone(n, data)
data = [gendata1(), gendata2(), gendata4()]
names = dir(audioop)
# We know there is a routine 'add'
routines = []
for n in names:
if type(eval('audioop.'+n)) == type(audioop.add):
routines.append(n)
for n in routines:
testone(n, data)
testall()

46
Lib/dos-8x3/test_bin.py Normal file
View File

@ -0,0 +1,46 @@
#! /usr/bin/env python
"""Test script for the binascii C module
Uses the mechanism of the python binhex module
Roger E. Masse
"""
import binhex
import tempfile
from test_support import verbose
def test():
try:
fname1 = tempfile.mktemp()
fname2 = tempfile.mktemp()
f = open(fname1, 'w')
except:
raise ImportError, "Cannot test binascii without a temp file"
start = 'Jack is my hero'
f.write(start)
f.close()
binhex.binhex(fname1, fname2)
if verbose:
print 'binhex'
binhex.hexbin(fname2, fname1)
if verbose:
print 'hexbin'
f = open(fname1, 'r')
finish = f.readline()
if start <> finish:
print 'Error: binhex <> hexbin'
elif verbose:
print 'binhex == hexbin'
try:
import os
os.unlink(fname1)
os.unlink(fname2)
except:
pass
test()

69
Lib/dos-8x3/test_bsd.py Normal file
View File

@ -0,0 +1,69 @@
#! /usr/bin/env python
"""Test script for the bsddb C module
Roger E. Masse
"""
import bsddb
import tempfile
from test_support import verbose
def test(openmethod, what):
if verbose:
print '\nTesting: ', what
fname = tempfile.mktemp()
f = openmethod(fname, 'c')
if verbose:
print 'creation...'
f['0'] = ''
f['a'] = 'Guido'
f['b'] = 'van'
f['c'] = 'Rossum'
f['d'] = 'invented'
f['f'] = 'Python'
if verbose:
print '%s %s %s' % (f['a'], f['b'], f['c'])
if what == 'BTree' :
if verbose:
print 'key ordering...'
f.set_location(f.first()[0])
while 1:
try:
rec = f.next()
except KeyError:
if rec <> f.last():
print 'Error, last <> last!'
f.previous()
break
if verbose:
print rec
if not f.has_key('a'):
print 'Error, missing key!'
f.sync()
f.close()
if verbose:
print 'modification...'
f = openmethod(fname, 'w')
f['d'] = 'discovered'
if verbose:
print 'access...'
for key in f.keys():
word = f[key]
if verbose:
print word
f.close()
types = [(bsddb.btopen, 'BTree'),
(bsddb.hashopen, 'Hash Table'),
# (bsddb.rnopen,'Record Numbers'), 'put' for RECNO for bsddb 1.85
# appears broken... at least on
# Solaris Intel - rmasse 1/97
]
for type in types:
test(type[0], type[1])

View File

@ -1,22 +1,35 @@
#! /usr/bin/env python
""" Simple test script for cmathmodule.c
Roger E. Masse
Roger E. Masse
"""
import cmath
from test_support import verbose
cmath.acos(1.0)
cmath.acosh(1.0)
cmath.asin(1.0)
cmath.asinh(1.0)
cmath.atan(0.2)
cmath.atanh(0.3)
cmath.cos(1.0)
cmath.cosh(1.0)
cmath.exp(1.0)
cmath.log(1.0)
cmath.log10(1.0)
cmath.sin(1.0)
cmath.sinh(1.0)
cmath.sqrt(1.0)
cmath.tan(1.0)
cmath.tanh(1.0)
testdict = {'acos' : 1.0,
'acosh' : 1.0,
'asin' : 1.0,
'asinh' : 1.0,
'atan' : 0.2,
'atanh' : 0.2,
'cos' : 1.0,
'cosh' : 1.0,
'exp' : 1.0,
'log' : 1.0,
'log10' : 1.0,
'sin' : 1.0,
'sinh' : 1.0,
'sqrt' : 1.0,
'tan' : 1.0,
'tanh' : 1.0}
for func in testdict.keys():
f = getattr(cmath, func)
r = f(testdict[func])
if verbose:
print 'Calling %s(%f) = %f' % (func, testdict[func], abs(r))
p = cmath.pi
e = cmath.e
if verbose:
print 'PI = ', abs(p)
print 'E = ', abs(e)

View File

@ -2,5 +2,10 @@
"""Simple test script for cryptmodule.c
Roger E. Masse
"""
from test_support import verbose
import crypt
print 'Test encryption: ', crypt.crypt('mypassword', 'ab')
c = crypt.crypt('mypassword', 'ab')
if verbose:
print 'Test encryption: ', c

44
Lib/dos-8x3/test_err.py Normal file
View File

@ -0,0 +1,44 @@
#! /usr/bin/env python
"""Test the errno module
Roger E. Masse
"""
import errno
from test_support import verbose
errors = ['E2BIG', 'EACCES', 'EADDRINUSE', 'EADDRNOTAVAIL', 'EADV',
'EAFNOSUPPORT', 'EAGAIN', 'EALREADY', 'EBADE', 'EBADF',
'EBADFD', 'EBADMSG', 'EBADR', 'EBADRQC', 'EBADSLT',
'EBFONT', 'EBUSY', 'ECHILD', 'ECHRNG', 'ECOMM',
'ECONNABORTED', 'ECONNREFUSED', 'ECONNRESET',
'EDEADLK', 'EDEADLOCK', 'EDESTADDRREQ', 'EDOM',
'EDQUOT', 'EEXIST', 'EFAULT', 'EFBIG', 'EHOSTDOWN',
'EHOSTUNREACH', 'EIDRM', 'EILSEQ', 'EINPROGRESS',
'EINTR', 'EINVAL', 'EIO', 'EISCONN', 'EISDIR',
'EL2HLT', 'EL2NSYNC', 'EL3HLT', 'EL3RST', 'ELIBACC',
'ELIBBAD', 'ELIBEXEC', 'ELIBMAX', 'ELIBSCN', 'ELNRNG',
'ELOOP', 'EMFILE', 'EMLINK', 'EMSGSIZE', 'EMULTIHOP',
'ENAMETOOLONG', 'ENETDOWN', 'ENETRESET', 'ENETUNREACH',
'ENFILE', 'ENOANO', 'ENOBUFS', 'ENOCSI', 'ENODATA',
'ENODEV', 'ENOENT', 'ENOEXEC', 'ENOLCK', 'ENOLINK',
'ENOMEM', 'ENOMSG', 'ENONET', 'ENOPKG', 'ENOPROTOOPT',
'ENOSPC', 'ENOSR', 'ENOSTR', 'ENOSYS', 'ENOTBLK',
'ENOTCONN', 'ENOTDIR', 'ENOTEMPTY', 'ENOTSOCK',
'ENOTTY', 'ENOTUNIQ', 'ENXIO', 'EOPNOTSUPP',
'EOVERFLOW', 'EPERM', 'EPFNOSUPPORT', 'EPIPE',
'EPROTO', 'EPROTONOSUPPORT', 'EPROTOTYPE',
'ERANGE', 'EREMCHG', 'EREMOTE', 'ERESTART',
'EROFS', 'ESHUTDOWN', 'ESOCKTNOSUPPORT', 'ESPIPE',
'ESRCH', 'ESRMNT', 'ESTALE', 'ESTRPIPE', 'ETIME',
'ETIMEDOUT', 'ETOOMANYREFS', 'ETXTBSY', 'EUNATCH',
'EUSERS', 'EWOULDBLOCK', 'EXDEV', 'EXFULL']
#
# This is is a wee bit bogus since the module only conditionally adds
# errno constants if they have been defined by errno.h However, this
# test seems to work on SGI, Sparc & intel Solaris, and linux.
#
for error in errors:
a = getattr(errno, error)
if verbose:
print '%s: %d' % (error, a)

28
Lib/dos-8x3/test_fcn.py Normal file
View File

@ -0,0 +1,28 @@
#! /usr/bin/env python
"""Test program for the fcntl C module.
Roger E. Masse
"""
import struct
import fcntl
import FCNTL
import os
from test_support import verbose
filename = '/tmp/delete-me'
# the example from the library docs
f = open(filename,'w')
rv = fcntl.fcntl(f.fileno(), FCNTL.O_NDELAY, 1)
if verbose:
print 'Status from fnctl with O_NDELAY: ', rv
lockdata = struct.pack('hhllhh', FCNTL.F_WRLCK, 0, 0, 0, 0, 0)
if verbose:
print 'struct.pack: ', lockdata
rv = fcntl.fcntl(f.fileno(), FCNTL.F_SETLKW, lockdata)
if verbose:
print 'String from fcntl with F_SETLKW: ', rv
f.close()
os.unlink(filename)

34
Lib/dos-8x3/test_gdb.py Normal file
View File

@ -0,0 +1,34 @@
#! /usr/bin/env python
"""Test script for the gdbm module
Roger E. Masse
"""
import gdbm
from gdbm import error
from test_support import verbose
filename= '/tmp/delete_me'
g = gdbm.open(filename, 'c')
g['a'] = 'b'
g['12345678910'] = '019237410982340912840198242'
a = g.keys()
if verbose:
print 'Test gdbm file keys: ', a
g.has_key('a')
g.close()
g = gdbm.open(filename, 'r')
g.close()
g = gdbm.open(filename, 'rw')
g.close()
g = gdbm.open(filename, 'w')
g.close()
g = gdbm.open(filename, 'n')
g.close()
try:
import os
os.unlink(filename)
except:
pass

165
Lib/dos-8x3/test_ima.py Normal file
View File

@ -0,0 +1,165 @@
#! /usr/bin/env python
"""Test script for the imageop module. This has the side
effect of partially testing the imgfile module as well.
Roger E. Masse
"""
from test_support import verbose
import imageop
def main(use_rgbimg=1):
if use_rgbimg:
image, width, height = getrgbimage('test.rgb')
else:
image, width, height = getimage('test.rgb')
# Return the selected part of image, which should by width by height
# in size and consist of pixels of psize bytes.
if verbose:
print 'crop'
newimage = imageop.crop (image, 4, width, height, 0, 0, 1, 1)
# Return image scaled to size newwidth by newheight. No interpolation
# is done, scaling is done by simple-minded pixel duplication or removal.
# Therefore, computer-generated images or dithered images will
# not look nice after scaling.
if verbose:
print 'scale'
scaleimage = imageop.scale(image, 4, width, height, 1, 1)
# Run a vertical low-pass filter over an image. It does so by computing
# each destination pixel as the average of two vertically-aligned source
# pixels. The main use of this routine is to forestall excessive flicker
# if the image two vertically-aligned source pixels, hence the name.
if verbose:
print 'tovideo'
videoimage = imageop.tovideo (image, 4, width, height)
# Convert an rgb image to an 8 bit rgb
if verbose:
print 'rgb2rgb8'
greyimage = imageop.rgb2rgb8(image, width, height)
# Convert an 8 bit rgb image to a 24 bit rgb image
if verbose:
print 'rgb82rgb'
image = imageop.rgb82rgb(greyimage, width, height)
# Convert an rgb image to an 8 bit greyscale image
if verbose:
print 'rgb2grey'
greyimage = imageop.rgb2grey(image, width, height)
# Convert an 8 bit greyscale image to a 24 bit rgb image
if verbose:
print 'grey2rgb'
image = imageop.grey2rgb(greyimage, width, height)
# Convert a 8-bit deep greyscale image to a 1-bit deep image by
# tresholding all the pixels. The resulting image is tightly packed
# and is probably only useful as an argument to mono2grey.
if verbose:
print 'grey2mono'
monoimage = imageop.grey2mono (greyimage, width, height, 0)
# monoimage, width, height = getimage('monotest.rgb')
# Convert a 1-bit monochrome image to an 8 bit greyscale or color image.
# All pixels that are zero-valued on input get value p0 on output and
# all one-value input pixels get value p1 on output. To convert a
# monochrome black-and-white image to greyscale pass the values 0 and
# 255 respectively.
if verbose:
print 'mono2grey'
greyimage = imageop.mono2grey (monoimage, width, height, 0, 255)
# Convert an 8-bit greyscale image to a 1-bit monochrome image using a
# (simple-minded) dithering algorithm.
if verbose:
print 'dither2mono'
monoimage = imageop.dither2mono (greyimage, width, height)
# Convert an 8-bit greyscale image to a 4-bit greyscale image without
# dithering.
if verbose:
print 'grey2grey4'
grey4image = imageop.grey2grey4 (greyimage, width, height)
# Convert an 8-bit greyscale image to a 2-bit greyscale image without
# dithering.
if verbose:
print 'grey2grey2'
grey2image = imageop.grey2grey2 (greyimage, width, height)
# Convert an 8-bit greyscale image to a 2-bit greyscale image with
# dithering. As for dither2mono, the dithering algorithm is currently
# very simple.
if verbose:
print 'dither2grey2'
grey2image = imageop.dither2grey2 (greyimage, width, height)
# Convert a 4-bit greyscale image to an 8-bit greyscale image.
if verbose:
print 'grey42grey'
greyimage = imageop.grey42grey (grey4image, width, height)
# Convert a 2-bit greyscale image to an 8-bit greyscale image.
if verbose:
print 'grey22grey'
image = imageop.grey22grey (grey2image, width, height)
def getrgbimage(name):
"""return a tuple consisting of image (in 'imgfile' format but
using rgbimg instead) width and height"""
import rgbimg
try:
sizes = rgbimg.sizeofimage(name)
except rgbimg.error:
name = get_qualified_path(name)
sizes = rgbimg.sizeofimage(name)
if verbose:
print 'rgbimg opening test image: %s, sizes: %s' % (name, str(sizes))
image = rgbimg.longimagedata(name)
return (image, sizes[0], sizes[1])
def getimage(name):
"""return a tuple consisting of
image (in 'imgfile' format) width and height
"""
import imgfile
try:
sizes = imgfile.getsizes(name)
except imgfile.error:
name = get_qualified_path(name)
sizes = imgfile.getsizes(name)
if verbose:
print 'imgfile opening test image: %s, sizes: %s' % (name, str(sizes))
image = imgfile.read(name)
return (image, sizes[0], sizes[1])
def get_qualified_path(name):
""" return a more qualified path to name contructed from argv[1]"""
import sys
import os
import string
# get a more qualified path component of the script...
if __name__ == '__main__':
ourname = sys.argv[0]
else: # ...or the full path of the module
ourname = sys.modules[__name__].__file__
parts = string.splitfields(ourname, os.sep)
parts[-1] = name
name = string.joinfields(parts, os.sep)
return name
# rgbimg (unlike imgfile) is portable to platforms other than SGI. So we prefer to use it.
main(use_rgbimg=1)

110
Lib/dos-8x3/test_img.py Normal file
View File

@ -0,0 +1,110 @@
#! /usr/bin/env python
"""Simple test script for imgfile.c
Roger E. Masse
"""
from test_support import verbose
import imgfile
def main():
# Test a 3 byte color image
testimage('test.rgb')
# Test a 1 byte greyscale image
testimage('greytest.rgb')
def testimage(name):
"""Run through the imgfile's battery of possible methods
on the image passed in name.
"""
import sys
import os
import string
outputfile = '/tmp/deleteme'
# try opening the name directly
try:
# This function returns a tuple (x, y, z) where x and y are the size
# of the image in pixels and z is the number of bytes per pixel. Only
# 3 byte RGB pixels and 1 byte greyscale pixels are supported.
sizes = imgfile.getsizes(name)
except imgfile.error:
# get a more qualified path component of the script...
if __name__ == '__main__':
ourname = sys.argv[0]
else: # ...or the full path of the module
ourname = sys.modules[__name__].__file__
parts = string.splitfields(ourname, os.sep)
parts[-1] = name
name = string.joinfields(parts, os.sep)
sizes = imgfile.getsizes(name)
if verbose:
print 'Opening test image: %s, sizes: %s' % (name, str(sizes))
# This function reads and decodes the image on the specified file,
# and returns it as a python string. The string has either 1 byte
# greyscale pixels or 4 byte RGBA pixels. The bottom left pixel
# is the first in the string. This format is suitable to pass
# to gl.lrectwrite, for instance.
image = imgfile.read(name)
# This function writes the RGB or greyscale data in data to
# image file file. x and y give the size of the image, z is
# 1 for 1 byte greyscale images or 3 for RGB images (which
# are stored as 4 byte values of which only the lower three
# bytes are used). These are the formats returned by gl.lrectread.
if verbose:
print 'Writing output file'
imgfile.write (outputfile, image, sizes[0], sizes[1], sizes[2])
if verbose:
print 'Opening scaled test image: %s, sizes: %s' % (name, str(sizes))
# This function is identical to read but it returns an image that
# is scaled to the given x and y sizes. If the filter and blur
# parameters are omitted scaling is done by simply dropping
# or duplicating pixels, so the result will be less than perfect,
# especially for computer-generated images. Alternatively,
# you can specify a filter to use to smoothen the image after
# scaling. The filter forms supported are 'impulse', 'box',
# 'triangle', 'quadratic' and 'gaussian'. If a filter is
# specified blur is an optional parameter specifying the
# blurriness of the filter. It defaults to 1.0. readscaled
# makes no attempt to keep the aspect ratio correct, so that
# is the users' responsibility.
if verbose:
print 'Filtering with "impulse"'
simage = imgfile.readscaled (name, sizes[0]/2, sizes[1]/2, 'impulse', 2.0)
# This function sets a global flag which defines whether the
# scan lines of the image are read or written from bottom to
# top (flag is zero, compatible with SGI GL) or from top to
# bottom(flag is one, compatible with X). The default is zero.
if verbose:
print 'Switching to X compatibility'
imgfile.ttob (1)
if verbose:
print 'Filtering with "triangle"'
simage = imgfile.readscaled (name, sizes[0]/2, sizes[1]/2, 'triangle', 3.0)
if verbose:
print 'Switching back to SGI compatibility'
imgfile.ttob (0)
if verbose: print 'Filtering with "quadratic"'
simage = imgfile.readscaled (name, sizes[0]/2, sizes[1]/2, 'quadratic')
if verbose: print 'Filtering with "gaussian"'
simage = imgfile.readscaled (name, sizes[0]/2, sizes[1]/2, 'gaussian', 1.0)
if verbose:
print 'Writing output file'
imgfile.write (outputfile, simage, sizes[0]/2, sizes[1]/2, sizes[2])
os.unlink(outputfile)
main()

62
Lib/dos-8x3/test_reg.py Normal file
View File

@ -0,0 +1,62 @@
from test_support import verbose
import regex
from regex_syntax import *
re = 'a+b+c+'
print 'no match:', regex.match(re, 'hello aaaabcccc world')
print 'successful search:', regex.search(re, 'hello aaaabcccc world')
try:
cre = regex.compile('\(' + re)
except regex.error:
print 'caught expected exception'
else:
print 'expected regex.error not raised'
print 'failed awk syntax:', regex.search('(a+)|(b+)', 'cdb')
prev = regex.set_syntax(RE_SYNTAX_AWK)
print 'successful awk syntax:', regex.search('(a+)|(b+)', 'cdb')
regex.set_syntax(prev)
print 'failed awk syntax:', regex.search('(a+)|(b+)', 'cdb')
re = '\(<one>[0-9]+\) *\(<two>[0-9]+\)'
print 'matching with group names and compile()'
cre = regex.compile(re)
print cre.match('801 999')
try:
print cre.group('one')
except regex.error:
print 'caught expected exception'
else:
print 'expected regex.error not raised'
print 'matching with group names and symcomp()'
cre = regex.symcomp(re)
print cre.match('801 999')
print cre.group(0)
print cre.group('one')
print cre.group(1, 2)
print cre.group('one', 'two')
print 'realpat:', cre.realpat
print 'groupindex:', cre.groupindex
re = 'world'
cre = regex.compile(re)
print 'not case folded search:', cre.search('HELLO WORLD')
cre = regex.compile(re, regex.casefold)
print 'case folded search:', cre.search('HELLO WORLD')
print '__members__:', cre.__members__
print 'regs:', cre.regs
print 'last:', cre.last
print 'translate:', `cre.translate`
print 'givenpat:', cre.givenpat
print 'match with pos:', cre.match('hello world', 7)
print 'search with pos:', cre.search('hello world there world', 7)
print 'bogus group:', cre.group(0, 1, 3)
try:
print 'no name:', cre.group('one')
except regex.error:
print 'caught expected exception'
else:
print 'expected regex.error not raised'

View File

@ -23,7 +23,8 @@ def testimg(rgb_file, raw_file):
raise error, 'bad image length'
raw = open(raw_file, 'r').read()
if rgb != raw:
raise error, 'images don\'t match for '+rgb_file+' and '+raw_file
raise error, \
'images don\'t match for '+rgb_file+' and '+raw_file
for depth in [1, 3, 4]:
rgbimg.longstoimage(rgb, width, height, depth, '@.rgb')
os.unlink('@.rgb')

28
Lib/dos-8x3/test_rot.py Normal file
View File

@ -0,0 +1,28 @@
import rotor
r = rotor.newrotor("you'll never guess this")
r = rotor.newrotor("you'll never guess this", 12)
A = 'spam and eggs'
B = 'cheese shop'
a = r.encrypt(A)
print a
b = r.encryptmore(B)
print b
A1 = r.decrypt(a)
print A1
if A1 <> A:
print 'decrypt failed'
B1 = r.decryptmore(b)
print B1
if B1 <> B:
print 'decryptmore failed'
try:
r.setkey()
except TypeError:
pass
r.setkey('you guessed it!')

View File

@ -1,14 +1,44 @@
# Testing select module
import select
import os
# test some known error conditions
try:
rfd, wfd, xfd = select.select(1, 2, 3)
except TypeError:
pass
else:
print 'expected TypeError exception not raised'
class Nope:
pass
class Almost:
def fileno(self):
return 'fileno'
try:
rfd, wfd, xfd = select.select([Nope()], [], [])
except TypeError:
pass
else:
print 'expected TypeError exception not raised'
try:
rfd, wfd, xfd = select.select([Almost()], [], [])
except TypeError:
pass
else:
print 'expected TypeError exception not raised'
def test():
import select
import os
cmd = 'for i in 0 1 2 3 4 5 6 7 8 9; do date; sleep 3; done'
cmd = 'for i in 0 1 2 3 4 5 6 7 8 9; do echo testing...; sleep 1; done'
p = os.popen(cmd, 'r')
for tout in (0, 1, 2, 4, 8, 16) + (None,)*10:
print 'timeout =', tout
rfd, wfd, xfd = select.select([p], [], [], tout)
print rfd, wfd, xfd
## print rfd, wfd, xfd
if (rfd, wfd, xfd) == ([], [], []):
continue
if (rfd, wfd, xfd) == ([p], [], []):
@ -19,5 +49,7 @@ def test():
break
continue
print 'Heh?'
p.close()
test()

View File

@ -1,31 +1,37 @@
# Test the signal module
from test_support import verbose
import signal
import os
if verbose:
x = '-x'
else:
x = '+x'
pid = os.getpid()
# Shell script that will send us asynchronous signals
script = """
(
set -x
(
set %(x)s
sleep 2
kill -5 %(pid)d
sleep 2
kill -2 %(pid)d
sleep 2
kill -3 %(pid)d
) &
) &
""" % vars()
def handlerA(*args):
print "handlerA", args
if verbose:
print "handlerA", args
HandlerBCalled = "HandlerBCalled" # Exception
def handlerB(*args):
print "handlerB", args
if verbose:
print "handlerB", args
raise HandlerBCalled, args
signal.alarm(20) # Entire test lasts at most 20 sec.
@ -40,11 +46,18 @@ print "starting pause() loop..."
try:
while 1:
print "call pause()..."
if verbose:
print "call pause()..."
try:
signal.pause()
print "pause() returned"
if verbose:
print "pause() returned"
except HandlerBCalled:
print "HandlerBCalled exception caught"
if verbose:
print "HandlerBCalled exception caught"
else:
pass
except KeyboardInterrupt:
print "KeyboardInterrupt (assume the alarm() went off)"
if verbose:
print "KeyboardInterrupt (assume the alarm() went off)"

142
Lib/dos-8x3/test_soc.py Normal file
View File

@ -0,0 +1,142 @@
# Not tested:
# socket.fromfd()
# sktobj.getsockopt()
# sktobj.recvfrom()
# sktobj.sendto()
# sktobj.setblocking()
# sktobj.setsockopt()
# sktobj.shutdown()
from test_support import verbose
import socket
import os
import time
import string
def missing_ok(str):
try:
getattr(socket, str)
except AttributeError:
pass
print socket.error
print socket.AF_INET
print socket.SOCK_STREAM
print socket.SOCK_DGRAM
print socket.SOCK_RAW
print socket.SOCK_RDM
print socket.SOCK_SEQPACKET
for optional in ("AF_UNIX",
"SO_DEBUG", "SO_ACCEPTCONN", "SO_REUSEADDR", "SO_KEEPALIVE",
"SO_DONTROUTE", "SO_BROADCAST", "SO_USELOOPBACK", "SO_LINGER",
"SO_OOBINLINE", "SO_REUSEPORT", "SO_SNDBUF", "SO_RCVBUF",
"SO_SNDLOWAT", "SO_RCVLOWAT", "SO_SNDTIMEO", "SO_RCVTIMEO",
"SO_ERROR", "SO_TYPE", "SOMAXCONN",
"MSG_OOB", "MSG_PEEK", "MSG_DONTROUTE", "MSG_EOR",
"MSG_TRUNC", "MSG_CTRUNC", "MSG_WAITALL", "MSG_BTAG",
"MSG_ETAG",
"SOL_SOCKET",
"IPPROTO_IP", "IPPROTO_ICMP", "IPPROTO_IGMP",
"IPPROTO_GGP", "IPPROTO_TCP", "IPPROTO_EGP",
"IPPROTO_PUP", "IPPROTO_UDP", "IPPROTO_IDP",
"IPPROTO_HELLO", "IPPROTO_ND", "IPPROTO_TP",
"IPPROTO_XTP", "IPPROTO_EON", "IPPROTO_BIP",
"IPPROTO_RAW", "IPPROTO_MAX",
"IPPORT_RESERVED", "IPPORT_USERRESERVED",
"INADDR_ANY", "INADDR_BROADCAST", "INADDR_LOOPBACK",
"INADDR_UNSPEC_GROUP", "INADDR_ALLHOSTS_GROUP",
"INADDR_MAX_LOCAL_GROUP", "INADDR_NONE",
"IP_OPTIONS", "IP_HDRINCL", "IP_TOS", "IP_TTL",
"IP_RECVOPTS", "IP_RECVRETOPTS", "IP_RECVDSTADDR",
"IP_RETOPTS", "IP_MULTICAST_IF", "IP_MULTICAST_TTL",
"IP_MULTICAST_LOOP", "IP_ADD_MEMBERSHIP",
"IP_DROP_MEMBERSHIP",
):
missing_ok(optional)
hostname = socket.gethostname()
ip = socket.gethostbyname(hostname)
hname, aliases, ipaddrs = socket.gethostbyaddr(ip)
all_host_names = [hname] + aliases
if verbose:
print hostname
print ip
print hname, aliases, ipaddrs
print all_host_names
for name in all_host_names:
if string.find(name, '.'):
break
else:
print 'FQDN not found'
print socket.getservbyname('telnet', 'tcp')
try:
socket.getservbyname('telnet', 'udp')
except socket.error:
pass
try:
PORT = 50007
if os.fork():
# parent is server
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.bind(hostname, PORT)
s.listen(1)
if verbose:
print 'parent accepting'
conn, addr = s.accept()
if verbose:
print 'connected by', addr
# couple of interesting tests while we've got a live socket
f = conn.fileno()
if verbose:
print 'fileno:', f
p = conn.getpeername()
if verbose:
print 'peer:', p
n = conn.getsockname()
if verbose:
print 'sockname:', n
f = conn.makefile()
if verbose:
print 'file obj:', f
while 1:
data = conn.recv(1024)
if not data:
break
if verbose:
print 'received:', data
conn.send(data)
conn.close()
else:
try:
# child is client
time.sleep(1)
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
if verbose:
print 'child connecting'
s.connect(hostname, PORT)
msg = 'socket test'
s.send(msg)
data = s.recv(1024)
if msg <> data:
print 'parent/client mismatch'
s.close()
finally:
os._exit(1)
except socket.error:
pass

View File

@ -1,13 +1,21 @@
from test_support import verbose
import strop, sys
def test(name, input, output, *args):
if verbose:
print 'string.%s%s =? %s... ' % (name, (input,) + args, output),
f = getattr(strop, name)
try:
value = apply(f, (input,) + args)
except:
value = sys.exc_type
if value != output:
if verbose:
print 'no'
print f, `input`, `output`, `value`
else:
if verbose:
print 'yes'
test('atoi', " 1 ", 1)
test('atoi', " 1x", ValueError)
@ -38,8 +46,19 @@ test('split', 'this is the split function',
test('split', 'a|b|c|d', ['a', 'b', 'c', 'd'], '|')
test('split', 'a|b|c|d', ['a', 'b', 'c|d'], '|', 2)
# join now works with any sequence type
class Sequence:
def __init__(self): self.seq = 'wxyz'
def __len__(self): return len(self.seq)
def __getitem__(self, i): return self.seq[i]
test('join', ['a', 'b', 'c', 'd'], 'a b c d')
test('join', ['a', 'b', 'c', 'd'], 'abcd', '')
test('join', ('a', 'b', 'c', 'd'), 'abcd', '')
test('join', Sequence(), 'w x y z')
# try a few long ones
print strop.join(['x' * 100] * 100, ':')
print strop.join(('x' * 100,) * 100, ':')
test('strip', ' hello ', 'hello')
test('lstrip', ' hello ', 'hello ')

28
Lib/dos-8x3/test_sun.py Normal file
View File

@ -0,0 +1,28 @@
from test_support import verbose, TestFailed
import sunaudiodev
import os
def findfile(file):
if os.path.isabs(file): return file
import sys
for dn in sys.path:
fn = os.path.join(dn, file)
if os.path.exists(fn): return fn
return file
def play_sound_file(path):
fp = open(path, 'r')
data = fp.read()
fp.close()
try:
a = sunaudiodev.open('w')
except sunaudiodev.error, msg:
raise TestFailed, msg
else:
a.write(data)
a.close()
def test():
play_sound_file(findfile('audiotest.au'))
test()

View File

@ -2,6 +2,8 @@
TestFailed = 'test_support -- test failed' # Exception
verbose = 1 # Flag set to 0 by regrtest.py
def unload(name):
import sys
try:

View File

@ -2,6 +2,7 @@
# Create a bunch of threads, let each do some work, wait until all are done
from test_support import verbose
import whrandom
import thread
import time
@ -19,9 +20,11 @@ def task(ident):
whmutex.acquire()
delay = whrandom.random() * numtasks
whmutex.release()
print 'task', ident, 'will run for', delay, 'sec'
if verbose:
print 'task', ident, 'will run for', delay, 'sec'
time.sleep(delay)
print 'task', ident, 'done'
if verbose:
print 'task', ident, 'done'
mutex.acquire()
running = running - 1
if running == 0:
@ -33,7 +36,8 @@ def newtask():
global next_ident, running
mutex.acquire()
next_ident = next_ident + 1
print 'creating task', next_ident
if verbose:
print 'creating task', next_ident
thread.start_new_thread(task, (next_ident,))
running = running + 1
mutex.release()
@ -84,11 +88,14 @@ def task2(ident):
whmutex.acquire()
delay = whrandom.random() * numtasks
whmutex.release()
print 'task', ident, 'will run for', delay, 'sec'
if verbose:
print 'task', ident, 'will run for', delay, 'sec'
time.sleep(delay)
print 'task', ident, 'entering barrier', i
if verbose:
print 'task', ident, 'entering barrier', i
bar.enter()
print 'task', ident, 'leaving barrier', i
if verbose:
print 'task', ident, 'leaving barrier', i
mutex.acquire()
running = running - 1
if running == 0:

View File

@ -13,8 +13,8 @@ if int(time.mktime(time.localtime(t))) <> int(t):
time.sleep(1.2)
tt = time.gmtime(t)
for directive in ('a', 'A', 'b', 'B', 'c', 'd', 'E', 'H', 'I',
'j', 'm', 'M', 'n', 'N', 'o', 'p', 'S', 't',
for directive in ('a', 'A', 'b', 'B', 'c', 'd', 'H', 'I',
'j', 'm', 'M', 'p', 'S',
'U', 'w', 'W', 'x', 'X', 'y', 'Y', 'Z', '%'):
format = '%' + directive
time.strftime(format, tt)

View File

@ -191,11 +191,6 @@ def executable(path):
def test(HandlerClass = CGIHTTPRequestHandler,
ServerClass = BaseHTTPServer.HTTPServer):
import sys
if sys.argv[1:2] == ['-r']:
db = MyArchive()
db.regenindices()
return
SimpleHTTPServer.test(HandlerClass, ServerClass)

View File

@ -265,9 +265,9 @@ class AbstractFormatter:
class NullWriter:
"""Minimal writer interface to use in testing.
"""
"""Minimal writer interface to use in testing & inheritance."""
def __init__(self): pass
def flush(self): pass
def new_alignment(self, align): pass
def new_font(self, font): pass
def new_margin(self, margin, level): pass

View File

@ -26,15 +26,20 @@ def isabs(s):
return s[:1] == '/'
# Join two pathnames.
# Ignore the first part if the second part is absolute.
# Join pathnames.
# Ignore the previous parts if a part is absolute.
# Insert a '/' unless the first part is empty or already ends in '/'.
def join(a, b):
if b[:1] == '/': return b
if a == '' or a[-1:] == '/': return a + b
# Note: join('x', '') returns 'x/'; is this what we want?
return a + '/' + b
def join(a, *p):
path = a
for b in p:
if b[:1] == '/':
path = b
elif path == '' or path[-1:] == '/':
path = path + b
else:
path = path + '/' + b
return path
# Split a path in head (everything up to the last '/') and tail (the

View File

@ -19,7 +19,7 @@ def compile(file, cfile = None):
timestamp = long(os.stat(file)[8])
codeobject = __builtin__.compile(codestring, file, 'exec')
if not cfile:
cfile = file + 'c'
cfile = file + (__debug__ and 'c' or 'o')
fc = open(cfile, 'wb')
fc.write(MAGIC)
wr_long(fc, timestamp)

View File

@ -1,16 +1,26 @@
#! /usr/bin/env python
"""Test the arraymodule.
Roger E. Masse
Roger E. Masse
"""
import array
from test_support import verbose
def main():
testtype('c', 'c')
for type in (['b', 'h', 'i', 'l', 'f', 'd']):
testtype(type, 1)
def testtype(type, example):
a = array.array(type)
a.append(example)
#print 40*'*'
#print 'array after append: ', a
if verbose:
print 40*'*'
print 'array after append: ', a
a.typecode
a.itemsize
if a.typecode in ('i', 'b', 'h', 'l'):
@ -19,22 +29,24 @@ def testtype(type, example):
if a.typecode == 'c':
f = open('/etc/passwd', 'r')
a.fromfile(f, 10)
#print 'char array with 10 bytes of /etc/passwd appended: ', a
if verbose:
print 'char array with 10 bytes of /etc/passwd appended: ', a
a.fromlist(['a', 'b', 'c'])
#print 'char array with list appended: ', a
if verbose:
print 'char array with list appended: ', a
a.insert(0, example)
#print 'array of %s after inserting another:' % a.typecode, a
if verbose:
print 'array of %s after inserting another:' % a.typecode, a
f = open('/dev/null', 'w')
a.tofile(f)
a.tolist()
a.tostring()
#print 'array of %s converted to a list: ' % a.typecode, a.tolist()
#print 'array of %s converted to a string: ' % a.typecode, a.tostring()
testtype('c', 'c')
for type in (['b', 'h', 'i', 'l', 'f', 'd']):
testtype(type, 1)
if verbose:
print 'array of %s converted to a list: ' % a.typecode, a.tolist()
if verbose:
print 'array of %s converted to a string: ' \
% a.typecode, a.tostring()
main()

View File

@ -1,202 +1,263 @@
# Test audioop.
import audioop
from test_support import verbose
def gendata1():
return '\0\1\2'
return '\0\1\2'
def gendata2():
if audioop.getsample('\0\1', 2, 0) == 1:
return '\0\0\0\1\0\2'
else:
return '\0\0\1\0\2\0'
if verbose:
print 'getsample'
if audioop.getsample('\0\1', 2, 0) == 1:
return '\0\0\0\1\0\2'
else:
return '\0\0\1\0\2\0'
def gendata4():
if audioop.getsample('\0\0\0\1', 4, 0) == 1:
return '\0\0\0\0\0\0\0\1\0\0\0\2'
else:
return '\0\0\0\0\1\0\0\0\2\0\0\0'
if verbose:
print 'getsample'
if audioop.getsample('\0\0\0\1', 4, 0) == 1:
return '\0\0\0\0\0\0\0\1\0\0\0\2'
else:
return '\0\0\0\0\1\0\0\0\2\0\0\0'
def testmax(data):
if audioop.max(data[0], 1) <> 2 or \
audioop.max(data[1], 2) <> 2 or \
audioop.max(data[2], 4) <> 2:
return 0
return 1
if verbose:
print 'max'
if audioop.max(data[0], 1) <> 2 or \
audioop.max(data[1], 2) <> 2 or \
audioop.max(data[2], 4) <> 2:
return 0
return 1
def testminmax(data):
if verbose:
print 'minmax'
if audioop.minmax(data[0], 1) <> (0, 2) or \
audioop.minmax(data[1], 2) <> (0, 2) or \
audioop.minmax(data[2], 4) <> (0, 2):
return 0
return 1
def testmaxpp(data):
if audioop.maxpp(data[0], 1) <> 0 or \
audioop.maxpp(data[1], 2) <> 0 or \
audioop.maxpp(data[2], 4) <> 0:
return 0
return 1
if verbose:
print 'maxpp'
if audioop.maxpp(data[0], 1) <> 0 or \
audioop.maxpp(data[1], 2) <> 0 or \
audioop.maxpp(data[2], 4) <> 0:
return 0
return 1
def testavg(data):
if audioop.avg(data[0], 1) <> 1 or \
audioop.avg(data[1], 2) <> 1 or \
audioop.avg(data[2], 4) <> 1:
return 0
return 1
if verbose:
print 'avg'
if audioop.avg(data[0], 1) <> 1 or \
audioop.avg(data[1], 2) <> 1 or \
audioop.avg(data[2], 4) <> 1:
return 0
return 1
def testavgpp(data):
if audioop.avgpp(data[0], 1) <> 0 or \
audioop.avgpp(data[1], 2) <> 0 or \
audioop.avgpp(data[2], 4) <> 0:
return 0
return 1
if verbose:
print 'avgpp'
if audioop.avgpp(data[0], 1) <> 0 or \
audioop.avgpp(data[1], 2) <> 0 or \
audioop.avgpp(data[2], 4) <> 0:
return 0
return 1
def testrms(data):
if audioop.rms(data[0], 1) <> 1 or \
audioop.rms(data[1], 2) <> 1 or \
audioop.rms(data[2], 4) <> 1:
return 0
return 1
if audioop.rms(data[0], 1) <> 1 or \
audioop.rms(data[1], 2) <> 1 or \
audioop.rms(data[2], 4) <> 1:
return 0
return 1
def testcross(data):
if audioop.cross(data[0], 1) <> 0 or \
audioop.cross(data[1], 2) <> 0 or \
audioop.cross(data[2], 4) <> 0:
return 0
return 1
if verbose:
print 'cross'
if audioop.cross(data[0], 1) <> 0 or \
audioop.cross(data[1], 2) <> 0 or \
audioop.cross(data[2], 4) <> 0:
return 0
return 1
def testadd(data):
data2 = []
for d in data:
str = ''
for s in d:
str = str + chr(ord(s)*2)
data2.append(str)
if audioop.add(data[0], data[0], 1) <> data2[0] or \
audioop.add(data[1], data[1], 2) <> data2[1] or \
audioop.add(data[2], data[2], 4) <> data2[2]:
return 0
return 1
if verbose:
print 'add'
data2 = []
for d in data:
str = ''
for s in d:
str = str + chr(ord(s)*2)
data2.append(str)
if audioop.add(data[0], data[0], 1) <> data2[0] or \
audioop.add(data[1], data[1], 2) <> data2[1] or \
audioop.add(data[2], data[2], 4) <> data2[2]:
return 0
return 1
def testbias(data):
# Note: this test assumes that avg() works
d1 = audioop.bias(data[0], 1, 100)
d2 = audioop.bias(data[1], 2, 100)
d4 = audioop.bias(data[2], 4, 100)
if audioop.avg(d1, 1) <> 101 or \
audioop.avg(d2, 2) <> 101 or \
audioop.avg(d4, 4) <> 101:
return 0
return 1
if verbose:
print 'bias'
# Note: this test assumes that avg() works
d1 = audioop.bias(data[0], 1, 100)
d2 = audioop.bias(data[1], 2, 100)
d4 = audioop.bias(data[2], 4, 100)
if audioop.avg(d1, 1) <> 101 or \
audioop.avg(d2, 2) <> 101 or \
audioop.avg(d4, 4) <> 101:
return 0
return 1
def testlin2lin(data):
# too simple: we test only the size
for d1 in data:
for d2 in data:
got = len(d1)/3
wtd = len(d2)/3
if len(audioop.lin2lin(d1, got, wtd)) <> len(d2):
return 0
return 1
if verbose:
print 'lin2lin'
# too simple: we test only the size
for d1 in data:
for d2 in data:
got = len(d1)/3
wtd = len(d2)/3
if len(audioop.lin2lin(d1, got, wtd)) <> len(d2):
return 0
return 1
def testadpcm2lin(data):
# Very cursory test
if audioop.adpcm2lin('\0\0', 1, None) <> ('\0\0\0\0', (0,0)):
return 0
return 1
# Very cursory test
if audioop.adpcm2lin('\0\0', 1, None) <> ('\0\0\0\0', (0,0)):
return 0
return 1
def testlin2adpcm(data):
# Very cursory test
if audioop.lin2adpcm('\0\0\0\0', 1, None) <> ('\0\0', (0,0)):
return 0
return 1
if verbose:
print 'lin2adpcm'
# Very cursory test
if audioop.lin2adpcm('\0\0\0\0', 1, None) <> ('\0\0', (0,0)):
return 0
return 1
def testlin2ulaw(data):
if audioop.lin2ulaw(data[0], 1) <> '\377\347\333' or \
audioop.lin2ulaw(data[1], 2) <> '\377\377\377' or \
audioop.lin2ulaw(data[2], 4) <> '\377\377\377':
return 0
return 1
if verbose:
print 'lin2ulaw'
if audioop.lin2ulaw(data[0], 1) <> '\377\347\333' or \
audioop.lin2ulaw(data[1], 2) <> '\377\377\377' or \
audioop.lin2ulaw(data[2], 4) <> '\377\377\377':
return 0
return 1
def testulaw2lin(data):
# Cursory
d = audioop.lin2ulaw(data[0], 1)
if audioop.ulaw2lin(d, 1) <> data[0]:
return 0
return 1
if verbose:
print 'ulaw2lin'
# Cursory
d = audioop.lin2ulaw(data[0], 1)
if audioop.ulaw2lin(d, 1) <> data[0]:
return 0
return 1
def testmul(data):
data2 = []
for d in data:
str = ''
for s in d:
str = str + chr(ord(s)*2)
data2.append(str)
if audioop.mul(data[0], 1, 2) <> data2[0] or \
audioop.mul(data[1],2, 2) <> data2[1] or \
audioop.mul(data[2], 4, 2) <> data2[2]:
return 0
return 1
if verbose:
print 'mul'
data2 = []
for d in data:
str = ''
for s in d:
str = str + chr(ord(s)*2)
data2.append(str)
if audioop.mul(data[0], 1, 2) <> data2[0] or \
audioop.mul(data[1],2, 2) <> data2[1] or \
audioop.mul(data[2], 4, 2) <> data2[2]:
return 0
return 1
def testratecv(data):
if verbose:
print 'ratecv'
state = (-8000, ((256, 512),))
if audioop.ratecv(data[0], 1, 1, 8000, 16000, state) != \
('\001\000\000\001\001\002', state):
return 0
return 1
def testreverse(data):
if audioop.reverse(data[0], 1) <> '\2\1\0':
return 0
return 1
if verbose:
print 'reverse'
if audioop.reverse(data[0], 1) <> '\2\1\0':
return 0
return 1
def testtomono(data):
data2 = ''
for d in data[0]:
data2 = data2 + d + d
if audioop.tomono(data2, 1, 0.5, 0.5) <> data[0]:
return 0
return 1
if verbose:
print 'tomono'
data2 = ''
for d in data[0]:
data2 = data2 + d + d
if audioop.tomono(data2, 1, 0.5, 0.5) <> data[0]:
return 0
return 1
def testtostereo(data):
data2 = ''
for d in data[0]:
data2 = data2 + d + d
if audioop.tostereo(data[0], 1, 1, 1) <> data2:
return 0
return 1
if verbose:
print 'tostereo'
data2 = ''
for d in data[0]:
data2 = data2 + d + d
if audioop.tostereo(data[0], 1, 1, 1) <> data2:
return 0
return 1
def testfindfactor(data):
if audioop.findfactor(data[1], data[1]) <> 1.0:
return 0
return 1
if verbose:
print 'findfactor'
if audioop.findfactor(data[1], data[1]) <> 1.0:
return 0
return 1
def testfindfit(data):
if audioop.findfit(data[1], data[1]) <> (0, 1.0):
return 0
return 1
if verbose:
print 'findfit'
if audioop.findfit(data[1], data[1]) <> (0, 1.0):
return 0
return 1
def testfindmax(data):
if audioop.findmax(data[1], 1) <> 2:
return 0
return 1
if verbose:
print 'findmax'
if audioop.findmax(data[1], 1) <> 2:
return 0
return 1
def testgetsample(data):
for i in range(3):
if audioop.getsample(data[0], 1, i) <> i or \
audioop.getsample(data[1], 2, i) <> i or \
audioop.getsample(data[2], 4, i) <> i:
return 0
return 1
if verbose:
print 'getsample'
for i in range(3):
if audioop.getsample(data[0], 1, i) <> i or \
audioop.getsample(data[1], 2, i) <> i or \
audioop.getsample(data[2], 4, i) <> i:
return 0
return 1
def testone(name, data):
try:
func = eval('test'+name)
except NameError:
print 'No test found for audioop.'+name+'()'
return
try:
rv = func(data)
except 'xx':
print 'Test FAILED for audioop.'+name+'() (with an exception)'
return
if not rv:
print 'Test FAILED for audioop.'+name+'()'
try:
func = eval('test'+name)
except NameError:
print 'No test found for audioop.'+name+'()'
return
try:
rv = func(data)
except 'xx':
print 'Test FAILED for audioop.'+name+'() (with an exception)'
return
if not rv:
print 'Test FAILED for audioop.'+name+'()'
def testall():
data = [gendata1(), gendata2(), gendata4()]
names = dir(audioop)
# We know there is a routine 'add'
routines = []
for n in names:
if type(eval('audioop.'+n)) == type(audioop.add):
routines.append(n)
for n in routines:
testone(n, data)
data = [gendata1(), gendata2(), gendata4()]
names = dir(audioop)
# We know there is a routine 'add'
routines = []
for n in names:
if type(eval('audioop.'+n)) == type(audioop.add):
routines.append(n)
for n in routines:
testone(n, data)
testall()

46
Lib/dos_8x3/test_bin.py Normal file
View File

@ -0,0 +1,46 @@
#! /usr/bin/env python
"""Test script for the binascii C module
Uses the mechanism of the python binhex module
Roger E. Masse
"""
import binhex
import tempfile
from test_support import verbose
def test():
try:
fname1 = tempfile.mktemp()
fname2 = tempfile.mktemp()
f = open(fname1, 'w')
except:
raise ImportError, "Cannot test binascii without a temp file"
start = 'Jack is my hero'
f.write(start)
f.close()
binhex.binhex(fname1, fname2)
if verbose:
print 'binhex'
binhex.hexbin(fname2, fname1)
if verbose:
print 'hexbin'
f = open(fname1, 'r')
finish = f.readline()
if start <> finish:
print 'Error: binhex <> hexbin'
elif verbose:
print 'binhex == hexbin'
try:
import os
os.unlink(fname1)
os.unlink(fname2)
except:
pass
test()

69
Lib/dos_8x3/test_bsd.py Normal file
View File

@ -0,0 +1,69 @@
#! /usr/bin/env python
"""Test script for the bsddb C module
Roger E. Masse
"""
import bsddb
import tempfile
from test_support import verbose
def test(openmethod, what):
if verbose:
print '\nTesting: ', what
fname = tempfile.mktemp()
f = openmethod(fname, 'c')
if verbose:
print 'creation...'
f['0'] = ''
f['a'] = 'Guido'
f['b'] = 'van'
f['c'] = 'Rossum'
f['d'] = 'invented'
f['f'] = 'Python'
if verbose:
print '%s %s %s' % (f['a'], f['b'], f['c'])
if what == 'BTree' :
if verbose:
print 'key ordering...'
f.set_location(f.first()[0])
while 1:
try:
rec = f.next()
except KeyError:
if rec <> f.last():
print 'Error, last <> last!'
f.previous()
break
if verbose:
print rec
if not f.has_key('a'):
print 'Error, missing key!'
f.sync()
f.close()
if verbose:
print 'modification...'
f = openmethod(fname, 'w')
f['d'] = 'discovered'
if verbose:
print 'access...'
for key in f.keys():
word = f[key]
if verbose:
print word
f.close()
types = [(bsddb.btopen, 'BTree'),
(bsddb.hashopen, 'Hash Table'),
# (bsddb.rnopen,'Record Numbers'), 'put' for RECNO for bsddb 1.85
# appears broken... at least on
# Solaris Intel - rmasse 1/97
]
for type in types:
test(type[0], type[1])

View File

@ -1,22 +1,35 @@
#! /usr/bin/env python
""" Simple test script for cmathmodule.c
Roger E. Masse
Roger E. Masse
"""
import cmath
from test_support import verbose
cmath.acos(1.0)
cmath.acosh(1.0)
cmath.asin(1.0)
cmath.asinh(1.0)
cmath.atan(0.2)
cmath.atanh(0.3)
cmath.cos(1.0)
cmath.cosh(1.0)
cmath.exp(1.0)
cmath.log(1.0)
cmath.log10(1.0)
cmath.sin(1.0)
cmath.sinh(1.0)
cmath.sqrt(1.0)
cmath.tan(1.0)
cmath.tanh(1.0)
testdict = {'acos' : 1.0,
'acosh' : 1.0,
'asin' : 1.0,
'asinh' : 1.0,
'atan' : 0.2,
'atanh' : 0.2,
'cos' : 1.0,
'cosh' : 1.0,
'exp' : 1.0,
'log' : 1.0,
'log10' : 1.0,
'sin' : 1.0,
'sinh' : 1.0,
'sqrt' : 1.0,
'tan' : 1.0,
'tanh' : 1.0}
for func in testdict.keys():
f = getattr(cmath, func)
r = f(testdict[func])
if verbose:
print 'Calling %s(%f) = %f' % (func, testdict[func], abs(r))
p = cmath.pi
e = cmath.e
if verbose:
print 'PI = ', abs(p)
print 'E = ', abs(e)

View File

@ -2,5 +2,10 @@
"""Simple test script for cryptmodule.c
Roger E. Masse
"""
from test_support import verbose
import crypt
print 'Test encryption: ', crypt.crypt('mypassword', 'ab')
c = crypt.crypt('mypassword', 'ab')
if verbose:
print 'Test encryption: ', c

44
Lib/dos_8x3/test_err.py Normal file
View File

@ -0,0 +1,44 @@
#! /usr/bin/env python
"""Test the errno module
Roger E. Masse
"""
import errno
from test_support import verbose
errors = ['E2BIG', 'EACCES', 'EADDRINUSE', 'EADDRNOTAVAIL', 'EADV',
'EAFNOSUPPORT', 'EAGAIN', 'EALREADY', 'EBADE', 'EBADF',
'EBADFD', 'EBADMSG', 'EBADR', 'EBADRQC', 'EBADSLT',
'EBFONT', 'EBUSY', 'ECHILD', 'ECHRNG', 'ECOMM',
'ECONNABORTED', 'ECONNREFUSED', 'ECONNRESET',
'EDEADLK', 'EDEADLOCK', 'EDESTADDRREQ', 'EDOM',
'EDQUOT', 'EEXIST', 'EFAULT', 'EFBIG', 'EHOSTDOWN',
'EHOSTUNREACH', 'EIDRM', 'EILSEQ', 'EINPROGRESS',
'EINTR', 'EINVAL', 'EIO', 'EISCONN', 'EISDIR',
'EL2HLT', 'EL2NSYNC', 'EL3HLT', 'EL3RST', 'ELIBACC',
'ELIBBAD', 'ELIBEXEC', 'ELIBMAX', 'ELIBSCN', 'ELNRNG',
'ELOOP', 'EMFILE', 'EMLINK', 'EMSGSIZE', 'EMULTIHOP',
'ENAMETOOLONG', 'ENETDOWN', 'ENETRESET', 'ENETUNREACH',
'ENFILE', 'ENOANO', 'ENOBUFS', 'ENOCSI', 'ENODATA',
'ENODEV', 'ENOENT', 'ENOEXEC', 'ENOLCK', 'ENOLINK',
'ENOMEM', 'ENOMSG', 'ENONET', 'ENOPKG', 'ENOPROTOOPT',
'ENOSPC', 'ENOSR', 'ENOSTR', 'ENOSYS', 'ENOTBLK',
'ENOTCONN', 'ENOTDIR', 'ENOTEMPTY', 'ENOTSOCK',
'ENOTTY', 'ENOTUNIQ', 'ENXIO', 'EOPNOTSUPP',
'EOVERFLOW', 'EPERM', 'EPFNOSUPPORT', 'EPIPE',
'EPROTO', 'EPROTONOSUPPORT', 'EPROTOTYPE',
'ERANGE', 'EREMCHG', 'EREMOTE', 'ERESTART',
'EROFS', 'ESHUTDOWN', 'ESOCKTNOSUPPORT', 'ESPIPE',
'ESRCH', 'ESRMNT', 'ESTALE', 'ESTRPIPE', 'ETIME',
'ETIMEDOUT', 'ETOOMANYREFS', 'ETXTBSY', 'EUNATCH',
'EUSERS', 'EWOULDBLOCK', 'EXDEV', 'EXFULL']
#
# This is is a wee bit bogus since the module only conditionally adds
# errno constants if they have been defined by errno.h However, this
# test seems to work on SGI, Sparc & intel Solaris, and linux.
#
for error in errors:
a = getattr(errno, error)
if verbose:
print '%s: %d' % (error, a)

28
Lib/dos_8x3/test_fcn.py Normal file
View File

@ -0,0 +1,28 @@
#! /usr/bin/env python
"""Test program for the fcntl C module.
Roger E. Masse
"""
import struct
import fcntl
import FCNTL
import os
from test_support import verbose
filename = '/tmp/delete-me'
# the example from the library docs
f = open(filename,'w')
rv = fcntl.fcntl(f.fileno(), FCNTL.O_NDELAY, 1)
if verbose:
print 'Status from fnctl with O_NDELAY: ', rv
lockdata = struct.pack('hhllhh', FCNTL.F_WRLCK, 0, 0, 0, 0, 0)
if verbose:
print 'struct.pack: ', lockdata
rv = fcntl.fcntl(f.fileno(), FCNTL.F_SETLKW, lockdata)
if verbose:
print 'String from fcntl with F_SETLKW: ', rv
f.close()
os.unlink(filename)

34
Lib/dos_8x3/test_gdb.py Normal file
View File

@ -0,0 +1,34 @@
#! /usr/bin/env python
"""Test script for the gdbm module
Roger E. Masse
"""
import gdbm
from gdbm import error
from test_support import verbose
filename= '/tmp/delete_me'
g = gdbm.open(filename, 'c')
g['a'] = 'b'
g['12345678910'] = '019237410982340912840198242'
a = g.keys()
if verbose:
print 'Test gdbm file keys: ', a
g.has_key('a')
g.close()
g = gdbm.open(filename, 'r')
g.close()
g = gdbm.open(filename, 'rw')
g.close()
g = gdbm.open(filename, 'w')
g.close()
g = gdbm.open(filename, 'n')
g.close()
try:
import os
os.unlink(filename)
except:
pass

165
Lib/dos_8x3/test_ima.py Normal file
View File

@ -0,0 +1,165 @@
#! /usr/bin/env python
"""Test script for the imageop module. This has the side
effect of partially testing the imgfile module as well.
Roger E. Masse
"""
from test_support import verbose
import imageop
def main(use_rgbimg=1):
if use_rgbimg:
image, width, height = getrgbimage('test.rgb')
else:
image, width, height = getimage('test.rgb')
# Return the selected part of image, which should by width by height
# in size and consist of pixels of psize bytes.
if verbose:
print 'crop'
newimage = imageop.crop (image, 4, width, height, 0, 0, 1, 1)
# Return image scaled to size newwidth by newheight. No interpolation
# is done, scaling is done by simple-minded pixel duplication or removal.
# Therefore, computer-generated images or dithered images will
# not look nice after scaling.
if verbose:
print 'scale'
scaleimage = imageop.scale(image, 4, width, height, 1, 1)
# Run a vertical low-pass filter over an image. It does so by computing
# each destination pixel as the average of two vertically-aligned source
# pixels. The main use of this routine is to forestall excessive flicker
# if the image two vertically-aligned source pixels, hence the name.
if verbose:
print 'tovideo'
videoimage = imageop.tovideo (image, 4, width, height)
# Convert an rgb image to an 8 bit rgb
if verbose:
print 'rgb2rgb8'
greyimage = imageop.rgb2rgb8(image, width, height)
# Convert an 8 bit rgb image to a 24 bit rgb image
if verbose:
print 'rgb82rgb'
image = imageop.rgb82rgb(greyimage, width, height)
# Convert an rgb image to an 8 bit greyscale image
if verbose:
print 'rgb2grey'
greyimage = imageop.rgb2grey(image, width, height)
# Convert an 8 bit greyscale image to a 24 bit rgb image
if verbose:
print 'grey2rgb'
image = imageop.grey2rgb(greyimage, width, height)
# Convert a 8-bit deep greyscale image to a 1-bit deep image by
# tresholding all the pixels. The resulting image is tightly packed
# and is probably only useful as an argument to mono2grey.
if verbose:
print 'grey2mono'
monoimage = imageop.grey2mono (greyimage, width, height, 0)
# monoimage, width, height = getimage('monotest.rgb')
# Convert a 1-bit monochrome image to an 8 bit greyscale or color image.
# All pixels that are zero-valued on input get value p0 on output and
# all one-value input pixels get value p1 on output. To convert a
# monochrome black-and-white image to greyscale pass the values 0 and
# 255 respectively.
if verbose:
print 'mono2grey'
greyimage = imageop.mono2grey (monoimage, width, height, 0, 255)
# Convert an 8-bit greyscale image to a 1-bit monochrome image using a
# (simple-minded) dithering algorithm.
if verbose:
print 'dither2mono'
monoimage = imageop.dither2mono (greyimage, width, height)
# Convert an 8-bit greyscale image to a 4-bit greyscale image without
# dithering.
if verbose:
print 'grey2grey4'
grey4image = imageop.grey2grey4 (greyimage, width, height)
# Convert an 8-bit greyscale image to a 2-bit greyscale image without
# dithering.
if verbose:
print 'grey2grey2'
grey2image = imageop.grey2grey2 (greyimage, width, height)
# Convert an 8-bit greyscale image to a 2-bit greyscale image with
# dithering. As for dither2mono, the dithering algorithm is currently
# very simple.
if verbose:
print 'dither2grey2'
grey2image = imageop.dither2grey2 (greyimage, width, height)
# Convert a 4-bit greyscale image to an 8-bit greyscale image.
if verbose:
print 'grey42grey'
greyimage = imageop.grey42grey (grey4image, width, height)
# Convert a 2-bit greyscale image to an 8-bit greyscale image.
if verbose:
print 'grey22grey'
image = imageop.grey22grey (grey2image, width, height)
def getrgbimage(name):
"""return a tuple consisting of image (in 'imgfile' format but
using rgbimg instead) width and height"""
import rgbimg
try:
sizes = rgbimg.sizeofimage(name)
except rgbimg.error:
name = get_qualified_path(name)
sizes = rgbimg.sizeofimage(name)
if verbose:
print 'rgbimg opening test image: %s, sizes: %s' % (name, str(sizes))
image = rgbimg.longimagedata(name)
return (image, sizes[0], sizes[1])
def getimage(name):
"""return a tuple consisting of
image (in 'imgfile' format) width and height
"""
import imgfile
try:
sizes = imgfile.getsizes(name)
except imgfile.error:
name = get_qualified_path(name)
sizes = imgfile.getsizes(name)
if verbose:
print 'imgfile opening test image: %s, sizes: %s' % (name, str(sizes))
image = imgfile.read(name)
return (image, sizes[0], sizes[1])
def get_qualified_path(name):
""" return a more qualified path to name contructed from argv[1]"""
import sys
import os
import string
# get a more qualified path component of the script...
if __name__ == '__main__':
ourname = sys.argv[0]
else: # ...or the full path of the module
ourname = sys.modules[__name__].__file__
parts = string.splitfields(ourname, os.sep)
parts[-1] = name
name = string.joinfields(parts, os.sep)
return name
# rgbimg (unlike imgfile) is portable to platforms other than SGI. So we prefer to use it.
main(use_rgbimg=1)

110
Lib/dos_8x3/test_img.py Normal file
View File

@ -0,0 +1,110 @@
#! /usr/bin/env python
"""Simple test script for imgfile.c
Roger E. Masse
"""
from test_support import verbose
import imgfile
def main():
# Test a 3 byte color image
testimage('test.rgb')
# Test a 1 byte greyscale image
testimage('greytest.rgb')
def testimage(name):
"""Run through the imgfile's battery of possible methods
on the image passed in name.
"""
import sys
import os
import string
outputfile = '/tmp/deleteme'
# try opening the name directly
try:
# This function returns a tuple (x, y, z) where x and y are the size
# of the image in pixels and z is the number of bytes per pixel. Only
# 3 byte RGB pixels and 1 byte greyscale pixels are supported.
sizes = imgfile.getsizes(name)
except imgfile.error:
# get a more qualified path component of the script...
if __name__ == '__main__':
ourname = sys.argv[0]
else: # ...or the full path of the module
ourname = sys.modules[__name__].__file__
parts = string.splitfields(ourname, os.sep)
parts[-1] = name
name = string.joinfields(parts, os.sep)
sizes = imgfile.getsizes(name)
if verbose:
print 'Opening test image: %s, sizes: %s' % (name, str(sizes))
# This function reads and decodes the image on the specified file,
# and returns it as a python string. The string has either 1 byte
# greyscale pixels or 4 byte RGBA pixels. The bottom left pixel
# is the first in the string. This format is suitable to pass
# to gl.lrectwrite, for instance.
image = imgfile.read(name)
# This function writes the RGB or greyscale data in data to
# image file file. x and y give the size of the image, z is
# 1 for 1 byte greyscale images or 3 for RGB images (which
# are stored as 4 byte values of which only the lower three
# bytes are used). These are the formats returned by gl.lrectread.
if verbose:
print 'Writing output file'
imgfile.write (outputfile, image, sizes[0], sizes[1], sizes[2])
if verbose:
print 'Opening scaled test image: %s, sizes: %s' % (name, str(sizes))
# This function is identical to read but it returns an image that
# is scaled to the given x and y sizes. If the filter and blur
# parameters are omitted scaling is done by simply dropping
# or duplicating pixels, so the result will be less than perfect,
# especially for computer-generated images. Alternatively,
# you can specify a filter to use to smoothen the image after
# scaling. The filter forms supported are 'impulse', 'box',
# 'triangle', 'quadratic' and 'gaussian'. If a filter is
# specified blur is an optional parameter specifying the
# blurriness of the filter. It defaults to 1.0. readscaled
# makes no attempt to keep the aspect ratio correct, so that
# is the users' responsibility.
if verbose:
print 'Filtering with "impulse"'
simage = imgfile.readscaled (name, sizes[0]/2, sizes[1]/2, 'impulse', 2.0)
# This function sets a global flag which defines whether the
# scan lines of the image are read or written from bottom to
# top (flag is zero, compatible with SGI GL) or from top to
# bottom(flag is one, compatible with X). The default is zero.
if verbose:
print 'Switching to X compatibility'
imgfile.ttob (1)
if verbose:
print 'Filtering with "triangle"'
simage = imgfile.readscaled (name, sizes[0]/2, sizes[1]/2, 'triangle', 3.0)
if verbose:
print 'Switching back to SGI compatibility'
imgfile.ttob (0)
if verbose: print 'Filtering with "quadratic"'
simage = imgfile.readscaled (name, sizes[0]/2, sizes[1]/2, 'quadratic')
if verbose: print 'Filtering with "gaussian"'
simage = imgfile.readscaled (name, sizes[0]/2, sizes[1]/2, 'gaussian', 1.0)
if verbose:
print 'Writing output file'
imgfile.write (outputfile, simage, sizes[0]/2, sizes[1]/2, sizes[2])
os.unlink(outputfile)
main()

62
Lib/dos_8x3/test_reg.py Normal file
View File

@ -0,0 +1,62 @@
from test_support import verbose
import regex
from regex_syntax import *
re = 'a+b+c+'
print 'no match:', regex.match(re, 'hello aaaabcccc world')
print 'successful search:', regex.search(re, 'hello aaaabcccc world')
try:
cre = regex.compile('\(' + re)
except regex.error:
print 'caught expected exception'
else:
print 'expected regex.error not raised'
print 'failed awk syntax:', regex.search('(a+)|(b+)', 'cdb')
prev = regex.set_syntax(RE_SYNTAX_AWK)
print 'successful awk syntax:', regex.search('(a+)|(b+)', 'cdb')
regex.set_syntax(prev)
print 'failed awk syntax:', regex.search('(a+)|(b+)', 'cdb')
re = '\(<one>[0-9]+\) *\(<two>[0-9]+\)'
print 'matching with group names and compile()'
cre = regex.compile(re)
print cre.match('801 999')
try:
print cre.group('one')
except regex.error:
print 'caught expected exception'
else:
print 'expected regex.error not raised'
print 'matching with group names and symcomp()'
cre = regex.symcomp(re)
print cre.match('801 999')
print cre.group(0)
print cre.group('one')
print cre.group(1, 2)
print cre.group('one', 'two')
print 'realpat:', cre.realpat
print 'groupindex:', cre.groupindex
re = 'world'
cre = regex.compile(re)
print 'not case folded search:', cre.search('HELLO WORLD')
cre = regex.compile(re, regex.casefold)
print 'case folded search:', cre.search('HELLO WORLD')
print '__members__:', cre.__members__
print 'regs:', cre.regs
print 'last:', cre.last
print 'translate:', `cre.translate`
print 'givenpat:', cre.givenpat
print 'match with pos:', cre.match('hello world', 7)
print 'search with pos:', cre.search('hello world there world', 7)
print 'bogus group:', cre.group(0, 1, 3)
try:
print 'no name:', cre.group('one')
except regex.error:
print 'caught expected exception'
else:
print 'expected regex.error not raised'

View File

@ -23,7 +23,8 @@ def testimg(rgb_file, raw_file):
raise error, 'bad image length'
raw = open(raw_file, 'r').read()
if rgb != raw:
raise error, 'images don\'t match for '+rgb_file+' and '+raw_file
raise error, \
'images don\'t match for '+rgb_file+' and '+raw_file
for depth in [1, 3, 4]:
rgbimg.longstoimage(rgb, width, height, depth, '@.rgb')
os.unlink('@.rgb')

28
Lib/dos_8x3/test_rot.py Normal file
View File

@ -0,0 +1,28 @@
import rotor
r = rotor.newrotor("you'll never guess this")
r = rotor.newrotor("you'll never guess this", 12)
A = 'spam and eggs'
B = 'cheese shop'
a = r.encrypt(A)
print a
b = r.encryptmore(B)
print b
A1 = r.decrypt(a)
print A1
if A1 <> A:
print 'decrypt failed'
B1 = r.decryptmore(b)
print B1
if B1 <> B:
print 'decryptmore failed'
try:
r.setkey()
except TypeError:
pass
r.setkey('you guessed it!')

View File

@ -1,14 +1,44 @@
# Testing select module
import select
import os
# test some known error conditions
try:
rfd, wfd, xfd = select.select(1, 2, 3)
except TypeError:
pass
else:
print 'expected TypeError exception not raised'
class Nope:
pass
class Almost:
def fileno(self):
return 'fileno'
try:
rfd, wfd, xfd = select.select([Nope()], [], [])
except TypeError:
pass
else:
print 'expected TypeError exception not raised'
try:
rfd, wfd, xfd = select.select([Almost()], [], [])
except TypeError:
pass
else:
print 'expected TypeError exception not raised'
def test():
import select
import os
cmd = 'for i in 0 1 2 3 4 5 6 7 8 9; do date; sleep 3; done'
cmd = 'for i in 0 1 2 3 4 5 6 7 8 9; do echo testing...; sleep 1; done'
p = os.popen(cmd, 'r')
for tout in (0, 1, 2, 4, 8, 16) + (None,)*10:
print 'timeout =', tout
rfd, wfd, xfd = select.select([p], [], [], tout)
print rfd, wfd, xfd
## print rfd, wfd, xfd
if (rfd, wfd, xfd) == ([], [], []):
continue
if (rfd, wfd, xfd) == ([p], [], []):
@ -19,5 +49,7 @@ def test():
break
continue
print 'Heh?'
p.close()
test()

View File

@ -1,31 +1,37 @@
# Test the signal module
from test_support import verbose
import signal
import os
if verbose:
x = '-x'
else:
x = '+x'
pid = os.getpid()
# Shell script that will send us asynchronous signals
script = """
(
set -x
(
set %(x)s
sleep 2
kill -5 %(pid)d
sleep 2
kill -2 %(pid)d
sleep 2
kill -3 %(pid)d
) &
) &
""" % vars()
def handlerA(*args):
print "handlerA", args
if verbose:
print "handlerA", args
HandlerBCalled = "HandlerBCalled" # Exception
def handlerB(*args):
print "handlerB", args
if verbose:
print "handlerB", args
raise HandlerBCalled, args
signal.alarm(20) # Entire test lasts at most 20 sec.
@ -40,11 +46,18 @@ print "starting pause() loop..."
try:
while 1:
print "call pause()..."
if verbose:
print "call pause()..."
try:
signal.pause()
print "pause() returned"
if verbose:
print "pause() returned"
except HandlerBCalled:
print "HandlerBCalled exception caught"
if verbose:
print "HandlerBCalled exception caught"
else:
pass
except KeyboardInterrupt:
print "KeyboardInterrupt (assume the alarm() went off)"
if verbose:
print "KeyboardInterrupt (assume the alarm() went off)"

142
Lib/dos_8x3/test_soc.py Normal file
View File

@ -0,0 +1,142 @@
# Not tested:
# socket.fromfd()
# sktobj.getsockopt()
# sktobj.recvfrom()
# sktobj.sendto()
# sktobj.setblocking()
# sktobj.setsockopt()
# sktobj.shutdown()
from test_support import verbose
import socket
import os
import time
import string
def missing_ok(str):
try:
getattr(socket, str)
except AttributeError:
pass
print socket.error
print socket.AF_INET
print socket.SOCK_STREAM
print socket.SOCK_DGRAM
print socket.SOCK_RAW
print socket.SOCK_RDM
print socket.SOCK_SEQPACKET
for optional in ("AF_UNIX",
"SO_DEBUG", "SO_ACCEPTCONN", "SO_REUSEADDR", "SO_KEEPALIVE",
"SO_DONTROUTE", "SO_BROADCAST", "SO_USELOOPBACK", "SO_LINGER",
"SO_OOBINLINE", "SO_REUSEPORT", "SO_SNDBUF", "SO_RCVBUF",
"SO_SNDLOWAT", "SO_RCVLOWAT", "SO_SNDTIMEO", "SO_RCVTIMEO",
"SO_ERROR", "SO_TYPE", "SOMAXCONN",
"MSG_OOB", "MSG_PEEK", "MSG_DONTROUTE", "MSG_EOR",
"MSG_TRUNC", "MSG_CTRUNC", "MSG_WAITALL", "MSG_BTAG",
"MSG_ETAG",
"SOL_SOCKET",
"IPPROTO_IP", "IPPROTO_ICMP", "IPPROTO_IGMP",
"IPPROTO_GGP", "IPPROTO_TCP", "IPPROTO_EGP",
"IPPROTO_PUP", "IPPROTO_UDP", "IPPROTO_IDP",
"IPPROTO_HELLO", "IPPROTO_ND", "IPPROTO_TP",
"IPPROTO_XTP", "IPPROTO_EON", "IPPROTO_BIP",
"IPPROTO_RAW", "IPPROTO_MAX",
"IPPORT_RESERVED", "IPPORT_USERRESERVED",
"INADDR_ANY", "INADDR_BROADCAST", "INADDR_LOOPBACK",
"INADDR_UNSPEC_GROUP", "INADDR_ALLHOSTS_GROUP",
"INADDR_MAX_LOCAL_GROUP", "INADDR_NONE",
"IP_OPTIONS", "IP_HDRINCL", "IP_TOS", "IP_TTL",
"IP_RECVOPTS", "IP_RECVRETOPTS", "IP_RECVDSTADDR",
"IP_RETOPTS", "IP_MULTICAST_IF", "IP_MULTICAST_TTL",
"IP_MULTICAST_LOOP", "IP_ADD_MEMBERSHIP",
"IP_DROP_MEMBERSHIP",
):
missing_ok(optional)
hostname = socket.gethostname()
ip = socket.gethostbyname(hostname)
hname, aliases, ipaddrs = socket.gethostbyaddr(ip)
all_host_names = [hname] + aliases
if verbose:
print hostname
print ip
print hname, aliases, ipaddrs
print all_host_names
for name in all_host_names:
if string.find(name, '.'):
break
else:
print 'FQDN not found'
print socket.getservbyname('telnet', 'tcp')
try:
socket.getservbyname('telnet', 'udp')
except socket.error:
pass
try:
PORT = 50007
if os.fork():
# parent is server
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.bind(hostname, PORT)
s.listen(1)
if verbose:
print 'parent accepting'
conn, addr = s.accept()
if verbose:
print 'connected by', addr
# couple of interesting tests while we've got a live socket
f = conn.fileno()
if verbose:
print 'fileno:', f
p = conn.getpeername()
if verbose:
print 'peer:', p
n = conn.getsockname()
if verbose:
print 'sockname:', n
f = conn.makefile()
if verbose:
print 'file obj:', f
while 1:
data = conn.recv(1024)
if not data:
break
if verbose:
print 'received:', data
conn.send(data)
conn.close()
else:
try:
# child is client
time.sleep(1)
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
if verbose:
print 'child connecting'
s.connect(hostname, PORT)
msg = 'socket test'
s.send(msg)
data = s.recv(1024)
if msg <> data:
print 'parent/client mismatch'
s.close()
finally:
os._exit(1)
except socket.error:
pass

View File

@ -1,13 +1,21 @@
from test_support import verbose
import strop, sys
def test(name, input, output, *args):
if verbose:
print 'string.%s%s =? %s... ' % (name, (input,) + args, output),
f = getattr(strop, name)
try:
value = apply(f, (input,) + args)
except:
value = sys.exc_type
if value != output:
if verbose:
print 'no'
print f, `input`, `output`, `value`
else:
if verbose:
print 'yes'
test('atoi', " 1 ", 1)
test('atoi', " 1x", ValueError)
@ -38,8 +46,19 @@ test('split', 'this is the split function',
test('split', 'a|b|c|d', ['a', 'b', 'c', 'd'], '|')
test('split', 'a|b|c|d', ['a', 'b', 'c|d'], '|', 2)
# join now works with any sequence type
class Sequence:
def __init__(self): self.seq = 'wxyz'
def __len__(self): return len(self.seq)
def __getitem__(self, i): return self.seq[i]
test('join', ['a', 'b', 'c', 'd'], 'a b c d')
test('join', ['a', 'b', 'c', 'd'], 'abcd', '')
test('join', ('a', 'b', 'c', 'd'), 'abcd', '')
test('join', Sequence(), 'w x y z')
# try a few long ones
print strop.join(['x' * 100] * 100, ':')
print strop.join(('x' * 100,) * 100, ':')
test('strip', ' hello ', 'hello')
test('lstrip', ' hello ', 'hello ')

28
Lib/dos_8x3/test_sun.py Normal file
View File

@ -0,0 +1,28 @@
from test_support import verbose, TestFailed
import sunaudiodev
import os
def findfile(file):
if os.path.isabs(file): return file
import sys
for dn in sys.path:
fn = os.path.join(dn, file)
if os.path.exists(fn): return fn
return file
def play_sound_file(path):
fp = open(path, 'r')
data = fp.read()
fp.close()
try:
a = sunaudiodev.open('w')
except sunaudiodev.error, msg:
raise TestFailed, msg
else:
a.write(data)
a.close()
def test():
play_sound_file(findfile('audiotest.au'))
test()

View File

@ -2,6 +2,8 @@
TestFailed = 'test_support -- test failed' # Exception
verbose = 1 # Flag set to 0 by regrtest.py
def unload(name):
import sys
try:

View File

@ -2,6 +2,7 @@
# Create a bunch of threads, let each do some work, wait until all are done
from test_support import verbose
import whrandom
import thread
import time
@ -19,9 +20,11 @@ def task(ident):
whmutex.acquire()
delay = whrandom.random() * numtasks
whmutex.release()
print 'task', ident, 'will run for', delay, 'sec'
if verbose:
print 'task', ident, 'will run for', delay, 'sec'
time.sleep(delay)
print 'task', ident, 'done'
if verbose:
print 'task', ident, 'done'
mutex.acquire()
running = running - 1
if running == 0:
@ -33,7 +36,8 @@ def newtask():
global next_ident, running
mutex.acquire()
next_ident = next_ident + 1
print 'creating task', next_ident
if verbose:
print 'creating task', next_ident
thread.start_new_thread(task, (next_ident,))
running = running + 1
mutex.release()
@ -84,11 +88,14 @@ def task2(ident):
whmutex.acquire()
delay = whrandom.random() * numtasks
whmutex.release()
print 'task', ident, 'will run for', delay, 'sec'
if verbose:
print 'task', ident, 'will run for', delay, 'sec'
time.sleep(delay)
print 'task', ident, 'entering barrier', i
if verbose:
print 'task', ident, 'entering barrier', i
bar.enter()
print 'task', ident, 'leaving barrier', i
if verbose:
print 'task', ident, 'leaving barrier', i
mutex.acquire()
running = running - 1
if running == 0:

View File

@ -13,8 +13,8 @@ if int(time.mktime(time.localtime(t))) <> int(t):
time.sleep(1.2)
tt = time.gmtime(t)
for directive in ('a', 'A', 'b', 'B', 'c', 'd', 'E', 'H', 'I',
'j', 'm', 'M', 'n', 'N', 'o', 'p', 'S', 't',
for directive in ('a', 'A', 'b', 'B', 'c', 'd', 'H', 'I',
'j', 'm', 'M', 'p', 'S',
'U', 'w', 'W', 'x', 'X', 'y', 'Y', 'Z', '%'):
format = '%' + directive
time.strftime(format, tt)