annotate python/pydc/test/types_test.py @ 62:4a9f6c7c09c1 default tip

- fix inccorect overflow errors for int (and long on LLP64 systems)
author Tassilo Philipp
date Sat, 18 May 2024 15:33:54 +0200
parents c5a69c454963
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
29
6cc2b7fc7ea2 bigger pydc update:
Tassilo Philipp
parents:
diff changeset
1 import pydc
6cc2b7fc7ea2 bigger pydc update:
Tassilo Philipp
parents:
diff changeset
2 import sys
6cc2b7fc7ea2 bigger pydc update:
Tassilo Philipp
parents:
diff changeset
3 import platform
57
80b11152c659 make pydc tests display failed ones
Tassilo Philipp
parents: 46
diff changeset
4 import copy
80b11152c659 make pydc tests display failed ones
Tassilo Philipp
parents: 46
diff changeset
5 import types
29
6cc2b7fc7ea2 bigger pydc update:
Tassilo Philipp
parents:
diff changeset
6
6cc2b7fc7ea2 bigger pydc update:
Tassilo Philipp
parents:
diff changeset
7
6cc2b7fc7ea2 bigger pydc update:
Tassilo Philipp
parents:
diff changeset
8
6cc2b7fc7ea2 bigger pydc update:
Tassilo Philipp
parents:
diff changeset
9 def theader(title):
34
2682a627168c - breaking changes:
Tassilo Philipp
parents: 29
diff changeset
10 print("\n"+title)
60
8e905c0798c7 - p2Z() helper func
Tassilo Philipp
parents: 58
diff changeset
11 print('%8s %20s %16s %-20s %11s %-16s -> %16s %-16s %12s %-16s # %s' % ('DC_SIG', 'C_RET_T', 'C_FSYM', 'C_PARAMLIST', 'PY_ARG_T', 'IN_ARGS', 'RET_VAL', 'PY_RET_T', 'OUT_ARGS_T', 'OUT_ARGS', 'NOTES'))
29
6cc2b7fc7ea2 bigger pydc update:
Tassilo Philipp
parents:
diff changeset
12
6cc2b7fc7ea2 bigger pydc update:
Tassilo Philipp
parents:
diff changeset
13
57
80b11152c659 make pydc tests display failed ones
Tassilo Philipp
parents: 46
diff changeset
14 def t(lib, dcsig, c_rtype, c_fsym, c_paramlist, extra_msg, **kwargs):
80b11152c659 make pydc tests display failed ones
Tassilo Philipp
parents: 46
diff changeset
15 args = kwargs['i'] if 'i' in kwargs else ()
80b11152c659 make pydc tests display failed ones
Tassilo Philipp
parents: 46
diff changeset
16 post_args = kwargs['p'] if 'p' in kwargs else copy.deepcopy(args) # expected args after call (as some can be modified in-place)
80b11152c659 make pydc tests display failed ones
Tassilo Philipp
parents: 46
diff changeset
17 exp_ret = kwargs['r'] if 'r' in kwargs else None # expected return value
80b11152c659 make pydc tests display failed ones
Tassilo Philipp
parents: 46
diff changeset
18 err_sgr = ''
34
2682a627168c - breaking changes:
Tassilo Philipp
parents: 29
diff changeset
19 # before call
2682a627168c - breaking changes:
Tassilo Philipp
parents: 29
diff changeset
20 inarg_types = '('+','.join(map(lambda x: type(x).__name__, args))+')'
57
80b11152c659 make pydc tests display failed ones
Tassilo Philipp
parents: 46
diff changeset
21 inargs_str = ','.join(map(str, args))
34
2682a627168c - breaking changes:
Tassilo Philipp
parents: 29
diff changeset
22 # call
29
6cc2b7fc7ea2 bigger pydc update:
Tassilo Philipp
parents:
diff changeset
23 try:
6cc2b7fc7ea2 bigger pydc update:
Tassilo Philipp
parents:
diff changeset
24 fp = pydc.find(lib, c_fsym)
6cc2b7fc7ea2 bigger pydc update:
Tassilo Philipp
parents:
diff changeset
25 r = pydc.call(fp, dcsig, *args)
6cc2b7fc7ea2 bigger pydc update:
Tassilo Philipp
parents:
diff changeset
26 rt = type(r).__name__
58
e4bf6e44fbf5 fixes to test code
Tassilo Philipp
parents: 57
diff changeset
27 if(r != exp_ret or args != post_args): # @@@ type test also or type(r) is not type(exp_ret)):
e4bf6e44fbf5 fixes to test code
Tassilo Philipp
parents: 57
diff changeset
28 if((type(exp_ret) is not types.LambdaType) or exp_ret(r) == False):
57
80b11152c659 make pydc tests display failed ones
Tassilo Philipp
parents: 46
diff changeset
29 err_sgr = '\033[41m'
29
6cc2b7fc7ea2 bigger pydc update:
Tassilo Philipp
parents:
diff changeset
30 except:
6cc2b7fc7ea2 bigger pydc update:
Tassilo Philipp
parents:
diff changeset
31 r = '[EXCEPTION]'
6cc2b7fc7ea2 bigger pydc update:
Tassilo Philipp
parents:
diff changeset
32 rt = '!'
57
80b11152c659 make pydc tests display failed ones
Tassilo Philipp
parents: 46
diff changeset
33 if(exp_ret != Exception):
80b11152c659 make pydc tests display failed ones
Tassilo Philipp
parents: 46
diff changeset
34 err_sgr = '\033[41m'
34
2682a627168c - breaking changes:
Tassilo Philipp
parents: 29
diff changeset
35 e = str(sys.exc_info()[1])
2682a627168c - breaking changes:
Tassilo Philipp
parents: 29
diff changeset
36 extra_msg += ' "'+(e if len(e)<32 else e[0:32]+'...')+'"'
2682a627168c - breaking changes:
Tassilo Philipp
parents: 29
diff changeset
37 # after call
2682a627168c - breaking changes:
Tassilo Philipp
parents: 29
diff changeset
38 outarg_types = '('+','.join(map(lambda x: type(x).__name__, args))+')'
2682a627168c - breaking changes:
Tassilo Philipp
parents: 29
diff changeset
39 outargs = ','.join(map(str, args))
57
80b11152c659 make pydc tests display failed ones
Tassilo Philipp
parents: 46
diff changeset
40 print('%s%8s %20s %16s %-20s %11s \033[33m%-16s\033[39m -> \033[32m%16.16s\033[39m %-16s %12s \033[32m%-16s\033[0m # %s' % (err_sgr, dcsig, c_rtype, c_fsym, c_paramlist, inarg_types, inargs_str, str(r), '('+rt+')', outarg_types, outargs, extra_msg))
80b11152c659 make pydc tests display failed ones
Tassilo Philipp
parents: 46
diff changeset
41
80b11152c659 make pydc tests display failed ones
Tassilo Philipp
parents: 46
diff changeset
42 return r
29
6cc2b7fc7ea2 bigger pydc update:
Tassilo Philipp
parents:
diff changeset
43
6cc2b7fc7ea2 bigger pydc update:
Tassilo Philipp
parents:
diff changeset
44
6cc2b7fc7ea2 bigger pydc update:
Tassilo Philipp
parents:
diff changeset
45
6cc2b7fc7ea2 bigger pydc update:
Tassilo Philipp
parents:
diff changeset
46 # some libc tests ------------------
6cc2b7fc7ea2 bigger pydc update:
Tassilo Philipp
parents:
diff changeset
47
6cc2b7fc7ea2 bigger pydc update:
Tassilo Philipp
parents:
diff changeset
48 try:
57
80b11152c659 make pydc tests display failed ones
Tassilo Philipp
parents: 46
diff changeset
49 if len(sys.argv) > 1:
80b11152c659 make pydc tests display failed ones
Tassilo Philipp
parents: 46
diff changeset
50 libc = pydc.load(sys.argv[1])
80b11152c659 make pydc tests display failed ones
Tassilo Philipp
parents: 46
diff changeset
51 elif sys.platform == "win32":
29
6cc2b7fc7ea2 bigger pydc update:
Tassilo Philipp
parents:
diff changeset
52 libc = pydc.load("msvcrt")
6cc2b7fc7ea2 bigger pydc update:
Tassilo Philipp
parents:
diff changeset
53 elif sys.platform == "darwin":
6cc2b7fc7ea2 bigger pydc update:
Tassilo Philipp
parents:
diff changeset
54 libc = pydc.load("/usr/lib/libc.dylib")
6cc2b7fc7ea2 bigger pydc update:
Tassilo Philipp
parents:
diff changeset
55 elif "bsd" in sys.platform:
6cc2b7fc7ea2 bigger pydc update:
Tassilo Philipp
parents:
diff changeset
56 libc = pydc.load("/usr/lib/libc.so")
6cc2b7fc7ea2 bigger pydc update:
Tassilo Philipp
parents:
diff changeset
57 #libc = pydc.load("/lib/libc.so.7")
6cc2b7fc7ea2 bigger pydc update:
Tassilo Philipp
parents:
diff changeset
58 elif platform.architecture()[0] == "64bit":
6cc2b7fc7ea2 bigger pydc update:
Tassilo Philipp
parents:
diff changeset
59 libc = pydc.load("/lib64/libc.so.6")
6cc2b7fc7ea2 bigger pydc update:
Tassilo Philipp
parents:
diff changeset
60 else:
57
80b11152c659 make pydc tests display failed ones
Tassilo Philipp
parents: 46
diff changeset
61 libc = pydc.load("/lib/libc.so")
29
6cc2b7fc7ea2 bigger pydc update:
Tassilo Philipp
parents:
diff changeset
62
6cc2b7fc7ea2 bigger pydc update:
Tassilo Philipp
parents:
diff changeset
63 theader('CLIB TESTS:')
6cc2b7fc7ea2 bigger pydc update:
Tassilo Philipp
parents:
diff changeset
64
6cc2b7fc7ea2 bigger pydc update:
Tassilo Philipp
parents:
diff changeset
65 # void()
6cc2b7fc7ea2 bigger pydc update:
Tassilo Philipp
parents:
diff changeset
66 t(libc, ")v", "void", "sranddev", "(void)", '')
6cc2b7fc7ea2 bigger pydc update:
Tassilo Philipp
parents:
diff changeset
67
6cc2b7fc7ea2 bigger pydc update:
Tassilo Philipp
parents:
diff changeset
68 # int()
58
e4bf6e44fbf5 fixes to test code
Tassilo Philipp
parents: 57
diff changeset
69 t(libc, ")i", "int", "rand", "(void)", '', r=lambda i: type(i) is int)
29
6cc2b7fc7ea2 bigger pydc update:
Tassilo Philipp
parents:
diff changeset
70
6cc2b7fc7ea2 bigger pydc update:
Tassilo Philipp
parents:
diff changeset
71 # void(unsigned int)
57
80b11152c659 make pydc tests display failed ones
Tassilo Philipp
parents: 46
diff changeset
72 t(libc, "I)v", "void", "srand", "(int)", '', i=(123,))
29
6cc2b7fc7ea2 bigger pydc update:
Tassilo Philipp
parents:
diff changeset
73
6cc2b7fc7ea2 bigger pydc update:
Tassilo Philipp
parents:
diff changeset
74 # int() (and one different helper call for test)
57
80b11152c659 make pydc tests display failed ones
Tassilo Philipp
parents: 46
diff changeset
75 x = \
80b11152c659 make pydc tests display failed ones
Tassilo Philipp
parents: 46
diff changeset
76 t(libc, ")i", "int", "rand", "(void)", 'with seed <------,', r=lambda i: type(i) is int)
80b11152c659 make pydc tests display failed ones
Tassilo Philipp
parents: 46
diff changeset
77 t(libc, "I)v", "void", "srand", "(int)", 'set same seed |', i=(123,))
80b11152c659 make pydc tests display failed ones
Tassilo Philipp
parents: 46
diff changeset
78 t(libc, ")i", "int", "rand", "(void)", 'should be same result...', r=x)
80b11152c659 make pydc tests display failed ones
Tassilo Philipp
parents: 46
diff changeset
79 t(libc, ")i", "int", "rand", "(void)", '...and now different result', r=lambda i: type(i) is int and i!=x)
29
6cc2b7fc7ea2 bigger pydc update:
Tassilo Philipp
parents:
diff changeset
80
6cc2b7fc7ea2 bigger pydc update:
Tassilo Philipp
parents:
diff changeset
81 # int(int)
57
80b11152c659 make pydc tests display failed ones
Tassilo Philipp
parents: 46
diff changeset
82 t(libc, "i)i", "int", "abs", "(int)", ' 10 => 10', i=( 10,), r=10)
80b11152c659 make pydc tests display failed ones
Tassilo Philipp
parents: 46
diff changeset
83 t(libc, "i)i", "int", "abs", "(int)", ' 0 => 0', i=( 0,), r=0)
80b11152c659 make pydc tests display failed ones
Tassilo Philipp
parents: 46
diff changeset
84 t(libc, "i)i", "int", "abs", "(int)", ' -9209 => 9209', i=(-9209,), r=9209)
29
6cc2b7fc7ea2 bigger pydc update:
Tassilo Philipp
parents:
diff changeset
85
6cc2b7fc7ea2 bigger pydc update:
Tassilo Philipp
parents:
diff changeset
86 # long(long)
57
80b11152c659 make pydc tests display failed ones
Tassilo Philipp
parents: 46
diff changeset
87 t(libc, "j)j", "long", "labs", "(long)", ' 48 => 48', i=( 48,), r=48)
80b11152c659 make pydc tests display failed ones
Tassilo Philipp
parents: 46
diff changeset
88 t(libc, "j)j", "long", "labs", "(long)", ' 0 => 0', i=( 0,), r=0)
80b11152c659 make pydc tests display failed ones
Tassilo Philipp
parents: 46
diff changeset
89 t(libc, "j)j", "long", "labs", "(long)", '-4271477497 => 4271477497', i=(-4271477497,), r=4271477497)
29
6cc2b7fc7ea2 bigger pydc update:
Tassilo Philipp
parents:
diff changeset
90
6cc2b7fc7ea2 bigger pydc update:
Tassilo Philipp
parents:
diff changeset
91 # long long(long long)
57
80b11152c659 make pydc tests display failed ones
Tassilo Philipp
parents: 46
diff changeset
92 t(libc, "l)l", "long long", "labs", "(long long)", ' 6334810198 => 6334810198', i=( 6334810198,), r=6334810198)
80b11152c659 make pydc tests display failed ones
Tassilo Philipp
parents: 46
diff changeset
93 t(libc, "l)l", "long long", "labs", "(long long)", ' 1 => 1', i=( 1,), r=1)
80b11152c659 make pydc tests display failed ones
Tassilo Philipp
parents: 46
diff changeset
94 t(libc, "l)l", "long long", "labs", "(long long)", ' 0 => 0', i=( 0,), r=0)
80b11152c659 make pydc tests display failed ones
Tassilo Philipp
parents: 46
diff changeset
95 t(libc, "l)l", "long long", "labs", "(long long)", ' -1 => 1', i=( -1,), r=1)
80b11152c659 make pydc tests display failed ones
Tassilo Philipp
parents: 46
diff changeset
96 t(libc, "l)l", "long long", "labs", "(long long)", '-7358758407 => 7358758407', i=(-7358758407,), r=7358758407)
29
6cc2b7fc7ea2 bigger pydc update:
Tassilo Philipp
parents:
diff changeset
97
6cc2b7fc7ea2 bigger pydc update:
Tassilo Philipp
parents:
diff changeset
98 pydc.free(libc)
6cc2b7fc7ea2 bigger pydc update:
Tassilo Philipp
parents:
diff changeset
99 except:
57
80b11152c659 make pydc tests display failed ones
Tassilo Philipp
parents: 46
diff changeset
100 print("\033[33mskipping clib tests because: "+str(sys.exc_info()[1])+"\033[0m\nnote: c-lib to use can be specified as command line param")
29
6cc2b7fc7ea2 bigger pydc update:
Tassilo Philipp
parents:
diff changeset
101
6cc2b7fc7ea2 bigger pydc update:
Tassilo Philipp
parents:
diff changeset
102
6cc2b7fc7ea2 bigger pydc update:
Tassilo Philipp
parents:
diff changeset
103 # tests with own .so for testing all conversions ------------------
6cc2b7fc7ea2 bigger pydc update:
Tassilo Philipp
parents:
diff changeset
104
6cc2b7fc7ea2 bigger pydc update:
Tassilo Philipp
parents:
diff changeset
105 l = pydc.load(sys.path[0]+"/test.so")
6cc2b7fc7ea2 bigger pydc update:
Tassilo Philipp
parents:
diff changeset
106
34
2682a627168c - breaking changes:
Tassilo Philipp
parents: 29
diff changeset
107 # "long" typed test value use for Python 2
2682a627168c - breaking changes:
Tassilo Philipp
parents: 29
diff changeset
108 long_i = 11234
2682a627168c - breaking changes:
Tassilo Philipp
parents: 29
diff changeset
109 long_h = 0xdeadc0de
2682a627168c - breaking changes:
Tassilo Philipp
parents: 29
diff changeset
110 if sys.version_info < (3, 0):
2682a627168c - breaking changes:
Tassilo Philipp
parents: 29
diff changeset
111 long_i = long(11234)
2682a627168c - breaking changes:
Tassilo Philipp
parents: 29
diff changeset
112 long_h = long(0xdeadc0de)
2682a627168c - breaking changes:
Tassilo Philipp
parents: 29
diff changeset
113
29
6cc2b7fc7ea2 bigger pydc update:
Tassilo Philipp
parents:
diff changeset
114 # test all possible arg types and their conversions to and from python, with
6cc2b7fc7ea2 bigger pydc update:
Tassilo Philipp
parents:
diff changeset
115 # specific focus/tests in areas where python 2 and 3 differ
6cc2b7fc7ea2 bigger pydc update:
Tassilo Philipp
parents:
diff changeset
116 theader('ARG & RET TYPE CONVERSION TESTS:')
57
80b11152c659 make pydc tests display failed ones
Tassilo Philipp
parents: 46
diff changeset
117 t(l, "B)B", "int", "i_plus_one", "(int)", ' False => True (using int func in C)', i=(False,), r=True)
34
2682a627168c - breaking changes:
Tassilo Philipp
parents: 29
diff changeset
118
57
80b11152c659 make pydc tests display failed ones
Tassilo Philipp
parents: 46
diff changeset
119 t(l, "c)c", "char", "c_plus_one", "(char)", ' "a" (97) => 98', i=( 'a',), r=98)
80b11152c659 make pydc tests display failed ones
Tassilo Philipp
parents: 46
diff changeset
120 t(l, "C)C", "unsigned char", "uc_plus_one", "(unsigned char)", ' "a" (97) => 98', i=( 'a',), r=98)
80b11152c659 make pydc tests display failed ones
Tassilo Philipp
parents: 46
diff changeset
121 t(l, "c)c", "char", "c_plus_one", "(char)", ' -2 => -1', i=( -2,), r=-1)
80b11152c659 make pydc tests display failed ones
Tassilo Philipp
parents: 46
diff changeset
122 t(l, "C)C", "unsigned char", "uc_plus_one", "(unsigned char)", ' 10 => 11', i=( 10,), r=11)
34
2682a627168c - breaking changes:
Tassilo Philipp
parents: 29
diff changeset
123
57
80b11152c659 make pydc tests display failed ones
Tassilo Philipp
parents: 46
diff changeset
124 t(l, "s)s", "short", "s_plus_one", "(short)", ' 10 => 11', i=( 10,), r=11)
80b11152c659 make pydc tests display failed ones
Tassilo Philipp
parents: 46
diff changeset
125 t(l, "S)S", "unsigned short", "us_plus_one", "(unsigned short)", ' 10 => 11', i=( 10,), r=11)
34
2682a627168c - breaking changes:
Tassilo Philipp
parents: 29
diff changeset
126
57
80b11152c659 make pydc tests display failed ones
Tassilo Philipp
parents: 46
diff changeset
127 t(l, "i)i", "int", "i_plus_one", "(int)", ' 10 => 11', i=( 10,), r=11)
80b11152c659 make pydc tests display failed ones
Tassilo Philipp
parents: 46
diff changeset
128 t(l, "I)I", "unsigned int", "ui_plus_one", "(unsigned int)", ' 10 => 11', i=( 10,), r=11)
34
2682a627168c - breaking changes:
Tassilo Philipp
parents: 29
diff changeset
129
57
80b11152c659 make pydc tests display failed ones
Tassilo Philipp
parents: 46
diff changeset
130 t(l, "j)j", "long", "l_plus_one", "(long)", ' 10 => 11', i=( 10,), r=11)
80b11152c659 make pydc tests display failed ones
Tassilo Philipp
parents: 46
diff changeset
131 t(l, "J)J", "unsigned long", "ul_plus_one", "(unsigned long)", ' 10 => 11', i=( 10,), r=11)
34
2682a627168c - breaking changes:
Tassilo Philipp
parents: 29
diff changeset
132
57
80b11152c659 make pydc tests display failed ones
Tassilo Philipp
parents: 46
diff changeset
133 t(l, "l)l", "long long", "ll_plus_one", "(long long)", ' 10 => 11', i=( 10,), r=11)
80b11152c659 make pydc tests display failed ones
Tassilo Philipp
parents: 46
diff changeset
134 t(l, "L)L", "unsigned long long", "ull_plus_one", "(unsigned long long)", ' 10 => 11', i=( 10,), r=11)
80b11152c659 make pydc tests display failed ones
Tassilo Philipp
parents: 46
diff changeset
135 t(l, "l)l", "long long", "ll_plus_one", "(long long)", ' 11234 => 11235', i=(long_i,), r=11235)
80b11152c659 make pydc tests display failed ones
Tassilo Philipp
parents: 46
diff changeset
136 t(l, "L)L", "unsigned long long", "ull_plus_one", "(unsigned long long)", ' 11234 => 11235', i=(long_i,), r=11235)
34
2682a627168c - breaking changes:
Tassilo Philipp
parents: 29
diff changeset
137
57
80b11152c659 make pydc tests display failed ones
Tassilo Philipp
parents: 46
diff changeset
138 t(l, "f)f", "float", "f_plus_one", "(float)", ' -1.23 => -0.23... (w/ fp imprecision)', i=( -1.23,), r=-0.23000001907348633)
80b11152c659 make pydc tests display failed ones
Tassilo Philipp
parents: 46
diff changeset
139 t(l, "d)d", "double", "d_plus_one", "(double)", ' 5.67 => 6.67', i=( 5.67,), r= 6.67)
34
2682a627168c - breaking changes:
Tassilo Philipp
parents: 29
diff changeset
140
57
80b11152c659 make pydc tests display failed ones
Tassilo Philipp
parents: 46
diff changeset
141 t(l, "Z)Z", "const char*", "ccp_plus_one", "(const char*)", '"lose char" => "ose char"', i=( 'lose char',), r= 'ose char') # string object
80b11152c659 make pydc tests display failed ones
Tassilo Philipp
parents: 46
diff changeset
142 t(l, "Z)Z", "const char*", "ccp_plus_one", "(const char*)", '"X_unicode" => "_unicode"', i=( u'X_unicode',), r=u'_unicode') # string object (unicode in Python 2)
80b11152c659 make pydc tests display failed ones
Tassilo Philipp
parents: 46
diff changeset
143 t(l, "Z)Z", "const char*", "ccp_plus_one", "(const char*)", '"1lessbyte" => "lessbyte"', i=( b'1lessbyte',), r= 'lessbyte') # bytes object
80b11152c659 make pydc tests display failed ones
Tassilo Philipp
parents: 46
diff changeset
144 t(l, "Z)Z", "const char*", "ccp_plus_one", "(const char*)", ' "xY" => "Y"', i=(bytearray(b'xY'),), r= 'Y') # bytearray object
61
c5a69c454963 - allow use of 'None' with 'Z'
Tassilo Philipp
parents: 60
diff changeset
145 t(l, "Z)p", "const char*", "ccp_plus_one", "(const char*)", ' NULL => NULL+1=1', i=( None,), r=1) # NULL, adding one will result in 0x1
34
2682a627168c - breaking changes:
Tassilo Philipp
parents: 29
diff changeset
146
57
80b11152c659 make pydc tests display failed ones
Tassilo Philipp
parents: 46
diff changeset
147 t(l, "p)Z", "const char*", "ccp_plus_one", "(const char*)", ' "xY" => "Y"', i=(bytearray(b'xY'),), r='Y') # bytearray object
58
e4bf6e44fbf5 fixes to test code
Tassilo Philipp
parents: 57
diff changeset
148 t(l, "p)p", "const char*", "ccp_plus_one", "(const char*)", ' "xY" => p+1 (~ odd addr)', i=(bytearray(b'xY'),), r=lambda i: type(i) is int and (i%2)==1) # bytearray object
57
80b11152c659 make pydc tests display failed ones
Tassilo Philipp
parents: 46
diff changeset
149 t(l, "p)p", "const char*", "ccp_plus_one", "(const char*)", ' 0xdeadc0de => 0xdeadc0de+1=3735929055', i=(long_h,), r=3735929055) # handle (integer interpreted as ptr)
80b11152c659 make pydc tests display failed ones
Tassilo Philipp
parents: 46
diff changeset
150 t(l, "p)p", "const char*", "ccp_plus_one", "(const char*)", ' 0xdeadc0de => 0xdeadc0de+1=3735929055', i=(long_h,), r=3735929055) # handle (integer interpreted as ptr, long in Python 2)
80b11152c659 make pydc tests display failed ones
Tassilo Philipp
parents: 46
diff changeset
151 t(l, "p)p", "const char*", "ccp_plus_one", "(const char*)", ' NULL => NULL+1=1', i=( None,), r=1) # NULL, adding one will result in 0x1
34
2682a627168c - breaking changes:
Tassilo Philipp
parents: 29
diff changeset
152
60
8e905c0798c7 - p2Z() helper func
Tassilo Philipp
parents: 58
diff changeset
153 # helper func to test p2Z
8e905c0798c7 - p2Z() helper func
Tassilo Philipp
parents: 58
diff changeset
154 t(l, "p)p", "const char*", "ccp_plus_one", "(const char*)", ' "xY" => "Y" (after p2Z())', i=(bytearray(b'xY'),), r=lambda i: type(i) is int and pydc.p2Z(i) == 'Y')
8e905c0798c7 - p2Z() helper func
Tassilo Philipp
parents: 58
diff changeset
155 t(l, "Z)p", "const char*", "ccp_plus_one", "(const char*)", ' "Y" => "" (after p2Z())', i=( 'Y',), r=lambda i: type(i) is int and pydc.p2Z(i) == '')
8e905c0798c7 - p2Z() helper func
Tassilo Philipp
parents: 58
diff changeset
156 t(l, "Z)p", "const char*", "ccp_plus_one", "(const char*)", '"X_unicode" => "_unicode" (after p2Z())', i=( u'X_unicode',), r=lambda i: type(i) is int and pydc.p2Z(i) == '_unicode')
8e905c0798c7 - p2Z() helper func
Tassilo Philipp
parents: 58
diff changeset
157 t(l, "Z)p", "const char*", "ccp_plus_one", "(const char*)", '"1lessbyte" => "lessbyte" (after p2Z())', i=( b'1lessbyte',), r=lambda i: type(i) is int and pydc.p2Z(i) == 'lessbyte')
8e905c0798c7 - p2Z() helper func
Tassilo Philipp
parents: 58
diff changeset
158 t(l, "j)p", "long", "l_plus_one", "(long)", ' -0x1 => "" (after p2Z())', i=( -0x1,), r=lambda i: type(i) is int and pydc.p2Z(i) == None)
8e905c0798c7 - p2Z() helper func
Tassilo Philipp
parents: 58
diff changeset
159
34
2682a627168c - breaking changes:
Tassilo Philipp
parents: 29
diff changeset
160 # functions that change buffers
2682a627168c - breaking changes:
Tassilo Philipp
parents: 29
diff changeset
161 theader('TESTS OF IMMUTABLE AND MUTABLE PYTHON BUFFERS:')
57
80b11152c659 make pydc tests display failed ones
Tassilo Philipp
parents: 46
diff changeset
162 t(l, "Z)v", "const char*", "cp_head_incr", "(const char*)", ' "string" => None / arg => "string" (not modified)"', i=( 'string',)) # string object
80b11152c659 make pydc tests display failed ones
Tassilo Philipp
parents: 46
diff changeset
163 t(l, "Z)v", "const char*", "cp_head_incr", "(const char*)", ' "UnIcOdE" => None / arg => "UnIcOdE" (not modified)"', i=( u'UnIcOdE',)) # string object (unicode in Python 2)
80b11152c659 make pydc tests display failed ones
Tassilo Philipp
parents: 46
diff changeset
164 t(l, "Z)v", "const char*", "cp_head_incr", "(const char*)", ' "BCssk#" => None / arg => "BCssk#" (not modified)"', i=( b'BCssk#',)) # bytes object
80b11152c659 make pydc tests display failed ones
Tassilo Philipp
parents: 46
diff changeset
165 t(l, "Z)v", "const char*", "cp_head_incr", "(const char*)", ' "xY" => None / arg => "xY" (not modified)"', i=(bytearray(b'xY'),)) # bytearray object
80b11152c659 make pydc tests display failed ones
Tassilo Philipp
parents: 46
diff changeset
166 t(l, "p)v", "const char*", "cp_head_incr", "(const char*)", ' "xY" => None / arg => "yY" (!MODIFIED!)"', i=(bytearray(b'xY'),), p=(bytearray(b'yY'),)) # bytearray object
29
6cc2b7fc7ea2 bigger pydc update:
Tassilo Philipp
parents:
diff changeset
167
6cc2b7fc7ea2 bigger pydc update:
Tassilo Philipp
parents:
diff changeset
168 # tested checked value conversions
6cc2b7fc7ea2 bigger pydc update:
Tassilo Philipp
parents:
diff changeset
169 theader('ARG & RET TYPE CONVERSION TESTS FOR RANGE CHECKED TYPES:')
57
80b11152c659 make pydc tests display failed ones
Tassilo Philipp
parents: 46
diff changeset
170 t(l, "c)c", "char", "c_plus_one", "(char)", ' "~" => 127', i=( '~',), r=127)
80b11152c659 make pydc tests display failed ones
Tassilo Philipp
parents: 46
diff changeset
171 t(l, "c)c", "char", "c_plus_one", "(char)", ' "~" => 127', i=( '~',), r=127)
80b11152c659 make pydc tests display failed ones
Tassilo Philipp
parents: 46
diff changeset
172 t(l, "c)c", "char", "c_plus_one", "(char)", ' "" => input exc:', i=( '',), r=Exception)
80b11152c659 make pydc tests display failed ones
Tassilo Philipp
parents: 46
diff changeset
173 t(l, "c)c", "char", "c_plus_one", "(char)", ' "" => input exc:', i=( '',), r=Exception)
80b11152c659 make pydc tests display failed ones
Tassilo Philipp
parents: 46
diff changeset
174 t(l, "C)C", "unsigned char", "uc_plus_one", "(unsigned char)", ' "ab" => input exc:', i=('ab',), r=Exception)
80b11152c659 make pydc tests display failed ones
Tassilo Philipp
parents: 46
diff changeset
175 t(l, "C)C", "unsigned char", "uc_plus_one", "(unsigned char)", ' "ab" => input exc:', i=('ab',), r=Exception)
29
6cc2b7fc7ea2 bigger pydc update:
Tassilo Philipp
parents:
diff changeset
176
57
80b11152c659 make pydc tests display failed ones
Tassilo Philipp
parents: 46
diff changeset
177 t(l, "c)c", "char", "c_plus_one", "(char)", ' -128 => -127', i=(-128,), r=-127)
80b11152c659 make pydc tests display failed ones
Tassilo Philipp
parents: 46
diff changeset
178 t(l, "c)c", "char", "c_plus_one", "(char)", ' 127 => -128 (wrapped)', i=( 127,), r=-128)
80b11152c659 make pydc tests display failed ones
Tassilo Philipp
parents: 46
diff changeset
179 t(l, "c)c", "char", "c_plus_one", "(char)", ' -129 => input exc:', i=(-129,), r=Exception)
80b11152c659 make pydc tests display failed ones
Tassilo Philipp
parents: 46
diff changeset
180 t(l, "c)c", "char", "c_plus_one", "(char)", ' 128 => input exc:', i=( 128,), r=Exception)
80b11152c659 make pydc tests display failed ones
Tassilo Philipp
parents: 46
diff changeset
181
80b11152c659 make pydc tests display failed ones
Tassilo Philipp
parents: 46
diff changeset
182 t(l, "C)C", "unsigned char", "uc_plus_one", "(unsigned char)", ' 0 => 1', i=( 0,), r=1)
80b11152c659 make pydc tests display failed ones
Tassilo Philipp
parents: 46
diff changeset
183 t(l, "C)C", "unsigned char", "uc_plus_one", "(unsigned char)", ' 255 => 0 (wrapped)', i=( 255,), r=0)
80b11152c659 make pydc tests display failed ones
Tassilo Philipp
parents: 46
diff changeset
184 t(l, "C)C", "unsigned char", "uc_plus_one", "(unsigned char)", ' -1 => input exc:', i=( -1,), r=Exception)
80b11152c659 make pydc tests display failed ones
Tassilo Philipp
parents: 46
diff changeset
185 t(l, "C)C", "unsigned char", "uc_plus_one", "(unsigned char)", ' 256 => input exc:', i=( 256,), r=Exception)
80b11152c659 make pydc tests display failed ones
Tassilo Philipp
parents: 46
diff changeset
186
80b11152c659 make pydc tests display failed ones
Tassilo Philipp
parents: 46
diff changeset
187 t(l, "s)s", "short", "s_plus_one", "(short)", ' -32768 => -32767', i=(-32768,), r=-32767)
80b11152c659 make pydc tests display failed ones
Tassilo Philipp
parents: 46
diff changeset
188 t(l, "s)s", "short", "s_plus_one", "(short)", ' 32767 => -32768 (wrapped)',i=( 32767,), r=-32768)
80b11152c659 make pydc tests display failed ones
Tassilo Philipp
parents: 46
diff changeset
189 t(l, "s)s", "short", "s_plus_one", "(short)", ' -32769 => input exc:', i=(-32769,), r=Exception)
80b11152c659 make pydc tests display failed ones
Tassilo Philipp
parents: 46
diff changeset
190 t(l, "s)s", "short", "s_plus_one", "(short)", ' 32768 => input exc:', i=( 32768,), r=Exception)
80b11152c659 make pydc tests display failed ones
Tassilo Philipp
parents: 46
diff changeset
191
80b11152c659 make pydc tests display failed ones
Tassilo Philipp
parents: 46
diff changeset
192 t(l, "S)S", "unsigned short", "us_plus_one", "(unsigned short)", ' 0 => 1', i=( 0,), r=1)
80b11152c659 make pydc tests display failed ones
Tassilo Philipp
parents: 46
diff changeset
193 t(l, "S)S", "unsigned short", "us_plus_one", "(unsigned short)", ' 65535 => 0 (wrapped)', i=(65535,), r=0)
80b11152c659 make pydc tests display failed ones
Tassilo Philipp
parents: 46
diff changeset
194 t(l, "S)S", "unsigned short", "us_plus_one", "(unsigned short)", ' -1 => input exc:', i=( -1,), r=Exception)
80b11152c659 make pydc tests display failed ones
Tassilo Philipp
parents: 46
diff changeset
195 t(l, "S)S", "unsigned short", "us_plus_one", "(unsigned short)", ' 65536 => input exc:', i=(65536,), r=Exception)
29
6cc2b7fc7ea2 bigger pydc update:
Tassilo Philipp
parents:
diff changeset
196
57
80b11152c659 make pydc tests display failed ones
Tassilo Philipp
parents: 46
diff changeset
197 t(l, "p)Z", "const char*", "ccp_plus_one", "(const char*)", '"w/pointer" => input exc:',i=( 'w/pointer',), r=Exception) # string object, not passable as 'p'ointer
80b11152c659 make pydc tests display failed ones
Tassilo Philipp
parents: 46
diff changeset
198 t(l, "p)Z", "const char*", "ccp_plus_one", "(const char*)", '"X_unicode" => input exc:',i=(u'X_unicode',), r=Exception) # string object (unicode in Python 2), not passable as 'p'ointer
80b11152c659 make pydc tests display failed ones
Tassilo Philipp
parents: 46
diff changeset
199 t(l, "p)Z", "const char*", "ccp_plus_one", "(const char*)", '"1less/ptr" => input exc:',i=(b'1less/ptr',), r=Exception) # bytes object, not passable as 'p'ointer
80b11152c659 make pydc tests display failed ones
Tassilo Philipp
parents: 46
diff changeset
200 t(l, "p)p", "const char*", "ccp_plus_one", "(const char*)", ' "x" => input exc:',i=( 'x',), r=Exception) # string object, not passable as 'p'ointer
29
6cc2b7fc7ea2 bigger pydc update:
Tassilo Philipp
parents:
diff changeset
201