Varargout management. Add list comparison.
[scilab.git] / scilab / modules / core / tests / unit_tests / varargout.tst
1 // =============================================================================
2 // Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
3 // Copyright (C) 2011 - DIGITEO - Bruno JOFRET
4 //
5 //  This file is distributed under the same license as the Scilab package.
6 // =============================================================================
7
8 //
9 // Return 3 values
10 //
11 function varargout=__test_function__()
12   varargout(1) = 42;
13   varargout(2) = "value";
14   varargout(3) = list(51);
15 endfunction
16
17 // Simple call
18 __test_function__();
19
20 a = __test_function__();
21 if a <> 42 then pause, end;
22 clear a;
23
24 [a,b] = __test_function__();
25 if a <> 42 then pause, end;
26 if b <> "value" then pause, end;
27 clear a;
28 clear b;
29
30 [a,b,c] = __test_function__();
31 if a <> 42 then pause, end;
32 if b <> "value" then pause, end;
33 if c <> list(51) then pause, end;
34 clear a;
35 clear b;
36 clear c;
37
38 // Check call with too much output values.
39 ierr = execstr("[a,b,c,d] = __test_function__();", "errcatch")
40 if ierr == 0 then pause, end;
41
42 //
43 // Return a list of 3 elements with second missing.
44 //
45 function varargout=__test_function2__()
46   varargout(1) = 42;
47   varargout(3) = "value";
48 endfunction
49
50 // Simple call
51 __test_function2__();
52
53 a = __test_function2__();
54 if a <> 42 then pause, end;
55 clear a;
56
57 // varargout(2) is undefined
58 ierr = execstr("[a,b] = __test_function2__();", "errcatch");
59 if ierr == 0 then pause, end;
60
61 //
62 // varargout is not set : should not work.
63 //
64 function varargout=__test_function3__()
65 endfunction
66
67 ierr = execstr("__test_function3__();", "errcatch");
68 if ierr == 0 then pause, end;