Added mxCreateSparse Function and tests 93/19293/5
Siddhartha Gairola [Wed, 21 Jun 2017 15:22:44 +0000 (20:22 +0530)]
Change-Id: I8394b8fb6e0b1793a95de38e6f0fba7ad6719f45

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

index d905d88..d731a9f 100644 (file)
@@ -70,6 +70,7 @@
 #include "struct.hxx"
 #include "container.hxx"
 #include "cell.hxx"
+#include "sparse.hxx"
 #include "localization.hxx"
 
 extern "C"
@@ -332,8 +333,10 @@ mxArray *mxCreateSparseLogicalMatrix(mwSize m, mwSize n, mwSize nzmax)
 
 mxArray *mxCreateSparse(int m, int n, int nzmax, mxComplexity cmplx)
 {
-    //TODO
-    return NULL;
+    types::Sparse* ptr = new types::Sparse(m, n, cmplx == mxCOMPLEX);
+    mxArray* ret = new mxArray;
+    ret->ptr = (int*)ptr;
+    return ret;
 }
 
 mxArray *mxCreateStructMatrix(int m, int n, int nfields, const char **field_names)
diff --git a/scilab/modules/mexlib/tests/unit_tests/mxCreateSparse.dia.ref b/scilab/modules/mexlib/tests/unit_tests/mxCreateSparse.dia.ref
new file mode 100644 (file)
index 0000000..483f0a9
--- /dev/null
@@ -0,0 +1,26 @@
+// ============================================================================
+// 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 mxCreateSparse mex function
+// ============================================================================
+cd(TMPDIR);
+ilib_verbose(0);
+mputl(["#include ""mex.h""";
+"void mexFunction(int nlhs, mxArray *plhs[], int nrhs, mxArray *prhs[])";
+"{";
+"    mxArray *pOut1 = mxCreateSparse(2, 2, 0, mxREAL);";
+"    mxArray *pOut2 = mxCreateSparse(3, 4, 0, mxREAL);";
+"    plhs[0] = pOut1;";
+"    plhs[1] = pOut2;";
+"}"],"mexCreateSparse.c");
+ilib_mex_build("libmextest",["createSparse","mexCreateSparse","cmex"], "mexCreateSparse.c",[]);
+exec("loader.sce");
+[out1, out2] = createSparse();
+assert_checkequal(size(out1), [2, 2]);
+assert_checkequal(size(out2), [3, 4]);
diff --git a/scilab/modules/mexlib/tests/unit_tests/mxCreateSparse.tst b/scilab/modules/mexlib/tests/unit_tests/mxCreateSparse.tst
new file mode 100644 (file)
index 0000000..483f0a9
--- /dev/null
@@ -0,0 +1,26 @@
+// ============================================================================
+// 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 mxCreateSparse mex function
+// ============================================================================
+cd(TMPDIR);
+ilib_verbose(0);
+mputl(["#include ""mex.h""";
+"void mexFunction(int nlhs, mxArray *plhs[], int nrhs, mxArray *prhs[])";
+"{";
+"    mxArray *pOut1 = mxCreateSparse(2, 2, 0, mxREAL);";
+"    mxArray *pOut2 = mxCreateSparse(3, 4, 0, mxREAL);";
+"    plhs[0] = pOut1;";
+"    plhs[1] = pOut2;";
+"}"],"mexCreateSparse.c");
+ilib_mex_build("libmextest",["createSparse","mexCreateSparse","cmex"], "mexCreateSparse.c",[]);
+exec("loader.sce");
+[out1, out2] = createSparse();
+assert_checkequal(size(out1), [2, 2]);
+assert_checkequal(size(out2), [3, 4]);