7735242f72b8d5632f79e0056bd7538d0ce9ecd5
[scilab.git] / scilab / modules / differential_equations / tests / nonreg_tests / bug_13512.tst
1 // =============================================================================
2 // Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
3 // Copyright (C) 2014 - Scilab Enterprises - Paul Bignier
4 //
5 //  This file is distributed under the same license as the Scilab package.
6 // =============================================================================
7 //
8 // <-- CLI SHELL MODE -->
9 //
10 // <-- Non-regression test for bug 13512 -->
11 //
12 // <-- Bugzilla URL -->
13 //http://bugzilla.scilab.org/show_bug.cgi?id=13512
14 //
15 // <-- Short Description -->
16 // dae crashed if the evaluation function had wrong prototype
17
18 y0 = 0;
19 t0 = 0;
20 t  = 1;
21
22 // ==================================================================
23 // DASSL
24
25 // -------------------------------
26 // With initial yprime computation
27
28 // The evaluation function purposely lacks the output argument 'ires'
29 deff("ydot = f1(t, y, ydot)", "ydot = y^2 - y*sin(t) + cos(t)")
30
31 refMsg = [msprintf(_("%s: Wrong number of output argument(s): %d expected.\n"), "f1", 2);
32 msprintf(_("%s: An error occured in ''%s'' subroutine.\n"), "dassl", "dassl")];
33
34 assert_checkerror("y = dae(y0, t0, t, f1);", refMsg);
35
36 // The evaluation function purposely lacks the input argument 'ydot'
37 deff("[ydot,ires] = f2(t, y)", "ydot = y^2 - y*sin(t) + cos(t)");
38
39 refMsg = [msprintf(_("Wrong number of input arguments."));
40 msprintf(_("%s: An error occured in ''%s'' subroutine.\n"), "dassl", "dassl")];
41 assert_checkerror("y = dae(y0, t0, t, f2);", refMsg);
42
43 // ----------------------------------
44 // Without initial yprime computation
45
46 // The evaluation function purposely lacks the output argument 'ires'
47 refMsg = [msprintf(_("%s: Wrong number of output argument(s): %d expected.\n"), "f1", 2);
48 msprintf(_("%s: An error occured in ''%s'' subroutine.\n"), "dassl", "dassl")];
49 assert_checkerror("y = dae([y0; 0], t0, t, f1);", refMsg);
50
51 // The evaluation function purposely lacks the input argument 'ydot'
52 refMsg = [msprintf(_("Wrong number of input arguments."));
53 msprintf(_("%s: An error occured in ''%s'' subroutine.\n"), "dassl", "dassl")];
54 assert_checkerror("y = dae([y0; 0], t0, t, f2);", refMsg);
55
56
57 // ==================================================================
58 // DASRT
59
60 deff("r = g(t, y)", "r = ones(y)");
61
62 // -------------------------------
63 // With initial yprime computation
64
65 // The evaluation function purposely lacks the output argument 'ires'
66 refMsg = [msprintf(_("%s: Wrong number of output argument(s): %d expected.\n"), "f1", 2);
67 msprintf(_("%s: An error occured in ''%s'' subroutine.\n"), "dasrt", "ddasrt")];
68 assert_checkerror("[y, r] = dae(""root"", y0, t0, t, f1, 1, g);", refMsg);
69
70 // The evaluation function purposely lacks the input argument 'ydot'
71 refMsg = [msprintf(_("Wrong number of input arguments."));
72 msprintf(_("%s: An error occured in ''%s'' subroutine.\n"), "dasrt", "ddasrt")];
73 assert_checkerror("[y, r] = dae(""root"", y0, t0, t, f2, 1, g);", refMsg);
74
75 // ----------------------------------
76 // Without initial yprime computation
77
78 // The evaluation function purposely lacks the output argument 'ires'
79 refMsg = [msprintf(_("%s: Wrong number of output argument(s): %d expected.\n"), "f1", 2);
80 msprintf(_("%s: An error occured in ''%s'' subroutine.\n"), "dasrt", "ddasrt")];
81 assert_checkerror("[y, r] = dae(""root"", [y0; 0], t0, t, f1, 1, g);", refMsg);
82
83 // The evaluation function purposely lacks the input argument 'ydot'
84 refMsg = [msprintf(_("Wrong number of input arguments."));
85 msprintf(_("%s: An error occured in ''%s'' subroutine.\n"), "dasrt", "ddasrt")];
86 assert_checkerror("[y, r] = dae(""root"", [y0; 0], t0, t, f2, 1, g);", refMsg);
87
88
89 // ==================================================================
90 // DASKR
91
92 // -------------------------------
93 // With initial yprime computation
94
95 // The evaluation function purposely lacks the output argument 'ires'
96 refMsg = [msprintf(_("%s: Wrong number of output argument(s): %d expected.\n"), "f1", 2);
97 msprintf(_("%s: An error occured in ''%s'' subroutine.\n"), "daskr", "ddaskr")];
98 assert_checkerror("[y, r] = dae(""root2"", y0, t0, t, f1, 1, g);", refMsg);
99
100 // The evaluation function purposely lacks the input argument 'ydot'
101 refMsg = [msprintf(_("Wrong number of input arguments."));
102 msprintf(_("%s: An error occured in ''%s'' subroutine.\n"), "daskr", "ddaskr")];
103 assert_checkerror("[y, r] = dae(""root2"", y0, t0, t, f2, 1, g);", refMsg);
104
105 // ----------------------------------
106 // Without initial yprime computation
107
108 // The evaluation function purposely lacks the output argument 'ires'
109 refMsg = [msprintf(_("%s: Wrong size for output argument #%d: A matrix of size %d expected.\n"), "g", 1, 1);
110 msprintf(_("%s: An error occured in ''%s'' subroutine.\n"), "daskr", "ddaskr")];
111 assert_checkerror("[y, r] = dae(""root2"", [y0; 0], t0, t, f1, 1, g);", refMsg);
112
113 // The evaluation function purposely lacks the input argument 'ydot'
114 assert_checkerror("[y, r] = dae(""root2"", [y0; 0], t0, t, f2, 1, g);", refMsg);