Adding mxGetIr function and related test files 59/19359/8
Siddhartha Gairola [Fri, 28 Jul 2017 09:31:07 +0000 (14:31 +0530)]
Change-Id: Ie1cff1bd268c53382f55862fd1a41951de83db10

scilab/modules/mexlib/src/cpp/mexlib.cpp
scilab/modules/mexlib/tests/unit_tests/mxGetIr.dia.ref [new file with mode: 0644]
scilab/modules/mexlib/tests/unit_tests/mxGetIr.tst [new file with mode: 0644]

index 3ba3655..9ec8dcf 100644 (file)
@@ -1620,8 +1620,14 @@ void mxSetNzmax(mxArray *array_ptr, int nzmax)
 
 int *mxGetIr(const mxArray *ptr)
 {
-    // TODO
-    return NULL;
+    if ( mxIsSparse(ptr) == 0)
+    {
+        return NULL;
+    }
+    int innercount = 0;
+    int *ir = ((types::Sparse *)ptr->ptr)->getInnerPtr(&innercount);
+
+    return ir;
 }
 
 void mxSetIr(mxArray *array_ptr, int *ir_data)
diff --git a/scilab/modules/mexlib/tests/unit_tests/mxGetIr.dia.ref b/scilab/modules/mexlib/tests/unit_tests/mxGetIr.dia.ref
new file mode 100644 (file)
index 0000000..cd9a743
--- /dev/null
@@ -0,0 +1,36 @@
+// ============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2017-2017 - Gsoc 2017 - Siddhartha Gairola
+//
+//  This file is distributed under the same license as the Scilab package.
+// ============================================================================
+
+// <-- CLI SHELL MODE -->
+// ============================================================================
+// Unitary tests for mxGetIr mex function
+// ============================================================================
+cd(TMPDIR);
+ilib_verbose(0);
+mputl([ "#include ""mex.h""";
+"void mexFunction(int nlhs, mxArray *plhs[], int nrhs, mxArray *prhs[])";
+"{";
+"   int *ir = NULL;";
+"   mxArray* pOut = NULL;";
+"   bool check = 0;";
+"   ir = mxGetIr(prhs[0]);";
+"   if(ir != NULL)";
+"   {";
+"       check = 1;";
+"   }";
+"";
+"   pOut = mxCreateLogicalScalar(check);";
+"   plhs[0] = pOut;";
+"}"],"mexGetIr.c");
+ilib_mex_build("libmextest",["getIr","mexGetIr","cmex"], "mexGetIr.c",[]);
+exec("loader.sce");
+sp = sparse([1 2 3]);
+not_sp = [1 2 3];
+res1 = getIr(sp);
+res2 = getIr(not_sp);
+assert_checktrue(res1);
+assert_checkfalse(res2);
diff --git a/scilab/modules/mexlib/tests/unit_tests/mxGetIr.tst b/scilab/modules/mexlib/tests/unit_tests/mxGetIr.tst
new file mode 100644 (file)
index 0000000..66e12ce
--- /dev/null
@@ -0,0 +1,39 @@
+// ============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2017-2017 - Gsoc 2017 - Siddhartha Gairola
+//
+//  This file is distributed under the same license as the Scilab package.
+// ============================================================================
+
+// <-- CLI SHELL MODE -->
+// ============================================================================
+// Unitary tests for mxGetIr mex function
+// ============================================================================
+
+cd(TMPDIR);
+ilib_verbose(0);
+mputl([ "#include ""mex.h""";
+"void mexFunction(int nlhs, mxArray *plhs[], int nrhs, mxArray *prhs[])";
+"{";
+"   int *ir = NULL;";
+"   mxArray* pOut = NULL;";
+"   bool check = 0;";
+"   ir = mxGetIr(prhs[0]);";
+"   if(ir != NULL)";
+"   {";
+"       check = 1;";
+"   }";
+"";
+"   pOut = mxCreateLogicalScalar(check);";
+"   plhs[0] = pOut;";
+"}"],"mexGetIr.c");
+ilib_mex_build("libmextest",["getIr","mexGetIr","cmex"], "mexGetIr.c",[]);
+exec("loader.sce");
+
+sp = sparse([1 2 3]);
+not_sp = [1 2 3];
+res1 = getIr(sp);
+res2 = getIr(not_sp);
+
+assert_checktrue(res1);
+assert_checkfalse(res2);