~ubuntu-branches/ubuntu/natty/python3.1/natty-security

« back to all changes in this revision

Viewing changes to Lib/test/test_structmembers.py

  • Committer: Bazaar Package Importer
  • Author(s): Matthias Klose
  • Date: 2010-07-06 16:52:42 UTC
  • mfrom: (1.2.1 upstream) (2.1.11 sid)
  • Revision ID: james.westby@ubuntu.com-20100706165242-2xv4i019r3et6c0j
Tags: 3.1.2+20100706-1ubuntu1
* Merge with Debian; remaining changes:
  - Regenerate the control file.
  - Add debian/patches/overwrite-semaphore-check for Lucid buildds.

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
from _testcapi import test_structmembersType, \
 
1
from _testcapi import _test_structmembersType, \
2
2
    CHAR_MAX, CHAR_MIN, UCHAR_MAX, \
3
3
    SHRT_MAX, SHRT_MIN, USHRT_MAX, \
4
4
    INT_MAX, INT_MIN, UINT_MAX, \
5
5
    LONG_MAX, LONG_MIN, ULONG_MAX, \
6
 
    LLONG_MAX, LLONG_MIN, ULLONG_MAX
 
6
    LLONG_MAX, LLONG_MIN, ULLONG_MAX, \
 
7
    PY_SSIZE_T_MAX, PY_SSIZE_T_MIN
7
8
 
8
9
import warnings, unittest, sys
9
10
from test import support
10
11
 
11
 
ts=test_structmembersType(False, 1, 2, 3, 4, 5, 6, 7, 8,
12
 
                          9.99999, 10.1010101010)
 
12
ts=_test_structmembersType(False,  # T_BOOL
 
13
                          1,      # T_BYTE
 
14
                          2,      # T_UBYTE
 
15
                          3,      # T_SHORT
 
16
                          4,      # T_USHORT
 
17
                          5,      # T_INT
 
18
                          6,      # T_UINT
 
19
                          7,      # T_LONG
 
20
                          8,      # T_ULONG
 
21
                          23,     # T_PYSSIZET
 
22
                          9.99999,# T_FLOAT
 
23
                          10.1010101010, # T_DOUBLE
 
24
                          "hi" # T_STRING_INPLACE
 
25
                          )
13
26
 
14
27
class ReadWriteTests(unittest.TestCase):
15
 
    def test_types(self):
 
28
 
 
29
    def test_bool(self):
16
30
        ts.T_BOOL = True
17
31
        self.assertEquals(ts.T_BOOL, True)
18
32
        ts.T_BOOL = False
19
33
        self.assertEquals(ts.T_BOOL, False)
20
34
        self.assertRaises(TypeError, setattr, ts, 'T_BOOL', 1)
21
35
 
 
36
    def test_byte(self):
22
37
        ts.T_BYTE = CHAR_MAX
23
38
        self.assertEquals(ts.T_BYTE, CHAR_MAX)
24
39
        ts.T_BYTE = CHAR_MIN
26
41
        ts.T_UBYTE = UCHAR_MAX
27
42
        self.assertEquals(ts.T_UBYTE, UCHAR_MAX)
28
43
 
 
44
    def test_short(self):
29
45
        ts.T_SHORT = SHRT_MAX
30
46
        self.assertEquals(ts.T_SHORT, SHRT_MAX)
31
47
        ts.T_SHORT = SHRT_MIN
33
49
        ts.T_USHORT = USHRT_MAX
34
50
        self.assertEquals(ts.T_USHORT, USHRT_MAX)
35
51
 
 
52
    def test_int(self):
36
53
        ts.T_INT = INT_MAX
37
54
        self.assertEquals(ts.T_INT, INT_MAX)
38
55
        ts.T_INT = INT_MIN
40
57
        ts.T_UINT = UINT_MAX
41
58
        self.assertEquals(ts.T_UINT, UINT_MAX)
42
59
 
 
60
    def test_long(self):
43
61
        ts.T_LONG = LONG_MAX
44
62
        self.assertEquals(ts.T_LONG, LONG_MAX)
45
63
        ts.T_LONG = LONG_MIN
47
65
        ts.T_ULONG = ULONG_MAX
48
66
        self.assertEquals(ts.T_ULONG, ULONG_MAX)
49
67
 
50
 
        ## T_LONGLONG and T_ULONGLONG may not be present on some platforms
 
68
    def test_py_ssize_t(self):
 
69
        ts.T_PYSSIZET = PY_SSIZE_T_MAX
 
70
        self.assertEquals(ts.T_PYSSIZET, PY_SSIZE_T_MAX)
 
71
        ts.T_PYSSIZET = PY_SSIZE_T_MIN
 
72
        self.assertEquals(ts.T_PYSSIZET, PY_SSIZE_T_MIN)
 
73
 
 
74
    @unittest.skipUnless(hasattr(ts, "T_LONGLONG"), "long long not present")
 
75
    def test_longlong(self):
 
76
        ts.T_LONGLONG = LLONG_MAX
 
77
        self.assertEquals(ts.T_LONGLONG, LLONG_MAX)
 
78
        ts.T_LONGLONG = LLONG_MIN
 
79
        self.assertEquals(ts.T_LONGLONG, LLONG_MIN)
 
80
 
 
81
        ts.T_ULONGLONG = ULLONG_MAX
 
82
        self.assertEquals(ts.T_ULONGLONG, ULLONG_MAX)
 
83
 
 
84
        ## make sure these will accept a plain int as well as a long
 
85
        ts.T_LONGLONG = 3
 
86
        self.assertEquals(ts.T_LONGLONG, 3)
 
87
        ts.T_ULONGLONG = 4
 
88
        self.assertEquals(ts.T_ULONGLONG, 4)
 
89
 
 
90
    def test_bad_assignments(self):
 
91
        integer_attributes = [
 
92
            'T_BOOL',
 
93
            'T_BYTE', 'T_UBYTE',
 
94
            'T_SHORT', 'T_USHORT',
 
95
            'T_INT', 'T_UINT',
 
96
            'T_LONG', 'T_ULONG',
 
97
            'T_PYSSIZET'
 
98
            ]
51
99
        if hasattr(ts, 'T_LONGLONG'):
52
 
            ts.T_LONGLONG = LLONG_MAX
53
 
            self.assertEquals(ts.T_LONGLONG, LLONG_MAX)
54
 
            ts.T_LONGLONG = LLONG_MIN
55
 
            self.assertEquals(ts.T_LONGLONG, LLONG_MIN)
56
 
 
57
 
            ts.T_ULONGLONG = ULLONG_MAX
58
 
            self.assertEquals(ts.T_ULONGLONG, ULLONG_MAX)
59
 
 
60
 
            ## make sure these will accept a plain int as well as a long
61
 
            ts.T_LONGLONG = 3
62
 
            self.assertEquals(ts.T_LONGLONG, 3)
63
 
            ts.T_ULONGLONG = 4
64
 
            self.assertEquals(ts.T_ULONGLONG, 4)
 
100
            integer_attributes.extend(['T_LONGLONG', 'T_ULONGLONG'])
 
101
 
 
102
        # issue8014: this produced 'bad argument to internal function'
 
103
        # internal error
 
104
        for nonint in None, 3.2j, "full of eels", {}, []:
 
105
            for attr in integer_attributes:
 
106
                self.assertRaises(TypeError, setattr, ts, attr, nonint)
 
107
 
 
108
    def test_inplace_string(self):
 
109
        self.assertEquals(ts.T_STRING_INPLACE, "hi")
 
110
        self.assertRaises(TypeError, setattr, ts, "T_STRING_INPLACE", "s")
 
111
        self.assertRaises(TypeError, delattr, ts, "T_STRING_INPLACE")
65
112
 
66
113
 
67
114
class TestWarnings(unittest.TestCase):