mirror of https://github.com/swig/swig
184 lines
3.3 KiB
Python
184 lines
3.3 KiB
Python
from li_std_vector_extra import *
|
|
|
|
iv = IntVector(4)
|
|
for i in range(0, 4):
|
|
iv[i] = i
|
|
|
|
x = average(iv)
|
|
y = average([1, 2, 3, 4])
|
|
|
|
a = half([10, 10.5, 11, 11.5])
|
|
|
|
dv = DoubleVector(10)
|
|
for i in range(0, 10):
|
|
dv[i] = i / 2.0
|
|
|
|
halve_in_place(dv)
|
|
|
|
|
|
bv = BoolVector(4)
|
|
bv[0] = bool(1)
|
|
bv[1] = bool(0)
|
|
bv[2] = bool(4)
|
|
bv[3] = bool(0)
|
|
|
|
if bv[0] != bv[2]:
|
|
raise RuntimeError("bad std::vector<bool> mapping")
|
|
|
|
b = B(5)
|
|
va = VecA([b, None, b, b])
|
|
|
|
if va[0].f(1) != 6:
|
|
raise RuntimeError("bad std::vector<A*> mapping")
|
|
|
|
if vecAptr(va) != 6:
|
|
raise RuntimeError("bad std::vector<A*> mapping")
|
|
|
|
b.val = 7
|
|
if va[3].f(1) != 8:
|
|
raise RuntimeError("bad std::vector<A*> mapping")
|
|
|
|
|
|
ip = PtrInt()
|
|
ap = new_ArrInt(10)
|
|
|
|
ArrInt_setitem(ip, 0, 123)
|
|
ArrInt_setitem(ap, 2, 123)
|
|
|
|
vi = IntPtrVector((ip, ap, None))
|
|
if ArrInt_getitem(vi[0], 0) != ArrInt_getitem(vi[1], 2):
|
|
raise RuntimeError("bad std::vector<int*> mapping")
|
|
|
|
delete_ArrInt(ap)
|
|
|
|
|
|
a = halfs([10, 8, 4, 3])
|
|
|
|
v = IntVector()
|
|
v[0:2] = [1, 2]
|
|
if v[0] != 1 or v[1] != 2:
|
|
raise RuntimeError("bad setslice")
|
|
|
|
if v[0:-1][0] != 1:
|
|
raise RuntimeError("bad getslice")
|
|
|
|
if v[0:-2].size() != 0:
|
|
raise RuntimeError("bad getslice")
|
|
|
|
v[0:1] = [2]
|
|
if v[0] != 2:
|
|
raise RuntimeError("bad setslice")
|
|
|
|
v[1:] = [3]
|
|
if v[1] != 3:
|
|
raise RuntimeError("bad setslice")
|
|
|
|
v[2:] = [3]
|
|
if v[2] != 3:
|
|
raise RuntimeError("bad setslice")
|
|
|
|
if v[0:][0] != v[0]:
|
|
raise RuntimeError("bad getslice")
|
|
|
|
|
|
del v[:]
|
|
if v.size() != 0:
|
|
raise RuntimeError("bad getslice")
|
|
|
|
del v[:]
|
|
if v.size() != 0:
|
|
raise RuntimeError("bad getslice")
|
|
|
|
|
|
v = vecStr(["hello ", "world"])
|
|
if v[0] != "hello world":
|
|
raise RuntimeError("bad std::string+std::vector")
|
|
|
|
|
|
pv = pyvector([1, "hello", (1, 2)])
|
|
|
|
if pv[1] != "hello":
|
|
raise RuntimeError
|
|
|
|
|
|
iv = IntVector(5)
|
|
for i in range(0, 5):
|
|
iv[i] = i
|
|
|
|
iv[1:3] = []
|
|
if iv[1] != 3:
|
|
raise RuntimeError
|
|
|
|
# Overloading checks
|
|
if overloaded1(iv) != "vector<int>":
|
|
raise RuntimeError
|
|
|
|
if overloaded1(dv) != "vector<double>":
|
|
raise RuntimeError
|
|
|
|
if overloaded2(iv) != "vector<int>":
|
|
raise RuntimeError
|
|
|
|
if overloaded2(dv) != "vector<double>":
|
|
raise RuntimeError
|
|
|
|
if overloaded3(iv) != "vector<int> *":
|
|
raise RuntimeError
|
|
|
|
if overloaded3(None) != "vector<int> *":
|
|
raise RuntimeError
|
|
|
|
if overloaded3(100) != "int":
|
|
raise RuntimeError
|
|
|
|
|
|
# vector pointer checks
|
|
ip = makeIntPtr(11)
|
|
dp = makeDoublePtr(33.3)
|
|
error = 0
|
|
try:
|
|
# check vector<int *> does not accept double * element
|
|
vi = IntPtrVector((ip, dp))
|
|
error = 1
|
|
except:
|
|
pass
|
|
|
|
if error:
|
|
raise RuntimeError
|
|
|
|
vi = IntPtrVector((ip, makeIntPtr(22)))
|
|
if extractInt(vi[0]) != 11:
|
|
raise RuntimeError
|
|
|
|
if extractInt(vi[1]) != 22:
|
|
raise RuntimeError
|
|
|
|
# vector const pointer checks
|
|
csp = makeConstShortPtr(111)
|
|
|
|
error = 0
|
|
try:
|
|
# check vector<const unsigned short *> does not accept double * element
|
|
vcs = ConstShortPtrVector((csp, dp))
|
|
error = 1
|
|
except:
|
|
pass
|
|
|
|
if error:
|
|
raise RuntimeError
|
|
|
|
vcs = ConstShortPtrVector((csp, makeConstShortPtr(222)))
|
|
if extractConstShort(vcs[0]) != 111:
|
|
raise RuntimeError
|
|
|
|
if extractConstShort(vcs[1]) != 222:
|
|
raise RuntimeError
|
|
|
|
for p in vcs[0:1]:
|
|
if extractConstShort2(p) != 111:
|
|
raise RuntimeError
|
|
|
|
for p in vcs[1:2]:
|
|
if extractConstShort2(p) != 222:
|
|
raise RuntimeError
|