mirror of https://github.com/swig/swig
scilab: new test scilab_multivalue
This commit is contained in:
parent
da20d55099
commit
9a3562d7ef
|
@ -19,6 +19,7 @@ CPP_TEST_CASES += \
|
||||||
inout \
|
inout \
|
||||||
scilab_li_matrix \
|
scilab_li_matrix \
|
||||||
scilab_pointer_conversion_functions \
|
scilab_pointer_conversion_functions \
|
||||||
|
scilab_multivalue \
|
||||||
overload_arrays \
|
overload_arrays \
|
||||||
|
|
||||||
CPP_STD_TEST_CASES += \
|
CPP_STD_TEST_CASES += \
|
||||||
|
|
|
@ -0,0 +1,87 @@
|
||||||
|
exec("swigtest.start", -1);
|
||||||
|
|
||||||
|
// OUTPUT
|
||||||
|
|
||||||
|
[a, b] = output2();
|
||||||
|
checkequal(a, 1, "[a, b] = output2(): a");
|
||||||
|
checkequal(b, 2, "[a, b] = output2(): b");
|
||||||
|
|
||||||
|
[ret, a, b] = output2Ret();
|
||||||
|
checkequal(ret, 3, "[a, b] = output2Ret(): b");
|
||||||
|
checkequal(a, 1, "[a, b] = output2Ret(): a");
|
||||||
|
checkequal(b, 2, "[a, b] = output2Ret(): b");
|
||||||
|
|
||||||
|
[c, d] = output2Input2(1, 2);
|
||||||
|
checkequal(c, 2, "[c, d] = output2Input2(1, 2): c");
|
||||||
|
checkequal(d, 4, "[c, d] = output2Input2(1, 2): d");
|
||||||
|
|
||||||
|
[ret, c, d] = output2Input2Ret(1, 2);
|
||||||
|
checkequal(ret, 6, "[ret, c, d] = output2Input2Ret(1, 2): ret");
|
||||||
|
checkequal(c, 2, "[ret, c, d] = output2Input2Ret(1, 2): c");
|
||||||
|
checkequal(d, 4, "[ret, c, d = output2Input2Ret(1, 2): d");
|
||||||
|
|
||||||
|
[ret, a, b, c] = output3Input1Ret(10);
|
||||||
|
checkequal(ret, 10, "[ret, a, b, c] = output3Input1Ret(10): ret");
|
||||||
|
checkequal(a, 11, "[ret, a, b, c] = output3Input1Ret(10): a");
|
||||||
|
checkequal(b, 12, "[ret, a, b, c] = output3Input1Ret(10): b");
|
||||||
|
checkequal(c, 13, "[ret, a, b, c] = output3Input1Ret(10): c");
|
||||||
|
|
||||||
|
[ret, a, b, c] = output3Input3Ret(10, 20, 30);
|
||||||
|
checkequal(ret, 66, "[ret, a, b, c] = output3Input1Ret(10, 20, 30): ret");
|
||||||
|
checkequal(a, 11, "[ret, a, b, c] = output3Input1Ret(10, 20, 30): a");
|
||||||
|
checkequal(b, 22, "[ret, a, b, c] = output3Input1Ret(10, 20, 30): b");
|
||||||
|
checkequal(c, 33, "[ret, a, b, c] = output3Input1Ret(10, 20, 30): c");
|
||||||
|
|
||||||
|
|
||||||
|
// INOUT
|
||||||
|
|
||||||
|
[a, b] = inout2(1, 2);
|
||||||
|
checkequal(a, 2, "[a, b] = output2(1, 2): a");
|
||||||
|
checkequal(b, 4, "[a, b] = output2(1, 2): b");
|
||||||
|
|
||||||
|
[ret, a, b] = inout2Ret(1, 2);
|
||||||
|
checkequal(ret, 6, "[a, b] = inout2Ret(1, 2): b");
|
||||||
|
checkequal(a, 2, "[a, b] = inout2Ret(1, 2): a");
|
||||||
|
checkequal(b, 4, "[a, b] = inout2Ret(1, 2): b");
|
||||||
|
|
||||||
|
[c, d] = inout2Input2(1, 2, 1, 1);
|
||||||
|
checkequal(c, 2, "[c, d] = inout2Input2(1, 2): c");
|
||||||
|
checkequal(d, 3, "[c, d] = inout2Input2(1, 2): d");
|
||||||
|
|
||||||
|
[ret, c, d] = inout2Input2Ret(1, 2, 1, 1);
|
||||||
|
checkequal(ret, 5, "[c, d] = inout2Input2Ret(1, 2): ret");
|
||||||
|
checkequal(c, 2, "[c, d] = inout2Input2Ret(1, 2): c");
|
||||||
|
checkequal(d, 3, "[c, d] = inout2Input2Ret(1, 4): d");
|
||||||
|
|
||||||
|
[ret, a, b, c] = inout3Input1Ret(10, 1, 2, 3);
|
||||||
|
checkequal(ret, 10, "[ret, a, b, c] = output3Input1Ret(ret, 1, 2, 3): ret");
|
||||||
|
checkequal(a, 11, "[ret, a, b, c] = output3Input1Ret(ret, 1, 2, 3): a");
|
||||||
|
checkequal(b, 12, "[ret, a, b, c] = output3Input1Ret(ret, 1, 2, 3): b");
|
||||||
|
checkequal(c, 13, "[ret, a, b, c] = output3Input1Ret(ret, 1, 2, 3): c");
|
||||||
|
|
||||||
|
[ret, a, b, c] = inout3Input3Ret(10, 1, 20, 2, 30, 3);
|
||||||
|
checkequal(ret, 66, "[ret, a, b, c] = output3Input1Ret(10, 20, 30): ret");
|
||||||
|
checkequal(a, 11, "[ret, a, b, c] = inout3Input1Ret(10, 1, 20, 2, 30, 3): a");
|
||||||
|
checkequal(b, 22, "[ret, a, b, c] = inout3Input1Ret(10, 1, 20, 2, 30, 3): b");
|
||||||
|
checkequal(c, 33, "[ret, a, b, c] = inout3Input1Ret(10, 1, 20, 2, 30, 3): c");
|
||||||
|
|
||||||
|
|
||||||
|
// CLASS
|
||||||
|
|
||||||
|
a = new_ClassA();
|
||||||
|
|
||||||
|
[ret, c, d] = ClassA_output2Input2Ret(a, 1, 2);
|
||||||
|
checkequal(ret, 6, "[ret, c, d] = ClassA_output2Input2Ret(a, 1, 2): ret");
|
||||||
|
checkequal(c, 2, "[c, d] = ClassA_output2Input2Ret(a, 1, 2): c");
|
||||||
|
checkequal(d, 4, "[c, d] = ClassA_output2Input2Ret(a, 1, 2): d");
|
||||||
|
|
||||||
|
[ret, c, d] = ClassA_inout2Input2Ret(a, 1, 2, 1, 1);
|
||||||
|
checkequal(ret, 5, "[ret, c, d] = ClassA_inout2Input2Ret(a, 1, 2): ret");
|
||||||
|
checkequal(c, 2, "[c, d] = ClassA_inout2Input2(a, 1, 2): c");
|
||||||
|
checkequal(d, 3, "[c, d] = ClassA_inout2Input2(a, 1, 2): d");
|
||||||
|
|
||||||
|
delete_ClassA(a);
|
||||||
|
|
||||||
|
|
||||||
|
exec("swigtest.quit", -1);
|
||||||
|
|
|
@ -0,0 +1,123 @@
|
||||||
|
%module scilab_multivalue
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
void output2(int *OUTPUT, int *OUTPUT);
|
||||||
|
int output2Ret(int *OUTPUT, int *OUTPUT);
|
||||||
|
void output2Input2(int a, int b, int *OUTPUT, int *OUTPUT);
|
||||||
|
int output2Input2Ret(int a, int b, int *OUTPUT, int *OUTPUT);
|
||||||
|
int output3Input1Ret(int a, int *OUTPUT, int *OUTPUT, int *OUTPUT);
|
||||||
|
int output3Input3Ret(int x, int *OUTPUT, int y, int *OUTPUT, int z, int *OUTPUT);
|
||||||
|
|
||||||
|
void inout2(int *INOUT, int *INOUT);
|
||||||
|
int inout2Ret(int *INOUT, int *INOUT);
|
||||||
|
void inout2Input2(int a, int b, int *INOUT, int *INOUT);
|
||||||
|
int inout2Input2Ret(int a, int b, int *INOUT, int *INOUT);
|
||||||
|
int inout3Input1Ret(int a, int *INOUT, int *INOUT, int *INOUT);
|
||||||
|
int inout3Input3Ret(int x, int *INOUT, int y, int *INOUT, int z, int *INOUT);
|
||||||
|
|
||||||
|
class ClassA {
|
||||||
|
public:
|
||||||
|
ClassA() {};
|
||||||
|
int output2Input2Ret(int a, int b, int *OUTPUT, int *OUTPUT);
|
||||||
|
int inout2Input2Ret(int a, int b, int *INOUT, int *INOUT);
|
||||||
|
};
|
||||||
|
|
||||||
|
%{
|
||||||
|
|
||||||
|
// Test return of multiple values with OUTPUT
|
||||||
|
|
||||||
|
void output2(int *a, int *b) {
|
||||||
|
*a = 1;
|
||||||
|
*b = 2;
|
||||||
|
}
|
||||||
|
|
||||||
|
int output2Ret(int *a, int *b) {
|
||||||
|
*a = 1;
|
||||||
|
*b = 2;
|
||||||
|
return *a + *b;
|
||||||
|
}
|
||||||
|
|
||||||
|
void output2Input2(int a, int b, int *c, int *d) {
|
||||||
|
*c = a + 1;
|
||||||
|
*d = b + 2;
|
||||||
|
}
|
||||||
|
|
||||||
|
int output2Input2Ret(int a, int b, int *c, int *d) {
|
||||||
|
*c = a + 1;
|
||||||
|
*d = b + 2;
|
||||||
|
return *c + *d;
|
||||||
|
}
|
||||||
|
|
||||||
|
int output3Input1Ret(int x, int *a, int *b, int *c) {
|
||||||
|
*a = x + 1;
|
||||||
|
*b = x + 2;
|
||||||
|
*c = x + 3;
|
||||||
|
return x;
|
||||||
|
}
|
||||||
|
|
||||||
|
int output3Input3Ret(int x, int *a, int y, int *b, int z, int *c) {
|
||||||
|
*a = x + 1;
|
||||||
|
*b = y + 2;
|
||||||
|
*c = z + 3;
|
||||||
|
return *a + *b + *c;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// Test return of multiple values with INOUT
|
||||||
|
|
||||||
|
void inout2(int *a, int *b) {
|
||||||
|
*a = *a + 1;
|
||||||
|
*b = *a + 2;
|
||||||
|
}
|
||||||
|
|
||||||
|
int inout2Ret(int *a, int *b) {
|
||||||
|
*a = *a + 1;
|
||||||
|
*b = *a + 2;
|
||||||
|
return *a + *b;
|
||||||
|
}
|
||||||
|
|
||||||
|
void inout2Input2(int a, int b, int *c, int *d) {
|
||||||
|
*c = *c + a;
|
||||||
|
*d = *d + b;
|
||||||
|
}
|
||||||
|
|
||||||
|
int inout2Input2Ret(int a, int b, int *c, int *d) {
|
||||||
|
*c = *c + a;
|
||||||
|
*d = *d + b;
|
||||||
|
return *c + *d;
|
||||||
|
}
|
||||||
|
|
||||||
|
int inout3Input1Ret(int x, int *a, int *b, int *c) {
|
||||||
|
*a = *a + x;
|
||||||
|
*b = *b + x;
|
||||||
|
*c = *c + x;
|
||||||
|
return x;
|
||||||
|
}
|
||||||
|
|
||||||
|
int inout3Input3Ret(int x, int *a, int y, int *b, int z, int *c) {
|
||||||
|
*a = *a + x;
|
||||||
|
*b = *b + y;
|
||||||
|
*c = *c + z;
|
||||||
|
return *a + *b + *c;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Test return multiples from class methods
|
||||||
|
|
||||||
|
class ClassA {
|
||||||
|
public:
|
||||||
|
ClassA() {};
|
||||||
|
int output2Input2Ret(int a, int b, int *c, int *d) {
|
||||||
|
*c = a + 1;
|
||||||
|
*d = b + 2;
|
||||||
|
return *c + *d;
|
||||||
|
}
|
||||||
|
int inout2Input2Ret(int a, int b, int *c, int *d) {
|
||||||
|
*c = *c + a;
|
||||||
|
*d = *d + b;
|
||||||
|
return *c + *d;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
%}
|
Loading…
Reference in New Issue