test_arr.py 2.7 KB
Newer Older
1 2
#! /usr/bin/env python
"""Test the arraymodule.
Guido van Rossum's avatar
Guido van Rossum committed
3
   Roger E. Masse
4 5
"""
import array
Guido van Rossum's avatar
Guido van Rossum committed
6
from test_support import verbose, TESTFN, unlink, TestFailed
Guido van Rossum's avatar
Guido van Rossum committed
7 8 9 10 11 12

def main():

    testtype('c', 'c')

    for type in (['b', 'h', 'i', 'l', 'f', 'd']):
Guido van Rossum's avatar
Guido van Rossum committed
13
        testtype(type, 1)
Guido van Rossum's avatar
Guido van Rossum committed
14

Guido van Rossum's avatar
Guido van Rossum committed
15 16
    unlink(TESTFN)

17 18 19

def testtype(type, example):

Guido van Rossum's avatar
Guido van Rossum committed
20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55
        a = array.array(type)
        a.append(example)
        if verbose:
            print 40*'*'
            print 'array after append: ', a
        a.typecode
        a.itemsize
        if a.typecode in ('i', 'b', 'h', 'l'):
            a.byteswap()

        if a.typecode == 'c':
            f = open(TESTFN, "w")
            f.write("The quick brown fox jumps over the lazy dog.\n")
            f.close()
            f = open(TESTFN, 'r')
            a.fromfile(f, 10)
            f.close()
            if verbose:
                print 'char array with 10 bytes of TESTFN appended: ', a
            a.fromlist(['a', 'b', 'c'])
            if verbose:
                print 'char array with list appended: ', a

        a.insert(0, example)
        if verbose:
            print 'array of %s after inserting another:' % a.typecode, a
        f = open(TESTFN, 'w')
        a.tofile(f)
        f.close()
        a.tolist()
        a.tostring()
        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()`
56

Guido van Rossum's avatar
Guido van Rossum committed
57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83
        if type == 'c':
            a = array.array(type, "abcde")
            a[:-1] = a
            if a != array.array(type, "abcdee"):
                raise TestFailed, "array(%s) self-slice-assign (head)" % `type`
            a = array.array(type, "abcde")
            a[1:] = a
            if a != array.array(type, "aabcde"):
                raise TestFailed, "array(%s) self-slice-assign (tail)" % `type`
            a = array.array(type, "abcde")
            a[1:-1] = a
            if a != array.array(type, "aabcdee"):
                raise TestFailed, "array(%s) self-slice-assign (cntr)" % `type`
        else:
            a = array.array(type, [1, 2, 3, 4, 5])
            a[:-1] = a
            if a != array.array(type, [1, 2, 3, 4, 5, 5]):
                raise TestFailed, "array(%s) self-slice-assign (head)" % `type`
            a = array.array(type, [1, 2, 3, 4, 5])
            a[1:] = a
            if a != array.array(type, [1, 1, 2, 3, 4, 5]):
                raise TestFailed, "array(%s) self-slice-assign (tail)" % `type`
            a = array.array(type, [1, 2, 3, 4, 5])
            a[1:-1] = a
            if a != array.array(type, [1, 1, 2, 3, 4, 5, 5]):
                raise TestFailed, "array(%s) self-slice-assign (cntr)" % `type`

Guido van Rossum's avatar
Guido van Rossum committed
84

Guido van Rossum's avatar
Guido van Rossum committed
85
main()
Guido van Rossum's avatar
Guido van Rossum committed
86