01eb95f028b1a810c03413f472b24709a901ab94
[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 = y^2 - y*sin(t) + cos(t)")
30
31 refMsg = msprintf(_("Wrong number of output arguments."));
32 assert_checkerror("y = dae(y0, t0, t, f1);", refMsg);
33
34 // The evaluation function purposely lacks the input argument 'ydot'
35 deff("[ydot,ires] = f2(t, y)", "ydot = y^2 - y*sin(t) + cos(t)");
36
37 refMsg = msprintf(_("Wrong number of input arguments."));
38 assert_checkerror("y = dae(y0, t0, t, f2);", refMsg);
39
40 // ----------------------------------
41 // Without initial yprime computation
42
43 // The evaluation function purposely lacks the output argument 'ires'
44 refMsg = msprintf(_("Wrong number of output arguments."));
45 assert_checkerror("y = dae([y0; 0], t0, t, f1);", refMsg);
46
47 // The evaluation function purposely lacks the input argument 'ydot'
48 refMsg = msprintf(_("Wrong number of input arguments."));
49 assert_checkerror("y = dae([y0; 0], t0, t, f2);", refMsg);
50
51
52 // ==================================================================
53 // DASRT
54
55 deff("r = g(t, y)", "r = ones(y)");
56
57 // -------------------------------
58 // With initial yprime computation
59
60 // The evaluation function purposely lacks the output argument 'ires'
61 refMsg = msprintf(_("Wrong number of output arguments."));
62 assert_checkerror("[y, r] = dae(""root"", y0, t0, t, f1, 1, g);", refMsg);
63
64 // The evaluation function purposely lacks the input argument 'ydot'
65 refMsg = msprintf(_("Wrong number of input arguments."));
66 assert_checkerror("[y, r] = dae(""root"", y0, t0, t, f2, 1, g);", refMsg);
67
68 // ----------------------------------
69 // Without initial yprime computation
70
71 // The evaluation function purposely lacks the output argument 'ires'
72 refMsg = msprintf(_("Wrong number of output arguments."));
73 assert_checkerror("[y, r] = dae(""root"", [y0; 0], t0, t, f1, 1, g);", refMsg);
74
75 // The evaluation function purposely lacks the input argument 'ydot'
76 refMsg = msprintf(_("Wrong number of input arguments."));
77 assert_checkerror("[y, r] = dae(""root"", [y0; 0], t0, t, f2, 1, g);", refMsg);
78
79
80 // ==================================================================
81 // DASKR
82
83 // -------------------------------
84 // With initial yprime computation
85
86 // The evaluation function purposely lacks the output argument 'ires'
87 refMsg = msprintf(_("Wrong number of output arguments."));
88 assert_checkerror("[y, r] = dae(""root2"", y0, t0, t, f1, 1, g);", refMsg);
89
90 // The evaluation function purposely lacks the input argument 'ydot'
91 refMsg = msprintf(_("Wrong number of input arguments."));
92 assert_checkerror("[y, r] = dae(""root2"", y0, t0, t, f2, 1, g);", refMsg);
93
94 // ----------------------------------
95 // Without initial yprime computation
96
97 // The evaluation function purposely lacks the output argument 'ires'
98 refMsg = msprintf(_("Variable returned by scilab argument function is incorrect."));
99 assert_checkerror("[y, r] = dae(""root2"", [y0; 0], t0, t, f1, 1, g);", refMsg);
100
101 // The evaluation function purposely lacks the input argument 'ydot'
102 assert_checkerror("[y, r] = dae(""root2"", [y0; 0], t0, t, f2, 1, g);", refMsg);