072943969e51a5fb39c0f7ea17fe54adfa7c9a8d
[scilab.git] / scilab / modules / special_functions / tests / nonreg_tests / bug_10450.tst
1 // =============================================================================
2 // Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
3 // Copyright (C) 2012 - DIGITEO - Allan CORNET
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 10450 -->
11 //
12 // <-- Bugzilla URL -->
13 // http://bugzilla.scilab.org/show_bug.cgi?id=10450
14 //
15 // Allows overloading for gamma, dlgamma and gammaln functions for list, tlist, 
16 // mlist and hypermatrices types. 
17
18 msgerr = msprintf(gettext("Function not defined for given argument type(s),\n"));
19
20 l = list(1, 2);
21 assert_checkerror("dlgamma(l)", [msgerr; msprintf(gettext("  check arguments or define function %s for overloading.\n"), "%l_dlgamma")]);
22 assert_checkerror("gammaln(l)", [msgerr; msprintf(gettext("  check arguments or define function %s for overloading.\n"), "%l_gammaln")]);
23 assert_checkerror("gamma(l)", [msgerr; msprintf(gettext("  check arguments or define function %s for overloading.\n"), "%l_gamma")]);
24
25 tl =  tlist(["mytlist", "field1", "field2"], [], []);
26 assert_checkerror("dlgamma(tl)", [msgerr; msprintf(gettext("  check arguments or define function %s for overloading.\n"), "%mytlist_dlgamma")]);
27 assert_checkerror("gammaln(tl)", [msgerr; msprintf(gettext("  check arguments or define function %s for overloading.\n"), "%mytlist_gammaln")]);
28 assert_checkerror("gamma(tl)", [msgerr; msprintf(gettext("  check arguments or define function %s for overloading.\n"), "%mytlist_gamma")]);
29
30 ml = mlist(['mymlist','name','value'],['a','b';'c' 'd'],[1 2; 3 4]);
31 assert_checkerror("dlgamma(ml)", [msgerr; msprintf(gettext("  check arguments or define function %s for overloading.\n"), "%mymlist_dlgamma")]);
32 assert_checkerror("gammaln(ml)", [msgerr; msprintf(gettext("  check arguments or define function %s for overloading.\n"), "%mymlist_gammaln")]);
33 assert_checkerror("gamma(ml)", [msgerr; msprintf(gettext("  check arguments or define function %s for overloading.\n"), "%mymlist_gamma")]);
34
35 n(1, 1, 1, 1:2) = [1 2];
36 assert_checkerror("dlgamma(n)", [msgerr; msprintf(gettext("  check arguments or define function %s for overloading.\n"), "%hm_dlgamma")]);
37 assert_checkerror("gammaln(n)", [msgerr; msprintf(gettext("  check arguments or define function %s for overloading.\n"), "%hm_gammaln")]);
38 assert_checkerror("gamma(n)", [msgerr; msprintf(gettext("  check arguments or define function %s for overloading.\n"), "%hm_gamma")]);
39
40 function Y = %l_dlgamma(X),  Y = %T; endfunction
41 function Y = %l_gammaln(X),  Y = %T; endfunction
42 function Y = %l_gamma(X),  Y = %T; endfunction
43 l = list(1, 2);
44 assert_checkequal(dlgamma(l), %T);
45 assert_checkequal(gammaln(l), %T);
46 assert_checkequal(gamma(l), %T);
47
48 function Y = %mytlist_dlgamma(X),  Y = %T; endfunction
49 function Y = %mytlist_gammaln(X),  Y = %T; endfunction
50 function Y = %mytlist_gamma(X),   Y = %T; endfunction
51 tl =  tlist(["mytlist", "field1", "field2"], [], []);
52 assert_checkequal(dlgamma(tl), %T);
53 assert_checkequal(gammaln(tl), %T);
54 assert_checkequal(gamma(tl), %T);
55
56 function Y = %mymlist_dlgamma(X),   Y = %T; endfunction
57 function Y = %mymlist_gammaln(X),  Y = %T; endfunction
58 function Y = %mymlist_gamma(X),  Y = %T; endfunction
59 ml = mlist(['mymlist','name','value'],['a','b';'c' 'd'],[1 2; 3 4]);
60 assert_checkequal(dlgamma(ml), %T);
61 assert_checkequal(gammaln(ml), %T);
62 assert_checkequal(gamma(ml), %T);
63
64 function Y = %hm_dlgamma(X),   Y = %T; endfunction
65 function Y = %hm_gammaln(X),   Y = %T; endfunction
66 function Y = %hm_gamma(X),   Y = %T; endfunction
67 n(1, 1, 1, 1:2) = [1 2];
68 assert_checkequal(dlgamma(n), %T);
69 assert_checkequal(gammaln(n), %T);
70 assert_checkequal(gamma(n), %T);