check input arguments in contr function
[scilab.git] / scilab / modules / cacsd / tests / unit_tests / contr.tst
1 // =============================================================================\r
2 // Scilab ( http://www.scilab.org/ ) - This file is part of Scilab\r
3 // Copyright (C) ????-2008 - INRIA - Serge Steer\r
4 // Copyright (C) 2012 - Scilab Enterprises - Adeline CARNIS\r
5 //\r
6 //  This file is distributed under the same license as the Scilab package.\r
7 // =============================================================================\r
8 assert_checkfalse(execstr("contr()", "errcatch") == 0);\r
9 refMsg = msprintf(_("%s: Wrong number of input argument(s): %d to %d expected."), "contr", 2, 3); \r
10 assert_checkerror("contr()", refMsg);\r
11 \r
12 A = ones(3,3) + 0 * %i;\r
13 B = ones(3,3) * 2;\r
14 assert_checkfalse(execstr("contr(A, B)", "errcatch") == 0);\r
15 refMsg = msprintf(_("%s: Wrong type for input argument #%d: A real matrix expected."), "contr", 1); \r
16 assert_checkerror("contr(A, B)", refMsg);\r
17 \r
18 A = ones(3,3);\r
19 assert_checkfalse(execstr("contr(A, complex(B))", "errcatch") == 0);\r
20 refMsg = msprintf(_("%s: Wrong type for input argument #%d: A real matrix expected."), "contr", 2); \r
21 assert_checkerror("contr(A, complex(B))", refMsg);\r
22 \r
23 assert_checkfalse(execstr("contr(sparse(A), B)", "errcatch") == 0);\r
24 refMsg = msprintf(_("%s: Wrong type for input argument #%d: A real matrix expected."), "contr", 1); \r
25 assert_checkerror("contr(sparse(A), B)", refMsg);\r
26 \r
27 assert_checkfalse(execstr("contr(A, sparse(B))", "errcatch") == 0);\r
28 refMsg = msprintf(_("%s: Wrong type for input argument #%d: A real matrix expected."), "contr", 2); \r
29 assert_checkerror("contr(A, sparse(B))", refMsg);\r
30 \r
31 a = [0.8604043 , 0.0070020 , 0.6223373 , -1.356213 , -4.2301775\r
32      0.159714 ,  0.0857791 , -0.2367751 , 0.4958580 , 0.6398817\r
33      -4.3054931 , -0.0365878 , 2.1784911 , 0.0314793 , 2.3728994\r
34      -3.7115779 , -0.5370809 , 2.4291716 , -0.6352663 , 2.6972781\r
35      6.3580966 , 0.1377712 , -4.0461243 , -0.5192899 , -4.0394083];\r
36 b = [-0.0532544 , -0.1494083 , -0.0098619\r
37      -0.0355030 , -0.0162722 , 0.1045365\r
38      -0.1301775 , 0.1736686 , -0.0611440\r
39      0.1834320 , 0.1757396 , -0.5956607\r
40      0.1775148 , -0.1186391 , 0.1439842];\r
41 c = [2 , 7 , -2 , 5 , 1\r
42      0 , -1 , 3 , 0 , 2];\r
43 d = [1 , 0 , 0\r
44      0 , 0 , 0];\r
45 \r
46 assert_checkequal(contr(a, b), 4);\r
47 \r
48 [n,U]=contr(a,b);a1=U'*a*U;\r
49 assert_checkalmostequal(abs(spec(a1(n+1:$,n+1:$))), 0, [], 1e-7);\r
50 \r
51 [n,U,ind,V,Ac,Bc]=contr(a,b);\r
52 assert_checkequal(n, 4);\r
53 assert_checkalmostequal(norm(Ac(n+1:$,:),1), 0, [], 1e-7);\r
54 assert_checkalmostequal(norm(U'*a*U-Ac,1), 0, [], 1e-6);\r
55 assert_checkalmostequal(norm(U'*b*V-Bc), 0, [], 1e-10);\r
56 \r
57 assert_checkfalse(execstr("contr(a,1)", "errcatch") == 0);\r
58 refMsg = msprintf(_("%s: Wrong values for input arguments #%d and #%d.\n"), "contr", 1, 2); \r
59 assert_checkerror("contr(a,1)", refMsg);\r
60 \r
61 assert_checkfalse(execstr("contr(a+%s,b)", "errcatch") == 0);\r
62 refMsg = msprintf(_("%s: Wrong type for input argument #%d: A real matrix expected."), "contr", 1); \r
63 assert_checkerror("contr(a+%s,b)", refMsg);\r
64 \r
65 assert_checkfalse(execstr("contr(a,b,''ee'')", "errcatch") == 0);\r
66 refMsg = msprintf(_("%s: Wrong type for input argument #%d: A real scalar expected.\n"), "contr", 3); \r
67 assert_checkerror("contr(a,b,''ee'')", refMsg);\r
68 \r
69 assert_checkequal(contr(a',c',0.0001), 3);\r\r