* Bug #12651 fixed - The 'nw' scicos_simulate option did not work while 38/11638/3
Clément DAVID [Tue, 4 Jun 2013 07:08:18 +0000 (09:08 +0200)]
                     passing a previous Info simulation status.

Change-Id: I0f54f03edec73877e763a7e9f57914dbcb5b09ba

scilab/CHANGES_5.5.X
scilab/modules/scicos/macros/scicos_auto/scicos_simulate.sci
scilab/modules/xcos/tests/nonreg_tests/bug_12651.dia.ref [new file with mode: 0644]
scilab/modules/xcos/tests/nonreg_tests/bug_12651.tst [new file with mode: 0644]

index 5d6ad47..c170204 100644 (file)
@@ -98,6 +98,9 @@ Xcos
 * Bug #12619 fixed - The discrete block DLR was not displaying latex formula
                      like continuous CLR block.
 
+* Bug #12651 fixed - The 'nw' scicos_simulate option did not work while
+                     passing a previous Info simulation status.
+
 
 Toolbox skeleton
 =================
index 8c93680..1a6c1fa 100644 (file)
@@ -248,7 +248,8 @@ function Info = scicos_simulate(scs_m, Info, updated_vars, flag, Ignb)
         error(["Incorrect context definition, " + lasterror()])
     end
 
-    if %cpr == list() then
+    // perform block supression only on partial compilation and full compilation
+    if needcompile > 1 then
         need_suppress  =%t
     else
         need_suppress = %f
diff --git a/scilab/modules/xcos/tests/nonreg_tests/bug_12651.dia.ref b/scilab/modules/xcos/tests/nonreg_tests/bug_12651.dia.ref
new file mode 100644 (file)
index 0000000..6f76e9d
--- /dev/null
@@ -0,0 +1,34 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2013 - Scilab Enterprises - Clément DAVID
+//
+//  This file is distributed under the same license as the Scilab package.
+// =============================================================================
+// <-- XCOS TEST -->
+//
+// <-- Non-regression test for bug 12651 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=12651
+//
+// <-- Short Description -->
+// The scicos_simulate's 'nw' flag did not works while re-using an Info
+// simulation state.
+// this demo contains 2 scopes
+importXcosDiagram SCI/modules/xcos/demos/Simple_Demo.zcos
+ ans  =
+  T  
+// clear any simulation state
+Info = list();
+// first call perform a full-compilation, then ignore some blocks
+Info = scicos_simulate(scs_m, Info, 'nw');
+blocks=list2vec(Info(2).sim.funs);
+assert_checkfalse(or(blocks == "cscope"));
+assert_checktrue(or(blocks == "trash"));
+// second call perform a partial-compilation, and should continue to ignore
+// some blocks
+Info = scicos_simulate(scs_m, Info, 'nw');
+blocks=list2vec(Info(2).sim.funs);
+assert_checkfalse(or(blocks == "cscope"));
+assert_checktrue(or(blocks == "trash"));
diff --git a/scilab/modules/xcos/tests/nonreg_tests/bug_12651.tst b/scilab/modules/xcos/tests/nonreg_tests/bug_12651.tst
new file mode 100644 (file)
index 0000000..4ae0ef9
--- /dev/null
@@ -0,0 +1,37 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2013 - Scilab Enterprises - Clément DAVID
+//
+//  This file is distributed under the same license as the Scilab package.
+// =============================================================================
+
+// <-- XCOS TEST -->
+//
+// <-- Non-regression test for bug 12651 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=12651
+//
+// <-- Short Description -->
+// The scicos_simulate's 'nw' flag did not works while re-using an Info
+// simulation state.
+
+// this demo contains 2 scopes
+importXcosDiagram SCI/modules/xcos/demos/Simple_Demo.zcos
+
+// clear any simulation state
+Info = list();
+
+// first call perform a full-compilation, then ignore some blocks
+Info = scicos_simulate(scs_m, Info, 'nw');
+blocks=list2vec(Info(2).sim.funs);
+assert_checkfalse(or(blocks == "cscope"));
+assert_checktrue(or(blocks == "trash"));
+
+// second call perform a partial-compilation, and should continue to ignore
+// some blocks
+Info = scicos_simulate(scs_m, Info, 'nw');
+blocks=list2vec(Info(2).sim.funs);
+assert_checkfalse(or(blocks == "cscope"));
+assert_checktrue(or(blocks == "trash"));
+