Bug #16106 fixed: Xcos sciblk4 opar failed to simulate
[scilab.git] / scilab / modules / scicos / tests / nonreg_tests / bug_16106.tst
1 // =============================================================================
2 // Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
3 // Copyright (C) 2020 - ESI Group - Clement DAVID
4 //
5 //  This file is distributed under the same license as the Scilab package.
6 // =============================================================================
7 //
8 // <-- CLI SHELL MODE -->
9 // <-- NO CHECK REF -->
10 //
11 // <-- Non-regression test for bug 16106 -->
12 //
13 // <-- Bugzilla URL -->
14 // http://bugzilla.scilab.org/show_bug.cgi?id=16106
15 //
16 // <-- Short Description -->
17 // block.opar and block.oz could not be used for block implemented in Scilab
18 // with the scicos api 5.
19 //
20
21 loadXcosLibs
22
23 function [x,y,typ]=DEMO_BLK4(job,arg1,arg2)
24     x=[];
25     y=[];
26     typ=[];
27
28     select job
29     case "set" then
30         x=arg1;
31
32     case "define" then
33         model=scicos_model();
34         model.sim=list("demo_blk4_sim", 5)
35         model.blocktype="d";
36         model.dep_ut=[%f %t];
37         model.in=[1];
38         model.intyp=[1];
39         model.out=[1];
40         model.outtyp=[1];
41
42         r = rand(); // same shared random value for checking
43         model.opar=list("FOO", r)
44         model.odstate=list("BAR", r)
45
46         x=standard_define([2 2],model,[],[]);
47     end
48
49 endfunction
50
51 function [blk] = demo_blk4_sim(blk, flag)
52     if flag == 4 | flag == 6 // INIT or REINIT
53     elseif flag ==  1 // OUTPUT UPDATE
54         assert_checkequal(blk.opar(1), "FOO");
55         assert_checkequal(floor(blk.opar(2)), 0);
56         assert_checkequal(blk.oz(1), "BAR");
57         assert_checkequal(blk.oz(2) - floor(blk.oz(2)), blk.opar(2));
58     elseif flag ==  2 // STATE UPDATE
59         blk.odstate(2) = blk.odstate(2) + 1;
60         assert_checkequal(floor(blk.oz(2)) - blk.opar(2), 0);
61     end
62 endfunction
63
64 // For user specific testing
65 // pal = xcosPal("demo");
66 // pal = xcosPalAddBlock(pal, "DEMO_BLK4");
67 // xcosPalAdd(pal);
68
69 // Create a diagram with a DEMO_BLK4 linked to itself
70 blk = DEMO_BLK4("define");
71 blk.graphics.pin = 2;
72 blk.graphics.pout = 2;
73
74 lnk = scicos_link();
75 lnk.from = [1 1 0];
76 lnk.to = [1 1 1];
77
78 scs_m = scicos_diagram(objs=list(blk, lnk));
79 Info = scicos_simulate(scs_m, list());
80