Scicos: add some tests for user-defined functions 83/20283/7
Clément DAVID [Tue, 17 Jul 2018 16:05:32 +0000 (18:05 +0200)]
 1. simplest unit tests for sciblk2 sciblk4
 2. benchmarks to evaluate impl. cost for each Scilab API and compare
    them against the evaluate_expr reference.

Change-Id: Ifc25273c4f650787a8a812bbf6041f398c394db1

scilab/modules/scicos/tests/benchmarks/evaluate_expr.tst [new file with mode: 0644]
scilab/modules/scicos/tests/benchmarks/sciblk2.tst [new file with mode: 0644]
scilab/modules/scicos/tests/benchmarks/sciblk4.tst [new file with mode: 0644]
scilab/modules/scicos/tests/unit_tests/sciblk2_nwni.tst [new file with mode: 0644]
scilab/modules/scicos/tests/unit_tests/sciblk4_nwni.tst [new file with mode: 0644]

diff --git a/scilab/modules/scicos/tests/benchmarks/evaluate_expr.tst b/scilab/modules/scicos/tests/benchmarks/evaluate_expr.tst
new file mode 100644 (file)
index 0000000..2959a04
--- /dev/null
@@ -0,0 +1,39 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2018 - ESI Group - Clement DAVID
+//
+//  This file is distributed under the same license as the Scilab package.
+// =============================================================================
+
+//==============================================================================
+// Benchmark for simulating an evaluate_expr (EXPRESSION) diagram
+//==============================================================================
+
+loadXcosLibs();
+
+scs_m = scicos_diagram();
+scs_m.props.tf = 2e4;
+
+expression = EXPRESSION("define");
+expression.graphics.exprs = ["1" ; "u1 + 1" ; "0"];
+
+scs_m.objs(1) = GENSIN_f("define");
+scs_m.objs(1).graphics.pout = 5;
+scs_m.objs(2) = expression;
+scs_m.objs(2).graphics.pin = 5;
+scs_m.objs(2).graphics.pout = 6;
+scs_m.objs(3) = TRASH_f("define");
+scs_m.objs(3).graphics.pin = 6;
+scs_m.objs(3).graphics.pein = 7;
+scs_m.objs(4) = CLOCK_c("define");
+scs_m.objs(4).graphics.peout = 7;
+
+scs_m.objs(5) = scicos_link(from=[1 1 0], to=[2 1 1]);
+scs_m.objs(6) = scicos_link(from=[2 1 0], to=[3 1 1]);
+scs_m.objs(7) = scicos_link(from=[4 1 0], to=[3 1 1], ct=[1 -1]);
+
+// <-- BENCH NB RUN : 1 -->
+// <-- BENCH START -->
+Info = scicos_simulate(scs_m, list());
+// <-- BENCH END -->
+
diff --git a/scilab/modules/scicos/tests/benchmarks/sciblk2.tst b/scilab/modules/scicos/tests/benchmarks/sciblk2.tst
new file mode 100644 (file)
index 0000000..6fa1ee7
--- /dev/null
@@ -0,0 +1,68 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2018 - ESI Group - Clement DAVID
+//
+//  This file is distributed under the same license as the Scilab package.
+// =============================================================================
+
+//==============================================================================
+// Benchmark for simulating a sciblk2 diagram
+//==============================================================================
+
+loadXcosLibs();
+
+scs_m = scicos_diagram();
+scs_m.props.tf = 2e4;
+
+function [x,y,typ]=SCIBLK2_bench(job,arg1,arg2)
+    x=[];y=[];typ=[]
+    select job
+    case "set" then
+        x=arg1;
+    case "define" then
+        model=scicos_model()
+        model.sim=list("SCIBLK2_bench_sim",3)
+
+        model.in = 1
+        model.in2 = 1
+        model.out = 1
+        model.out2 = 1
+
+        model.blocktype="d"
+        model.dep_ut=[%t %f]
+
+        exprs=[];
+        gr_i=[]
+        x=standard_define([3 2],model,exprs,gr_i)
+        x.graphics.style=["blockWithLabel;displayedLabel=SCIBLK4_bench"]
+    end
+endfunction
+
+function [xd, tvec, z, x, outptr] = SCIBLK2_bench_sim(flag, nevprt, t, x, z, rpar, ipar, inptr)
+    xd = [];
+    tvec = [];
+    z = [];
+    x = [];
+    outptr = list(inptr(1) + 1);
+endfunction
+
+scs_m.objs(1) = GENSIN_f("define");
+scs_m.objs(1).graphics.pout = 5;
+scs_m.objs(2) = SCIBLK2_bench("define");
+scs_m.objs(2).graphics.pin = 5;
+scs_m.objs(2).graphics.pout = 6;
+scs_m.objs(3) = TRASH_f("define");
+scs_m.objs(3).graphics.pin = 6;
+scs_m.objs(3).graphics.pein = 7;
+scs_m.objs(4) = CLOCK_c("define");
+scs_m.objs(4).graphics.peout = 7;
+
+scs_m.objs(5) = scicos_link(from=[1 1 0], to=[2 1 1]);
+scs_m.objs(6) = scicos_link(from=[2 1 0], to=[3 1 1]);
+scs_m.objs(7) = scicos_link(from=[4 1 0], to=[3 1 1], ct=[1 -1]);
+
+// <-- BENCH NB RUN : 1 -->
+// <-- BENCH START -->
+Info = scicos_simulate(scs_m, list());
+// <-- BENCH END -->
+
diff --git a/scilab/modules/scicos/tests/benchmarks/sciblk4.tst b/scilab/modules/scicos/tests/benchmarks/sciblk4.tst
new file mode 100644 (file)
index 0000000..6e468bd
--- /dev/null
@@ -0,0 +1,64 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2018 - ESI Group - Clement DAVID
+//
+//  This file is distributed under the same license as the Scilab package.
+// =============================================================================
+
+//==============================================================================
+// Benchmark for simulating a sciblk4 diagram
+//==============================================================================
+
+loadXcosLibs();
+
+function [x,y,typ]=SCIBLK4_bench(job,arg1,arg2)
+    x=[];y=[];typ=[]
+    select job
+    case "set" then
+        x=arg1;
+    case "define" then
+        model=scicos_model()
+        model.sim=list("SCIBLK4_bench_sim",5)
+
+        model.in = 1
+        model.in2 = 1
+        model.out = 1
+        model.out2 = 1
+
+        model.blocktype="d"
+        model.dep_ut=[%t %f]
+
+        exprs=[];
+        gr_i=[]
+        x=standard_define([3 2],model,exprs,gr_i)
+        x.graphics.style=["blockWithLabel;displayedLabel=SCIBLK4_bench"]
+    end
+endfunction
+
+function blk = SCIBLK4_bench_sim(blk, flag)
+    blk.outptr(1) = blk.inptr(1) + 1;
+endfunction
+
+scs_m = scicos_diagram();
+scs_m.props.tf = 2e4;
+
+scs_m.objs(1) = GENSIN_f("define");
+scs_m.objs(1).graphics.pout = 5;
+scs_m.objs(2) = SCIBLK4_bench("define");
+scs_m.objs(2).graphics.pin = 5;
+scs_m.objs(2).graphics.pout = 6;
+scs_m.objs(3) = TRASH_f("define");
+scs_m.objs(3).graphics.pin = 6;
+scs_m.objs(3).graphics.pein = 7;
+scs_m.objs(4) = CLOCK_c("define");
+scs_m.objs(4).graphics.peout = 7;
+
+scs_m.objs(5) = scicos_link(from=[1 1 0], to=[2 1 1]);
+scs_m.objs(6) = scicos_link(from=[2 1 0], to=[3 1 1]);
+scs_m.objs(7) = scicos_link(from=[4 1 0], to=[3 1 1], ct=[1 -1]);
+
+// <-- BENCH NB RUN : 1 -->
+// <-- BENCH START -->
+Info = scicos_simulate(scs_m, list());
+// <-- BENCH END -->
+
diff --git a/scilab/modules/scicos/tests/unit_tests/sciblk2_nwni.tst b/scilab/modules/scicos/tests/unit_tests/sciblk2_nwni.tst
new file mode 100644 (file)
index 0000000..a4aa175
--- /dev/null
@@ -0,0 +1,67 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2018 - ESI Group - Clement DAVID
+//
+//  This file is distributed under the same license as the Scilab package.
+// =============================================================================
+//
+// <-- CLI SHELL MODE -->
+// <-- NO CHECK REF -->
+//
+
+loadXcosLibs();
+
+// simplest benchmark ever
+function [x,y,typ]=SCIBLK2_bench(job,arg1,arg2)
+    x=[];y=[];typ=[]
+    select job
+    case "set" then
+        x=arg1;
+    case "define" then
+        model=scicos_model()
+        model.sim=list("SCIBLK2_bench_sim",3)
+
+        model.in = 1
+        model.in2 = 1
+        model.out = 1
+        model.out2 = 1
+
+        model.blocktype="d"
+        model.dep_ut=[%t %f]
+
+        exprs=[];
+        gr_i=[]
+        x=standard_define([3 2],model,exprs,gr_i)
+        x.graphics.style=["blockWithLabel;displayedLabel=SCIBLK4_bench"]
+    end
+endfunction
+
+function [xd, tvec, z, x, outptr] = SCIBLK2_bench_sim(flag, nevprt, t, x, z, rpar, ipar, inptr)
+    xd = [];
+    tvec = [];
+    z = [];
+    x = [];
+    outptr = list(inptr(1) + 1);
+endfunction
+
+scs_m = scicos_diagram();
+scs_m.props.tf = 0.5;
+
+scs_m.objs(1) = GENSIN_f("define");
+scs_m.objs(1).graphics.pout = 5;
+scs_m.objs(2) = SCIBLK2_bench("define");
+scs_m.objs(2).graphics.pin = 5;
+scs_m.objs(2).graphics.pout = 6;
+scs_m.objs(3) = TRASH_f("define");
+scs_m.objs(3).graphics.pin = 6;
+scs_m.objs(3).graphics.pein = 7;
+scs_m.objs(4) = CLOCK_c("define");
+scs_m.objs(4).graphics.peout = 7;
+
+scs_m.objs(5) = scicos_link(from=[1 1 0], to=[2 1 1]);
+scs_m.objs(6) = scicos_link(from=[2 1 0], to=[3 1 1]);
+scs_m.objs(7) = scicos_link(from=[4 1 0], to=[3 1 1], ct=[1 -1]);
+
+Info = scicos_simulate(scs_m, list());
+assert_checkequal(Info(list(2,2,9)), list(sin(0.5), 1 + sin(0.5)));
+
diff --git a/scilab/modules/scicos/tests/unit_tests/sciblk4_nwni.tst b/scilab/modules/scicos/tests/unit_tests/sciblk4_nwni.tst
new file mode 100644 (file)
index 0000000..ce2b472
--- /dev/null
@@ -0,0 +1,62 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2018 - ESI Group - Clement DAVID
+//
+//  This file is distributed under the same license as the Scilab package.
+// =============================================================================
+//
+// <-- CLI SHELL MODE -->
+// <-- NO CHECK REF -->
+//
+
+loadXcosLibs();
+
+// simplest sciblk4 test
+function [x,y,typ]=SCIBLK4_bench(job,arg1,arg2)
+    x=[];y=[];typ=[]
+    select job
+    case "set" then
+        x=arg1;
+    case "define" then
+        model=scicos_model()
+        model.sim=list("SCIBLK4_bench_sim",5)
+
+        model.in = 1
+        model.in2 = 1
+        model.out = 1
+        model.out2 = 1
+
+        model.blocktype="d"
+        model.dep_ut=[%t %f]
+
+        exprs=[];
+        gr_i=[]
+        x=standard_define([3 2],model,exprs,gr_i)
+        x.graphics.style=["blockWithLabel;displayedLabel=SCIBLK4_bench"]
+    end
+endfunction
+
+function blk = SCIBLK4_bench_sim(blk, flag)
+    blk.outptr(1) = blk.inptr(1) + 1;
+endfunction
+
+scs_m = scicos_diagram();
+scs_m.props.tf = 0.5;
+
+scs_m.objs(1) = GENSIN_f("define");
+scs_m.objs(1).graphics.pout = 5;
+scs_m.objs(2) = SCIBLK4_bench("define");
+scs_m.objs(2).graphics.pin = 5;
+scs_m.objs(2).graphics.pout = 6;
+scs_m.objs(3) = TRASH_f("define");
+scs_m.objs(3).graphics.pin = 6;
+scs_m.objs(3).graphics.pein = 7;
+scs_m.objs(4) = CLOCK_c("define");
+scs_m.objs(4).graphics.peout = 7;
+
+scs_m.objs(5) = scicos_link(from=[1 1 0], to=[2 1 1]);
+scs_m.objs(6) = scicos_link(from=[2 1 0], to=[3 1 1]);
+scs_m.objs(7) = scicos_link(from=[4 1 0], to=[3 1 1], ct=[1 -1]);
+
+Info = scicos_simulate(scs_m, list());
+assert_checkequal(Info(list(2,2,9)), list(sin(0.5), 1+sin(0.5)));