bug #14573: varargout misworked when it was used in addition to fixed output arguments
[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 // <-- CLI SHELL MODE -->
9 // <-- NO CHECK REF -->
10 //
11 // Return 3 values
12 //
13 function varargout=__test_function__()
14   varargout(1) = 42;
15   varargout(2) = "value";
16   varargout(3) = list(51);
17 endfunction
18
19 // Simple call
20 __test_function__();
21
22 a = __test_function__();
23 if a <> 42 then pause, end;
24 clear a;
25
26 [a,b] = __test_function__();
27 if a <> 42 then pause, end;
28 if b <> "value" then pause, end;
29 clear a;
30 clear b;
31
32 [a,b,c] = __test_function__();
33 if a <> 42 then pause, end;
34 if b <> "value" then pause, end;
35 if c <> list(51) then pause, end;
36 clear a;
37 clear b;
38 clear c;
39
40 // Check call with too much output values.
41 ierr = execstr("[a,b,c,d] = __test_function__();", "errcatch");
42 assert_checkfalse(ierr == 0);
43
44 //
45 // Return a list of 3 elements with second missing.
46 //
47 function varargout=__test_function2__()
48   varargout(1) = 42;
49   varargout(3) = "value";
50 endfunction
51
52 // Simple call
53 __test_function2__();
54
55 a = __test_function2__();
56 if a <> 42 then pause, end;
57 clear a;
58
59 // varargout(2) is undefined
60 ierr = execstr("[a,b] = __test_function2__();", "errcatch");
61 assert_checkfalse(ierr == 0);
62
63 // empty list
64 function varargout=__test_function3__()
65   varargout = list();
66 endfunction
67
68 msg = msprintf(_("%s: Wrong number of output argument(s): %d expected.\n"), "__test_function3__", 0);
69 assert_checkerror("a = __test_function3__()", msg);
70
71 // wrong varargout type
72 function varargout=__test_function4__()
73   varargout = 42;
74 endfunction
75
76 msg = msprintf(_("%s: Wrong type for %s: A list expected.\n"), "__test_function4__", "Varargout");
77 assert_checkerror("__test_function4__()", msg);