Bug #13396 fixed - MBLOCK didn't work with an external file containing the modelica... 21/14521/4
Vladislav TRUBKIN [Mon, 12 May 2014 15:57:45 +0000 (17:57 +0200)]
Change-Id: I83bf317241e571f27eeea94a4fb1cab3c420dac6

scilab/CHANGES_5.5.X
scilab/modules/scicos/macros/scicos_scicos/do_eval.sci
scilab/modules/xcos/tests/nonreg_tests/bug_13396.tst [new file with mode: 0644]
scilab/modules/xcos/tests/nonreg_tests/bug_13396.unix.dia.ref [new file with mode: 0644]
scilab/modules/xcos/tests/nonreg_tests/bug_13396.win.dia.ref [new file with mode: 0644]
scilab/modules/xcos/tests/nonreg_tests/bug_13396.zcos [new file with mode: 0644]

index 8720e3a..1b7359e 100644 (file)
@@ -38,6 +38,8 @@ Xcos Bug Fixes
 
 * Bug #13385 fixed - TOWS_c and FROMWSB Xcos blocs needed better examples on how
                      to get or write a Scilab variable.
+                     
+* Bug #13396 fixed - MBLOCK did not work with an external file containing the modelica class.
 
 
                      Changes between version 5.4.1 and 5.5.0
index f96e3ca..e26bc94 100644 (file)
@@ -80,12 +80,15 @@ function [scs_m,cpr,needcompile,ok]=do_eval(scs_m,cpr,%scicos_context)
     deff("[ok,tt]        = MODCOM(funam,tt,vinp,vout,vparam,vparamv,vpprop)",..
     "[dirF, nameF, extF] = fileparts(funam);..
     [modelica_path, modelica_directory] = getModelicaPath();..
+    funam1 = []; ..
     if (extF == """")  then, ..
         funam1 = modelica_directory + nameF + "".mo""; ..
     elseif fileinfo(funam) == [] then, ..
         funam1 = funam; ..
     end; ..
-    mputl(tt, funam1);")
+    if funam1 <> [] then, ..
+        mputl(tt, funam1); ..
+    end");
     %nx=lstsize(scs_m.objs)
     funcprot(%mprt)
     for %kk=1:%nx
@@ -192,7 +195,7 @@ function [scs_m,cpr,needcompile,ok]=do_eval(scs_m,cpr,%scicos_context)
 
                     scs_m.objs(%kk)=o
                 else
-                    error(msprintf(gettext("%s: Error while calling block %s [uid=''%s'']: invalid parameter (ier=%f, \%scicos_prob=%%%s).\n"), "do_eval", o.gui, o.model.uid, ier, string(%scicos_prob)));
+                    error(msprintf(gettext("%s: Error while calling block %s [uid=''%s'']: invalid parameter (ier=%f, %%scicos_prob=%%%s).\n"), "do_eval", o.gui, o.model.uid, ier, string(%scicos_prob)));
                     ok=%f
                     return
                 end
diff --git a/scilab/modules/xcos/tests/nonreg_tests/bug_13396.tst b/scilab/modules/xcos/tests/nonreg_tests/bug_13396.tst
new file mode 100644 (file)
index 0000000..08395d0
--- /dev/null
@@ -0,0 +1,79 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2014 - Scilab Enterprises - Vladislav TRUBKIN
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+
+// <-- XCOS TEST -->
+//
+//<-- ENGLISH IMPOSED -->
+//
+// <-- Non-regression test for bug 13396 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=13396
+//
+// <-- Short Description -->
+// MBLOCK did not work with an external file containing the modelica class
+//
+
+global toggle;
+toggle = %T;
+
+assert_checktrue(importXcosDiagram(SCI + "/modules/xcos/tests/nonreg_tests/bug_13396.zcos"));
+
+prot = funcprot();
+funcprot(0);
+level = ilib_verbose();
+ilib_verbose(0);
+
+// create external file
+fd = mopen(TMPDIR+"/bug_13396.mo", "wt");
+txt = ["class bug_13396"; ..
+"    parameter Real R = 1.000000e-01;"; ..
+"    Pin p,n;"; ..
+"    Real i,v;"; ..
+"equation"; ..
+"    i = p.i;"; ..
+"    n.i = -i;"; ..
+"    v = p.v - n.v;"; ..
+"    R * i = v;"; ..
+"end bug_13396;"];
+mputl(txt, fd);
+mclose(fd);
+
+// overload of scicos_getvalue and msg box
+function str = x_mdialog(desc, labels, ini)
+    global toggle;
+    if toggle then
+        ini($) = TMPDIR + "/bug_13396.mo";
+        str = ini;
+        toggle = ~toggle;
+    else
+        str = []; // cancelling
+    end
+endfunction
+function messagebox(msg, msg_title)
+endfunction
+
+// set the path for external file
+for i = 1:size(scs_m.objs)
+    if typeof(scs_m.objs(i)) == "Block" & scs_m.objs(i).gui == "MBLOCK" then
+        scs_m.objs(i).graphics.exprs(9) = TMPDIR + "/bug_13396.mo";
+        scs_m.objs(i).model.sim(1) = TMPDIR + "/bug_13396.mo";
+        MBLOCK("set", scs_m.objs(i));
+        break
+    end
+end
+// compile the diagram
+[cpr, ok] = xcos_compile(scs_m);
+assert_checktrue(ok);
+// simulate the diagram
+xcos_simulate(scs_m, 4);
+
+funcprot(prot);
+ilib_verbose(level);
+
+mdelete(TMPDIR+"/bug_13396.mo");
+
diff --git a/scilab/modules/xcos/tests/nonreg_tests/bug_13396.unix.dia.ref b/scilab/modules/xcos/tests/nonreg_tests/bug_13396.unix.dia.ref
new file mode 100644 (file)
index 0000000..200d440
--- /dev/null
@@ -0,0 +1,84 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2014 - Scilab Enterprises - Vladislav TRUBKIN
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+// <-- XCOS TEST -->
+//
+//<-- ENGLISH IMPOSED -->
+//
+// <-- Non-regression test for bug 13396 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=13396
+//
+// <-- Short Description -->
+// MBLOCK did not work with an external file containing the modelica class
+//
+global toggle;
+toggle = %T;
+assert_checktrue(importXcosDiagram(SCI + "/modules/xcos/tests/nonreg_tests/bug_13396.zcos"));
+prot = funcprot();
+funcprot(0);
+level = ilib_verbose();
+ilib_verbose(0);
+// create external file
+fd = mopen(TMPDIR+"/bug_13396.mo", "wt");
+txt = ["class bug_13396"; ..
+"    parameter Real R = 1.000000e-01;"; ..
+"    Pin p,n;"; ..
+"    Real i,v;"; ..
+"equation"; ..
+"    i = p.i;"; ..
+"    n.i = -i;"; ..
+"    v = p.v - n.v;"; ..
+"    R * i = v;"; ..
+"end bug_13396;"];
+mputl(txt, fd);
+mclose(fd);
+// overload of scicos_getvalue and msg box
+function str = x_mdialog(desc, labels, ini)
+    global toggle;
+    if toggle then
+        ini($) = TMPDIR + "/bug_13396.mo";
+        str = ini;
+        toggle = ~toggle;
+    else
+        str = []; // cancelling
+    end
+endfunction
+function messagebox(msg, msg_title)
+endfunction
+// set the path for external file
+for i = 1:size(scs_m.objs)
+    if typeof(scs_m.objs(i)) == "Block" & scs_m.objs(i).gui == "MBLOCK" then
+        scs_m.objs(i).graphics.exprs(9) = TMPDIR + "/bug_13396.mo";
+        scs_m.objs(i).model.sim(1) = TMPDIR + "/bug_13396.mo";
+        MBLOCK("set", scs_m.objs(i));
+        break
+    end
+end
+// compile the diagram
+[cpr, ok] = xcos_compile(scs_m);
+--------------------------------------------\
+ Main Modelica : TMPDIR/bug_13396_im.mo
+
+ Flat Modelica : TMPDIR/bug_13396_imf.mo
+ Simulation C code :TMPDIR/bug_13396_im.c
+WARNING: Diagram contains implicit blocks, compiling for implicit Solver.
+assert_checktrue(ok);
+// simulate the diagram
+xcos_simulate(scs_m, 4);
+--------------------------------------------\
+ Main Modelica : TMPDIR/bug_13396_im.mo
+
+ Flat Modelica : TMPDIR/bug_13396_imf.mo
+ Simulation C code :TMPDIR/bug_13396_im.c
+WARNING: Diagram contains implicit blocks, compiling for implicit Solver.
+WARNING: Diagram has been compiled for implicit solver
+         switching to implicit Solver
+
+funcprot(prot);
+ilib_verbose(level);
+mdelete(TMPDIR+"/bug_13396.mo");
diff --git a/scilab/modules/xcos/tests/nonreg_tests/bug_13396.win.dia.ref b/scilab/modules/xcos/tests/nonreg_tests/bug_13396.win.dia.ref
new file mode 100644 (file)
index 0000000..214992e
--- /dev/null
@@ -0,0 +1,84 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2014 - Scilab Enterprises - Vladislav TRUBKIN
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+// <-- XCOS TEST -->
+//
+//<-- ENGLISH IMPOSED -->
+//
+// <-- Non-regression test for bug 13396 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=13396
+//
+// <-- Short Description -->
+// MBLOCK did not work with an external file containing the modelica class
+//
+global toggle;
+toggle = %T;
+assert_checktrue(importXcosDiagram(SCI + "/modules/xcos/tests/nonreg_tests/bug_13396.zcos"));
+prot = funcprot();
+funcprot(0);
+level = ilib_verbose();
+ilib_verbose(0);
+// create external file
+fd = mopen(TMPDIR+"/bug_13396.mo", "wt");
+txt = ["class bug_13396"; ..
+"    parameter Real R = 1.000000e-01;"; ..
+"    Pin p,n;"; ..
+"    Real i,v;"; ..
+"equation"; ..
+"    i = p.i;"; ..
+"    n.i = -i;"; ..
+"    v = p.v - n.v;"; ..
+"    R * i = v;"; ..
+"end bug_13396;"];
+mputl(txt, fd);
+mclose(fd);
+// overload of scicos_getvalue and msg box
+function str = x_mdialog(desc, labels, ini)
+    global toggle;
+    if toggle then
+        ini($) = TMPDIR + "/bug_13396.mo";
+        str = ini;
+        toggle = ~toggle;
+    else
+        str = []; // cancelling
+    end
+endfunction
+function messagebox(msg, msg_title)
+endfunction
+// set the path for external file
+for i = 1:size(scs_m.objs)
+    if typeof(scs_m.objs(i)) == "Block" & scs_m.objs(i).gui == "MBLOCK" then
+        scs_m.objs(i).graphics.exprs(9) = TMPDIR + "/bug_13396.mo";
+        scs_m.objs(i).model.sim(1) = TMPDIR + "/bug_13396.mo";
+        MBLOCK("set", scs_m.objs(i));
+        break
+    end
+end
+// compile the diagram
+[cpr, ok] = xcos_compile(scs_m);
+--------------------------------------------\
+ Main Modelica : TMPDIR\bug_13396_im.mo
+
+ Flat Modelica : TMPDIR\bug_13396_imf.mo
+ Simulation C code :TMPDIR\bug_13396_im.c
+WARNING: Diagram contains implicit blocks, compiling for implicit Solver.
+assert_checktrue(ok);
+// simulate the diagram
+xcos_simulate(scs_m, 4);
+--------------------------------------------\
+ Main Modelica : TMPDIR\bug_13396_im.mo
+
+ Flat Modelica : TMPDIR\bug_13396_imf.mo
+ Simulation C code :TMPDIR\bug_13396_im.c
+WARNING: Diagram contains implicit blocks, compiling for implicit Solver.
+WARNING: Diagram has been compiled for implicit solver
+         switching to implicit Solver
+
+funcprot(prot);
+ilib_verbose(level);
+mdelete(TMPDIR+"/bug_13396.mo");
diff --git a/scilab/modules/xcos/tests/nonreg_tests/bug_13396.zcos b/scilab/modules/xcos/tests/nonreg_tests/bug_13396.zcos
new file mode 100644 (file)
index 0000000..dc7f8a3
Binary files /dev/null and b/scilab/modules/xcos/tests/nonreg_tests/bug_13396.zcos differ