blob: a59cfa952f4e3daa541eb010a5aacd461a8dfe60 [file] [log] [blame]
Martin v. Löwisb5bc5372006-10-27 06:16:31 +00001from _testcapi import test_structmembersType, \
2 CHAR_MAX, CHAR_MIN, UCHAR_MAX, \
3 SHRT_MAX, SHRT_MIN, USHRT_MAX, \
4 INT_MAX, INT_MIN, UINT_MAX, \
Martin v. Löwis6371cd82007-06-09 07:42:52 +00005 LONG_MAX, LONG_MIN, ULONG_MAX, \
6 LLONG_MAX, LLONG_MIN, ULLONG_MAX
Martin v. Löwisb5bc5372006-10-27 06:16:31 +00007
Collin Winter68f525f2007-08-24 21:09:42 +00008import warnings, exceptions, unittest, sys
Martin v. Löwisb5bc5372006-10-27 06:16:31 +00009from test import test_support
10
Georg Brandlc09b94e2008-01-21 21:28:32 +000011ts=test_structmembersType(False, 1, 2, 3, 4, 5, 6, 7, 8,
12 9.99999, 10.1010101010)
Martin v. Löwisb5bc5372006-10-27 06:16:31 +000013
14class ReadWriteTests(unittest.TestCase):
15 def test_types(self):
Georg Brandlc09b94e2008-01-21 21:28:32 +000016 ts.T_BOOL = True
Georg Brandl32a3fb52008-01-21 21:23:15 +000017 self.assertEquals(ts.T_BOOL, True)
Georg Brandlc09b94e2008-01-21 21:28:32 +000018 ts.T_BOOL = False
Georg Brandl32a3fb52008-01-21 21:23:15 +000019 self.assertEquals(ts.T_BOOL, False)
20 self.assertRaises(TypeError, setattr, ts, 'T_BOOL', 1)
21
Georg Brandlc09b94e2008-01-21 21:28:32 +000022 ts.T_BYTE = CHAR_MAX
Martin v. Löwisb5bc5372006-10-27 06:16:31 +000023 self.assertEquals(ts.T_BYTE, CHAR_MAX)
Georg Brandlc09b94e2008-01-21 21:28:32 +000024 ts.T_BYTE = CHAR_MIN
Martin v. Löwisb5bc5372006-10-27 06:16:31 +000025 self.assertEquals(ts.T_BYTE, CHAR_MIN)
Georg Brandlc09b94e2008-01-21 21:28:32 +000026 ts.T_UBYTE = UCHAR_MAX
Martin v. Löwisb5bc5372006-10-27 06:16:31 +000027 self.assertEquals(ts.T_UBYTE, UCHAR_MAX)
28
Georg Brandlc09b94e2008-01-21 21:28:32 +000029 ts.T_SHORT = SHRT_MAX
Martin v. Löwisb5bc5372006-10-27 06:16:31 +000030 self.assertEquals(ts.T_SHORT, SHRT_MAX)
Georg Brandlc09b94e2008-01-21 21:28:32 +000031 ts.T_SHORT = SHRT_MIN
Martin v. Löwisb5bc5372006-10-27 06:16:31 +000032 self.assertEquals(ts.T_SHORT, SHRT_MIN)
Georg Brandlc09b94e2008-01-21 21:28:32 +000033 ts.T_USHORT = USHRT_MAX
Martin v. Löwisb5bc5372006-10-27 06:16:31 +000034 self.assertEquals(ts.T_USHORT, USHRT_MAX)
35
Georg Brandlc09b94e2008-01-21 21:28:32 +000036 ts.T_INT = INT_MAX
Martin v. Löwisb5bc5372006-10-27 06:16:31 +000037 self.assertEquals(ts.T_INT, INT_MAX)
Georg Brandlc09b94e2008-01-21 21:28:32 +000038 ts.T_INT = INT_MIN
Martin v. Löwisb5bc5372006-10-27 06:16:31 +000039 self.assertEquals(ts.T_INT, INT_MIN)
Georg Brandlc09b94e2008-01-21 21:28:32 +000040 ts.T_UINT = UINT_MAX
Martin v. Löwisb5bc5372006-10-27 06:16:31 +000041 self.assertEquals(ts.T_UINT, UINT_MAX)
42
Georg Brandlc09b94e2008-01-21 21:28:32 +000043 ts.T_LONG = LONG_MAX
Martin v. Löwisb5bc5372006-10-27 06:16:31 +000044 self.assertEquals(ts.T_LONG, LONG_MAX)
Georg Brandlc09b94e2008-01-21 21:28:32 +000045 ts.T_LONG = LONG_MIN
Martin v. Löwisb5bc5372006-10-27 06:16:31 +000046 self.assertEquals(ts.T_LONG, LONG_MIN)
Georg Brandlc09b94e2008-01-21 21:28:32 +000047 ts.T_ULONG = ULONG_MAX
Martin v. Löwisb5bc5372006-10-27 06:16:31 +000048 self.assertEquals(ts.T_ULONG, ULONG_MAX)
49
Martin v. Löwis6371cd82007-06-09 07:42:52 +000050 ## T_LONGLONG and T_ULONGLONG may not be present on some platforms
51 if hasattr(ts, 'T_LONGLONG'):
Georg Brandlc09b94e2008-01-21 21:28:32 +000052 ts.T_LONGLONG = LLONG_MAX
Martin v. Löwis6371cd82007-06-09 07:42:52 +000053 self.assertEquals(ts.T_LONGLONG, LLONG_MAX)
Georg Brandlc09b94e2008-01-21 21:28:32 +000054 ts.T_LONGLONG = LLONG_MIN
Martin v. Löwis6371cd82007-06-09 07:42:52 +000055 self.assertEquals(ts.T_LONGLONG, LLONG_MIN)
56
Georg Brandlc09b94e2008-01-21 21:28:32 +000057 ts.T_ULONGLONG = ULLONG_MAX
Martin v. Löwis6371cd82007-06-09 07:42:52 +000058 self.assertEquals(ts.T_ULONGLONG, ULLONG_MAX)
59
60 ## make sure these will accept a plain int as well as a long
Georg Brandlc09b94e2008-01-21 21:28:32 +000061 ts.T_LONGLONG = 3
Martin v. Löwis6371cd82007-06-09 07:42:52 +000062 self.assertEquals(ts.T_LONGLONG, 3)
Georg Brandlc09b94e2008-01-21 21:28:32 +000063 ts.T_ULONGLONG = 4
Martin v. Löwis6371cd82007-06-09 07:42:52 +000064 self.assertEquals(ts.T_ULONGLONG, 4)
65
66
Walter Dörwalde6dae6c2007-04-03 18:33:29 +000067class TestWarnings(unittest.TestCase):
68 def has_warned(self, w):
Collin Winter68f525f2007-08-24 21:09:42 +000069 self.assertEqual(w.category, RuntimeWarning)
Tim Petersabd8a332006-11-03 02:32:46 +000070
Martin v. Löwisb5bc5372006-10-27 06:16:31 +000071 def test_byte_max(self):
Walter Dörwalde6dae6c2007-04-03 18:33:29 +000072 with test_support.catch_warning() as w:
Georg Brandlc09b94e2008-01-21 21:28:32 +000073 ts.T_BYTE = CHAR_MAX+1
Walter Dörwalde6dae6c2007-04-03 18:33:29 +000074 self.has_warned(w)
Tim Petersabd8a332006-11-03 02:32:46 +000075
Martin v. Löwisb5bc5372006-10-27 06:16:31 +000076 def test_byte_min(self):
Walter Dörwalde6dae6c2007-04-03 18:33:29 +000077 with test_support.catch_warning() as w:
Georg Brandlc09b94e2008-01-21 21:28:32 +000078 ts.T_BYTE = CHAR_MIN-1
Walter Dörwalde6dae6c2007-04-03 18:33:29 +000079 self.has_warned(w)
Martin v. Löwisb5bc5372006-10-27 06:16:31 +000080
81 def test_ubyte_max(self):
Walter Dörwalde6dae6c2007-04-03 18:33:29 +000082 with test_support.catch_warning() as w:
Georg Brandlc09b94e2008-01-21 21:28:32 +000083 ts.T_UBYTE = UCHAR_MAX+1
Walter Dörwalde6dae6c2007-04-03 18:33:29 +000084 self.has_warned(w)
Martin v. Löwisb5bc5372006-10-27 06:16:31 +000085
86 def test_short_max(self):
Walter Dörwalde6dae6c2007-04-03 18:33:29 +000087 with test_support.catch_warning() as w:
Georg Brandlc09b94e2008-01-21 21:28:32 +000088 ts.T_SHORT = SHRT_MAX+1
Walter Dörwalde6dae6c2007-04-03 18:33:29 +000089 self.has_warned(w)
Martin v. Löwisb5bc5372006-10-27 06:16:31 +000090
91 def test_short_min(self):
Walter Dörwalde6dae6c2007-04-03 18:33:29 +000092 with test_support.catch_warning() as w:
Georg Brandlc09b94e2008-01-21 21:28:32 +000093 ts.T_SHORT = SHRT_MIN-1
Walter Dörwalde6dae6c2007-04-03 18:33:29 +000094 self.has_warned(w)
Martin v. Löwisb5bc5372006-10-27 06:16:31 +000095
96 def test_ushort_max(self):
Walter Dörwalde6dae6c2007-04-03 18:33:29 +000097 with test_support.catch_warning() as w:
Georg Brandlc09b94e2008-01-21 21:28:32 +000098 ts.T_USHORT = USHRT_MAX+1
Walter Dörwalde6dae6c2007-04-03 18:33:29 +000099 self.has_warned(w)
Martin v. Löwisb5bc5372006-10-27 06:16:31 +0000100
Tim Petersabd8a332006-11-03 02:32:46 +0000101
Martin v. Löwisb5bc5372006-10-27 06:16:31 +0000102
103def test_main(verbose=None):
Collin Winter68f525f2007-08-24 21:09:42 +0000104 # Obscure hack so that this test passes after reloads or repeated calls
105 # to test_main (regrtest -R).
106 if '__warningregistry__' in globals():
107 del globals()['__warningregistry__']
108 if hasattr(sys, '__warningregistry__'):
109 del sys.__warningregistry__
110 test_support.run_unittest(__name__)
Martin v. Löwisb5bc5372006-10-27 06:16:31 +0000111
112if __name__ == "__main__":
113 test_main(verbose=True)