add macrovar test
[scilab.git] / scilab / modules / functions / tests / unit_tests / macrovar.tst
1 // =============================================================================
2 // Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
3 // Copyright (C) 2013 - Scilab Enterprises - Antoine ELIAS
4 //
5 //  This file is distributed under the same license as the Scilab package.
6 // =============================================================================
7
8 funcprot(0);
9
10 //1 in, 0 out
11 ref = list("i1", [], [], [], []);
12 function foo(i1)
13 endfunction
14
15 val = macrovar(foo);
16 assert_checkequal(ref, val);
17
18 //1 in, 1 out
19 ref = list("i1", "o1", [], [], []);
20 function o1 = foo(i1)
21     o1 = i1;
22 endfunction
23
24 val = macrovar(foo);
25 assert_checkequal(ref, val);
26
27 //n in, n out
28 ref = list(["i1";"i2";"i3";"i4"], ["o1";"o2";"o3"], [], [], []);
29 function [o1, o2, o3] = foo(i1, i2, i3, i4)
30     o1 = i1 + i2;
31     o2 = i2 + i3;
32     o3 = i3 + i4;
33 endfunction
34
35 val = macrovar(foo);
36 assert_checkequal(ref, val);
37
38 //add local vars
39 ref = list(["i1";"i2";"i3";"i4"], ["o1";"o2";"o3"], [], [], ["l1";"l2";"l3"]);
40 function [o1, o2, o3] = foo(i1, i2, i3, i4)
41     l1 = i1 + i2;
42     l2 = i2 + i3;
43     l3 = i3 + i4;
44     o1 = l1;
45     o2 = l2;
46     o3 = l3;
47 endfunction
48
49 val = macrovar(foo);
50 assert_checkequal(ref, val);
51
52 //add external vars
53 e1 = 1;
54 e2 = 2;
55 e3 = 3;
56
57 ref = list(["i1";"i2";"i3";"i4"], ["o1";"o2";"o3"], ["e1";"e2";"e3"], [], ["l1";"l2";"l3"]);
58 function [o1, o2, o3] = foo(i1, i2, i3, i4)
59     l1 = i1 + i2;
60     l2 = i2 + i3;
61     l3 = i3 + i4;
62     o1 = l1 + e1;
63     o2 = l2 + e2;
64     o3 = l3 + e3;
65 endfunction
66
67 val = macrovar(foo);
68 assert_checkequal(ref, val);
69
70 //add function calls
71 e1 = 1;
72 e2 = 2;
73 e3 = 3;
74
75 ref = list(["i1";"i2";"i3";"i4"], ["o1";"o2";"o3"], ["e1";"e2";"e3"], ["cos";"sin";"tan"], ["l1";"l2";"l3"]);
76 function [o1, o2, o3] = foo(i1, i2, i3, i4)
77     l1 = i1 + i2;
78     l2 = i2 + i3;
79     l3 = i3 + i4;
80     o1 = cos(l1 + e1);
81     o2 = sin(l2 + e2);
82     o3 = tan(l3 + e3);
83 endfunction
84
85 val = macrovar(foo);
86 assert_checkequal(ref, val);