Xcos: fix memleak on MVC objects after 238f0650
[scilab.git] / scilab / modules / scicos / tests / unit_tests / do_eval.tst
1 // =============================================================================
2 // Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
3 // Copyright (C) 2016 - Scilab Enterprises - Clement DAVID
4 //
5 //  This file is distributed under the same license as the Scilab package.
6 // =============================================================================
7 //
8 // <-- CLI SHELL MODE -->
9
10 scicos_log("INFO")
11 loadXcosLibs();
12
13 // check contained blocks interfaces
14 o = CONST_m("define");
15 assert_checkequal(o.graphics.pin, []);
16 assert_checkequal(o.graphics.pout, 0);
17 assert_checkequal(o.graphics.pein, []);
18 assert_checkequal(o.graphics.peout, []);
19 clear o
20
21 o = TRASH_f("define");
22 assert_checkequal(o.graphics.pin, 0);
23 assert_checkequal(o.graphics.pout, []);
24 assert_checkequal(o.graphics.pein, 0);
25 assert_checkequal(o.graphics.peout, []);
26 clear o
27
28 o = CLOCK_f("define");
29 assert_checkequal(o.graphics.pin, []);
30 assert_checkequal(o.graphics.pout, []);
31 assert_checkequal(o.graphics.pein, []);
32 assert_checkequal(o.graphics.peout, 0);
33
34 assert_checkequal(o.model.rpar.objs(1).graphics.pin, []);
35 assert_checkequal(o.model.rpar.objs(1).graphics.pout, []);
36 assert_checkequal(o.model.rpar.objs(1).graphics.pein, 5);
37 assert_checkequal(o.model.rpar.objs(1).graphics.peout, []);
38 assert_checkequal(o.model.rpar.objs(4).graphics.pin, []);
39 assert_checkequal(o.model.rpar.objs(4).graphics.pout, []);
40 assert_checkequal(o.model.rpar.objs(4).graphics.pein, 3);
41 assert_checkequal(o.model.rpar.objs(4).graphics.peout, [5;6]);
42 assert_checkequal(o.model.rpar.objs(2).graphics.pin, []);
43 assert_checkequal(o.model.rpar.objs(2).graphics.pout, []);
44 assert_checkequal(o.model.rpar.objs(2).graphics.pein, 6);
45 assert_checkequal(o.model.rpar.objs(2).graphics.peout, 3);
46 clear o
47
48 // create a block and connect it
49 function o = create_and_connect(fname, pin, pout, pein, peout)
50     o = fname("define");
51     if exists("pin","local") then o.graphics.pin = pin; end
52     if exists("pout","local") then o.graphics.pout = pout; end
53     if exists("pein","local") then o.graphics.pein = pein; end
54     if exists("peout","local") then o.graphics.peout = peout; end
55 endfunction
56
57 // create a valid diagram
58 scs_m = scicos_diagram(objs=list( ..
59 CONST_m("define"), ..
60 TRASH_f("define"), ..
61 CLOCK_c("define"), ..
62 scicos_link(from=[1 1 0],to=[2 1 1]), ..
63 scicos_link(from=[3 1 0],to=[2 1 1],ct=[5,-1])));
64
65 assert_checkequal(scs_m.objs(1).graphics.pout, 4);
66 assert_checkequal(scs_m.objs(2).graphics.pin, 4);
67 assert_checkequal(scs_m.objs(2).graphics.pein, 5);
68 assert_checkequal(scs_m.objs(3).graphics.peout, 5);
69
70 assert_checkequal(scs_m.objs(3).model.rpar.objs(1).graphics.pin, []);
71 assert_checkequal(scs_m.objs(3).model.rpar.objs(1).graphics.pout, []);
72 assert_checkequal(scs_m.objs(3).model.rpar.objs(1).graphics.pein, 5);
73 assert_checkequal(scs_m.objs(3).model.rpar.objs(1).graphics.peout, []);
74 assert_checkequal(scs_m.objs(3).model.rpar.objs(4).graphics.pin, []);
75 assert_checkequal(scs_m.objs(3).model.rpar.objs(4).graphics.pout, []);
76 assert_checkequal(scs_m.objs(3).model.rpar.objs(4).graphics.pein, 3);
77 assert_checkequal(scs_m.objs(3).model.rpar.objs(4).graphics.peout, [5;6]);
78 assert_checkequal(scs_m.objs(3).model.rpar.objs(2).graphics.pin, []);
79 assert_checkequal(scs_m.objs(3).model.rpar.objs(2).graphics.pout, []);
80 assert_checkequal(scs_m.objs(3).model.rpar.objs(2).graphics.pein, 6);
81 assert_checkequal(scs_m.objs(3).model.rpar.objs(2).graphics.peout, 3);
82
83 needcompile = 4;
84 [scs_m, %cpr, needcompile, ok] = do_eval(scs_m, list(),struct());
85
86 assert_checkequal(scs_m.objs(1).graphics.pout, 4);
87 assert_checkequal(scs_m.objs(2).graphics.pin, 4);
88 assert_checkequal(scs_m.objs(2).graphics.pein, 5);
89 assert_checkequal(scs_m.objs(3).graphics.peout, 5);
90
91 assert_checkequal(scs_m.objs(3).model.rpar.objs(1).graphics.pin, []);
92 assert_checkequal(scs_m.objs(3).model.rpar.objs(1).graphics.pout, []);
93 assert_checkequal(scs_m.objs(3).model.rpar.objs(1).graphics.pein, 5);
94 assert_checkequal(scs_m.objs(3).model.rpar.objs(1).graphics.peout, []);
95 assert_checkequal(scs_m.objs(3).model.rpar.objs(4).graphics.pin, []);
96 assert_checkequal(scs_m.objs(3).model.rpar.objs(4).graphics.pout, []);
97 assert_checkequal(scs_m.objs(3).model.rpar.objs(4).graphics.pein, 3);
98 assert_checkequal(scs_m.objs(3).model.rpar.objs(4).graphics.peout, [5;6]);
99 assert_checkequal(scs_m.objs(3).model.rpar.objs(2).graphics.pin, []);
100 assert_checkequal(scs_m.objs(3).model.rpar.objs(2).graphics.pout, []);
101 assert_checkequal(scs_m.objs(3).model.rpar.objs(2).graphics.pein, 6);
102 assert_checkequal(scs_m.objs(3).model.rpar.objs(2).graphics.peout, 3);
103
104 clear scs_m