License Header change: Removed the LICENSE_END before beta
[scilab.git] / scilab / modules / api_scilab / tests / unit_tests / api_c / int_test.c
1 /*
2 * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
3 * Copyright (C) 2015 - Scilab Enterprises - Antoine ELIAS
4 *
5  * Copyright (C) 2012 - 2016 - Scilab Enterprises
6  *
7  * This file is hereby licensed under the terms of the GNU GPL v2.0,
8  * pursuant to article 5.3.4 of the CeCILL v.2.1.
9  * This file was originally licensed under the terms of the CeCILL v2.1,
10  * and continues to be available under such terms.
11  * For more information, see the COPYING file which you should have received
12  * along with this program.
13 *
14 */
15
16 #include "api_scilab.h"
17 #include "Scierror.h"
18 #include "localization.h"
19 #include "sciprint.h"
20 #include "sci_malloc.h"
21
22 const char fname[] = "int_test";
23
24 int sci_int_test(scilabEnv env, int nin, scilabVar* in, int nopt, scilabOpt opt, int nout, scilabVar* out)
25 {
26     int i = 0;
27     int inr1 = 0;
28     int inc1 = 0;
29     int size1 = 0;
30     int* in1 = NULL;
31
32     int in2 = 0;
33
34     int* out1 = NULL;
35
36     int* out2dims = NULL;
37     int* out2 = NULL;
38
39     int out3 = 0;
40
41     if (nin != 2)
42     {
43         Scierror(999, _("%s: Wrong number of input arguments: %d expected.\n"), fname, 2);
44         return STATUS_ERROR;
45     }
46
47     if (nout != 3)
48     {
49         Scierror(999, _("%s: Wrong number of output arguments: %d expected.\n"), fname, 3);
50         return STATUS_ERROR;
51     }
52
53     //in[0] : matrix 2d of int32
54     if (scilab_isInt32(env, in[0]) == 0 || scilab_isMatrix2d(env, in[0]) == 0)
55     {
56         Scierror(999, _("%s: Wrong type for input argument #%d: A int32 matrix expected.\n"), fname, 1);
57         return STATUS_ERROR;
58     }
59
60     size1 = scilab_getDim2d(env, in[0], &inr1, &inc1);
61     scilab_getInteger32Array(env, in[0], &in1);
62
63     //in[1] : int
64     if (scilab_isInt32(env, in[1]) == 0 || scilab_isScalar(env, in[1]) == 0)
65     {
66         Scierror(999, _("%s: Wrong type for input argument #%d: A int32 expected.\n"), fname, 2);
67         return STATUS_ERROR;
68     }
69
70     scilab_getInteger32(env, in[1], &in2);
71
72     //out1 : matrix 2d of int with same size of in[0]
73     out[0] = scilab_createInteger32Matrix2d(env, inr1, inc1);
74     scilab_getInteger32Array(env, out[0], &out1);
75
76     for (i = 0; i < size1; ++i)
77     {
78         out1[i] = in1[i] * 10;
79     }
80
81     //out2 : 3d matrix of int
82     out2dims = (int*)MALLOC(3 * sizeof(int));
83     out2dims[0] = inr1;
84     out2dims[1] = inc1;
85     out2dims[2] = 2;
86
87     out[1] = scilab_createInteger32Matrix(env, 3, out2dims);
88     scilab_getInteger32Array(env, out[1], &out2);
89
90     for (i = 0; i < size1; ++i)
91     {
92         out2[i] = in1[i] * 10;
93         out2[i + size1] = in1[i] * 100;
94     }
95
96     //out3 : int
97     out[2] = scilab_createInteger32(env, in2 * 1000);
98     return STATUS_OK;
99 }