1# test_inttypes.py -- Test Metakit Python bindings for integral types
2# $Id: test_inttypes.py 1230 2007-03-09 15:58:53Z jcw $
3# This is part of Metakit, see http://www.equi4.com/metakit/
4
5from mktestsupport import *
6
7v = ViewTester('test[intf:I,longf:L]')
8
9# defaults
10v.insert(intf=0, longf=0)
11
12# int field
13v.insert(intf=1, longf=0)
14v.insert(intf=-5, longf=0)
15v.insert(intf=MAXINT, longf=0)
16v.insert(intf=MININT, longf=0)
17v.reject(int_long_error, intf=MAXINT + 1, longf=0)
18v.reject(int_long_error, intf=MININT - 1, longf=0)
19if int_long_integrated:
20    v.reject(OverflowError, intf=MAXLONGLONG, longf=0)
21    v.reject(OverflowError, intf=MINLONGLONG, longf=0)
22
23# long field
24v.insert(intf=0, longf=-1L)
25v.insert(intf=0, longf=5L)
26v.insert(intf=0, longf=MAXLONGLONG)
27v.insert(intf=0, longf=MINLONGLONG)
28v.reject(ValueError, intf=0, longf=MAXULONGLONG)
29v.reject(ValueError, intf=0, longf=MAXLONGLONG + 1)
30v.reject(ValueError, intf=0, longf=MAXULONGLONG)
31v.reject(ValueError, intf=0, longf=MINLONGLONG - 1)
32
33# mixed valid int/long
34v.insert(intf=1, longf=2)
35v.insert(intf=-5, longf=-2**30)
36
37# implicit conversion to int
38v.insert(intf=14L, longf=0)
39v.insert(intf=-30L, longf=0)
40v.insert(intf=45.0, longf=0)
41v.insert(intf=21.4, longf=0)
42v.reject(int_long_error, intf=float(MAXINT + 1), longf=0)
43v.reject(int_long_error, intf=float(MININT - 1), longf=0)
44v.reject(TypeError, intf='215', longf=0)
45v.reject(TypeError, intf='-318.19', longf=0)
46v.reject(TypeError, intf=str(MAXINT + 1), longf=0)
47
48# implicit conversion to long
49v.insert(intf=0, longf=278)
50v.insert(intf=0, longf=-213)
51v.insert(intf=0, longf=95.0)
52v.insert(intf=0, longf=27.3)
53v.reject(ValueError, intf=0, longf=float(2 * MAXLONGLONG))
54v.reject(ValueError, intf=0, longf=float(2 * MINLONGLONG))
55v.reject(TypeError, intf=0, longf=str(MAXLONGLONG))
56v.reject(TypeError, intf=0, longf=str(MINLONGLONG))
57v.reject(TypeError, intf=0, longf='-21.39')
58v.reject(TypeError, intf=0, longf=str(MAXULONGLONG))
59
60# XXX should repeat with assignment instead of appending
61# XXX test v.select()
62
63v.finished()
64