* Bug 16664 fixed: diag(spzeros(2,2)) warned for Operation - []
[scilab.git] / scilab / modules / elementary_functions / tests / unit_tests / diag.tst
1 // Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
2 // Copyright (C) 2021 - ESI Group - Clement DAVID
3 //
4 // This file is hereby licensed under the terms of the GNU GPL v2.0,
5 // pursuant to article 5.3.4 of the CeCILL v.2.1.
6 // This file was originally licensed under the terms of the CeCILL v2.1,
7 // and continues to be available under such terms.
8 // For more information, see the COPYING file which you should have received
9 // along with this program.
10 // ----------------------------------------------------------------------------
11
12 // <-- CLI SHELL MODE -->
13 // <-- NO CHECK REF -->
14 // <-- IMPOSED ENGLISH -->
15 //
16 // --------------------------
17 // Unit tests for diag()
18 // --------------------------
19
20 // Double
21 assert_checkequal(diag(1), 1);
22 assert_checkequal(diag([1 ; 2]), [1 0 ; 0 2]);
23 assert_checkequal(diag([1 ; 2 ; 3]), [1 0 0 ; 0 2 0 ; 0 0 3]);
24 assert_checkequal(diag(diag([1 ; 2])), [1 ; 2]);
25 assert_checkequal(diag(diag([1 ; 2 ; 3])), [1 ; 2 ; 3]);
26
27 assert_checkequal(diag(1, 1), [0 1 ; 0 0]);
28 assert_checkequal(diag([1 ; 2], 1), [0 1 0 ; 0 0 2 ; 0 0 0]);
29 assert_checkequal(diag([1 ; 2 ; 3], 1), [0 1 0 0 ; 0 0 2 0 ; 0 0 0 3 ; 0 0 0 0]);
30
31 // Sparse
32 assert_checkequal(diag(sparse(1)), sparse(1));
33 assert_checkequal(diag(sparse([1 ; 2])), sparse([1 0 ; 0 2]));
34 assert_checkequal(diag(sparse([1 ; 2 ; 3])), sparse([1 0 0 ; 0 2 0 ; 0 0 3]));
35 assert_checkequal(diag(sparse(diag([1 ; 2]))), sparse([1 ; 2]));
36 assert_checkequal(diag(sparse(diag([1 ; 2 ; 3]))), sparse([1 ; 2 ; 3]));
37
38 assert_checkequal(diag(sparse(1), 1), sparse([0 1 ; 0 0]));
39 assert_checkequal(diag(sparse([1 ; 2]), 1), sparse([0 1 0 ; 0 0 2 ; 0 0 0]));
40 assert_checkequal(diag(sparse([1 ; 2 ; 3]), 1), sparse([0 1 0 0 ; 0 0 2 0 ; 0 0 0 3 ; 0 0 0 0]));
41
42 // http://bugzilla.scilab.org/16664
43 diag(spzeros(2,2))