Skip to content

Commit bfe74c3

Browse files
committed
add test for longlong
1 parent 9c2fc83 commit bfe74c3

File tree

4 files changed

+36
-3
lines changed

4 files changed

+36
-3
lines changed

tests/eigency_tests/eigency_tests.pyx

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,9 @@ cdef extern from "eigency_tests/eigency_tests_cpp.h":
4646
cdef PlainObjectBase _function_type_double "function_type_double" (Map[ArrayXXd] &)
4747
cdef PlainObjectBase _function_type_float "function_type_float" (Map[ArrayXXf] &)
4848
cdef PlainObjectBase _function_type_long "function_type_long" (FlattenedMap[Array, long, Dynamic, Dynamic] &)
49+
cdef PlainObjectBase _function_type_long_long "function_type_long_long" (FlattenedMap[Array, long long, Dynamic, Dynamic] &)
4950
cdef PlainObjectBase _function_type_ulong "function_type_ulong" (FlattenedMap[Array, unsigned long, Dynamic, Dynamic] &)
51+
cdef PlainObjectBase _function_type_ulong_long "function_type_ulong_long" (FlattenedMap[Array, unsigned long long, Dynamic, Dynamic] &)
5052
cdef PlainObjectBase _function_type_int "function_type_int" (Map[ArrayXXi] &)
5153
cdef PlainObjectBase _function_type_uint "function_type_uint" (FlattenedMap[Array, unsigned int, Dynamic, Dynamic] &)
5254
cdef PlainObjectBase _function_type_short "function_type_short" (FlattenedMap[Array, short, Dynamic, Dynamic] &)
@@ -151,10 +153,18 @@ def function_type_float32(np.ndarray[np.float32_t, ndim=2] array):
151153
def function_type_long(np.ndarray[long, ndim=2] array):
152154
return ndarray(_function_type_long(FlattenedMap[Array, long, Dynamic, Dynamic](array)))
153155

156+
# Functions with different matrix types: long long
157+
def function_type_long_long(np.ndarray[long long, ndim=2] array):
158+
return ndarray(_function_type_long_long(FlattenedMap[Array, longlong, Dynamic, Dynamic](array)))
159+
154160
# Functions with different matrix types: ulong
155161
def function_type_ulong(np.ndarray[unsigned long, ndim=2] array):
156162
return ndarray(_function_type_ulong(FlattenedMap[Array, ulong, Dynamic, Dynamic](array)))
157163

164+
# Functions with different matrix types: ulong long
165+
def function_type_ulong_long(np.ndarray[unsigned long long, ndim=2] array):
166+
return ndarray(_function_type_ulong_long(FlattenedMap[Array, ulonglong, Dynamic, Dynamic](array)))
167+
158168
# Functions with different matrix types: int
159169
def function_type_intc(np.ndarray[np.int32_t, ndim=2] array):
160170
return ndarray(_function_type_int(Map[ArrayXXi](array)))

tests/eigency_tests/eigency_tests_cpp.cpp

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -88,11 +88,22 @@ Eigen::Array<long, Eigen::Dynamic, Eigen::Dynamic> function_type_long(Eigen::Map
8888
return output;
8989
}
9090

91+
Eigen::Array<long long, Eigen::Dynamic, Eigen::Dynamic> function_type_long_long(Eigen::Map<Eigen::Array<long long, Eigen::Dynamic, Eigen::Dynamic> > &mat) {
92+
Eigen::Array<long long, Eigen::Dynamic, Eigen::Dynamic> output = mat;
93+
return output;
94+
}
95+
9196
Eigen::Array<unsigned long, Eigen::Dynamic, Eigen::Dynamic> function_type_ulong(Eigen::Map<Eigen::Array<unsigned long, Eigen::Dynamic, Eigen::Dynamic> > &mat) {
9297
Eigen::Array<unsigned long, Eigen::Dynamic, Eigen::Dynamic> output = mat;
9398
return output;
9499
}
95100

101+
Eigen::Array<unsigned long long, Eigen::Dynamic, Eigen::Dynamic> function_type_ulong_long(Eigen::Map<Eigen::Array<unsigned long long, Eigen::Dynamic, Eigen::Dynamic> > &mat) {
102+
Eigen::Array<unsigned long long, Eigen::Dynamic, Eigen::Dynamic> output = mat;
103+
return output;
104+
}
105+
106+
96107
Eigen::ArrayXXi function_type_int(Eigen::Map<Eigen::ArrayXXi> &mat) {
97108
Eigen::ArrayXXi output = mat;
98109
return output;

tests/eigency_tests/eigency_tests_cpp.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,9 @@ CustomStrideMap &function_filter3(CustomStrideMap &);
4141
Eigen::ArrayXXd function_type_double(Eigen::Map<Eigen::ArrayXXd> &array);
4242
Eigen::ArrayXXf function_type_float(Eigen::Map<Eigen::ArrayXXf> &array);
4343
Eigen::Array<long, Eigen::Dynamic, Eigen::Dynamic> function_type_long(Eigen::Map<Eigen::Array<long, Eigen::Dynamic, Eigen::Dynamic> > &mat);
44+
Eigen::Array<long long, Eigen::Dynamic, Eigen::Dynamic> function_type_long_long(Eigen::Map<Eigen::Array<long long, Eigen::Dynamic, Eigen::Dynamic> > &mat);
4445
Eigen::Array<unsigned long, Eigen::Dynamic, Eigen::Dynamic> function_type_ulong(Eigen::Map<Eigen::Array<unsigned long, Eigen::Dynamic, Eigen::Dynamic> > &mat);
46+
Eigen::Array<unsigned long long, Eigen::Dynamic, Eigen::Dynamic> function_type_ulong_long(Eigen::Map<Eigen::Array<unsigned long long, Eigen::Dynamic, Eigen::Dynamic> > &mat);
4547
Eigen::ArrayXXi function_type_int(Eigen::Map<Eigen::ArrayXXi> &array);
4648
Eigen::Array<unsigned int, Eigen::Dynamic, Eigen::Dynamic> function_type_uint(Eigen::Map<Eigen::Array<unsigned int, Eigen::Dynamic, Eigen::Dynamic> > &array);
4749
Eigen::Array<short, Eigen::Dynamic, Eigen::Dynamic> function_type_short(Eigen::Map<Eigen::Array<short, Eigen::Dynamic, Eigen::Dynamic> > &mat);

tests/run_tests.py

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -161,20 +161,30 @@ def test_function_type_float32(self):
161161

162162
def test_function_type_int(self):
163163
# C++ long - Note that this is the standard Python integer
164+
# with numpy 1 int is 32 in numpy 2 int is 64, so we need to be more specific
164165
mat_in = np.array([[1, 2, 3, 4], [5, 6, 7, 8]], order="F")
165-
mat_out = eigency_tests.function_type_long(mat_in)
166+
if mat_in.dtype == np.dtype("long"):
167+
mat_out = eigency_tests.function_type_long(mat_in)
168+
else:
169+
mat_out = eigency_tests.function_type_long_long(mat_in)
166170
assert_array_equal(mat_in, mat_out)
167171

168172
def test_function_type_long(self):
169173
# C++ long - Note that this is the standard Python integer
170174
mat_in = np.array([[1, 2, 3, 4], [5, 6, 7, 8]], order="F", dtype=int)
171-
mat_out = eigency_tests.function_type_long(mat_in)
175+
if mat_in.dtype == np.dtype("long"):
176+
mat_out = eigency_tests.function_type_long(mat_in)
177+
else:
178+
mat_out = eigency_tests.function_type_long_long(mat_in)
172179
assert_array_equal(mat_in, mat_out)
173180

174181
def test_function_type_ulong(self):
175182
# C++ ulong
176183
mat_in = np.array([[1, 2, 3, 4], [5, 6, 7, 8]], order="F", dtype=np.uint)
177-
mat_out = eigency_tests.function_type_ulong(mat_in)
184+
if mat_in.dtype == np.dtype("ulong"):
185+
mat_out = eigency_tests.function_type_ulong(mat_in)
186+
else:
187+
mat_out = eigency_tests.function_type_ulong_long(mat_in)
178188
assert_array_equal(mat_in, mat_out)
179189

180190
def test_function_type_intc(self):

0 commit comments

Comments
 (0)