diff options
author | Martin v. Löwis <martin@v.loewis.de> | 2006-10-27 06:16:31 (GMT) |
---|---|---|
committer | Martin v. Löwis <martin@v.loewis.de> | 2006-10-27 06:16:31 (GMT) |
commit | b5bc537c5eac8115c2bbc6e7ec75578632e2164c (patch) | |
tree | 8e06807e7f12b01c3e6cd2e852afb4ce0d6b131a /Lib/test | |
parent | efb57072feb9da7ff7870e36f0fc9272a103de80 (diff) | |
download | cpython-b5bc537c5eac8115c2bbc6e7ec75578632e2164c.zip cpython-b5bc537c5eac8115c2bbc6e7ec75578632e2164c.tar.gz cpython-b5bc537c5eac8115c2bbc6e7ec75578632e2164c.tar.bz2 |
Patch #1549049: Rewrite type conversion in structmember.
Fixes #1545696 and #1566140. Will backport to 2.5.
Diffstat (limited to 'Lib/test')
-rw-r--r-- | Lib/test/test_structmembers.py | 80 |
1 files changed, 80 insertions, 0 deletions
diff --git a/Lib/test/test_structmembers.py b/Lib/test/test_structmembers.py new file mode 100644 index 0000000..3a08dc4 --- /dev/null +++ b/Lib/test/test_structmembers.py @@ -0,0 +1,80 @@ +from _testcapi import test_structmembersType, \ + CHAR_MAX, CHAR_MIN, UCHAR_MAX, \ + SHRT_MAX, SHRT_MIN, USHRT_MAX, \ + INT_MAX, INT_MIN, UINT_MAX, \ + LONG_MAX, LONG_MIN, ULONG_MAX + +import warnings, exceptions, unittest, test.test_warnings +from test import test_support + +ts=test_structmembersType(1,2,3,4,5,6,7,8,9.99999,10.1010101010) + +class ReadWriteTests(unittest.TestCase): + def test_types(self): + ts.T_BYTE=CHAR_MAX + self.assertEquals(ts.T_BYTE, CHAR_MAX) + ts.T_BYTE=CHAR_MIN + self.assertEquals(ts.T_BYTE, CHAR_MIN) + ts.T_UBYTE=UCHAR_MAX + self.assertEquals(ts.T_UBYTE, UCHAR_MAX) + + ts.T_SHORT=SHRT_MAX + self.assertEquals(ts.T_SHORT, SHRT_MAX) + ts.T_SHORT=SHRT_MIN + self.assertEquals(ts.T_SHORT, SHRT_MIN) + ts.T_USHORT=USHRT_MAX + self.assertEquals(ts.T_USHORT, USHRT_MAX) + + ts.T_INT=INT_MAX + self.assertEquals(ts.T_INT, INT_MAX) + ts.T_INT=INT_MIN + self.assertEquals(ts.T_INT, INT_MIN) + ts.T_UINT=UINT_MAX + self.assertEquals(ts.T_UINT, UINT_MAX) + + ts.T_LONG=LONG_MAX + self.assertEquals(ts.T_LONG, LONG_MAX) + ts.T_LONG=LONG_MIN + self.assertEquals(ts.T_LONG, LONG_MIN) + ts.T_ULONG=ULONG_MAX + self.assertEquals(ts.T_ULONG, ULONG_MAX) + +class TestWarnings(test.test_warnings.TestModule): + def has_warned(self): + self.assertEqual(test.test_warnings.msg.category, + exceptions.RuntimeWarning.__name__) + + def test_byte_max(self): + ts.T_BYTE=CHAR_MAX+1 + self.has_warned() + + def test_byte_min(self): + ts.T_BYTE=CHAR_MIN-1 + self.has_warned() + + def test_ubyte_max(self): + ts.T_UBYTE=UCHAR_MAX+1 + self.has_warned() + + def test_short_max(self): + ts.T_SHORT=SHRT_MAX+1 + self.has_warned() + + def test_short_min(self): + ts.T_SHORT=SHRT_MIN-1 + self.has_warned() + + def test_ushort_max(self): + ts.T_USHORT=USHRT_MAX+1 + self.has_warned() + + + +def test_main(verbose=None): + test_support.run_unittest( + ReadWriteTests, + TestWarnings + ) + +if __name__ == "__main__": + test_main(verbose=True) |