bd51b1b9845983bade43397246655ae3ab877def
[scilab.git] / scilab / modules / elementary_functions / tests / unit_tests / gsort_sparse.tst
1 // =============================================================================
2 // Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
3 // Copyright (C) ????-2008 - INRIA
4 // Copyright (C) ????-2008 - ENPC
5 // Copyright (C) 2008 - DIGITEO - Allan CORNET
6 // Copyright (C) 2012 - Scilab Enterprises - Adeline CARNIS
7 // Copyright (C) 2018 - Samuel GOUGEON
8 //
9 //  This file is distributed under the same license as the Scilab package.
10 // =============================================================================
11
12 // <-- CLI SHELL MODE -->
13 // <-- NO CHECK REF -->
14
15 //================================ sparse vectors ==============================
16
17 sp = sparse([1,2,4,5,3,10]);
18 ref = sparse([10,5,4,3,2,1]);
19 A = gsort(sp);
20 assert_checkequal(ref, A);
21
22 sp = sparse([1,2;4,5;3,10]);
23 assert_checkfalse(execstr("A = gsort(sp)", "errcatch") == 0);
24 refMsg = msprintf(_("%s: Wrong size for input argument #%d: sparse vectors expected.\n"), "gsort", 1);
25 assert_checkerror("A = gsort(sp)", refMsg);
26
27 //=============== testing gsort with Sparse (macro: %sp_gsort) =================
28
29 // with real sparses :
30 b = [5 1 3 2 4;6 1 2 4 1]; b = b(:);
31 B = sparse(b);
32 for smode = ["g" "r" "c" "lr" "lc"]
33     for sdir = ["d" "i"]
34         [s, k] = gsort(b, smode, sdir);
35         [s1, k1] = gsort(B, smode, sdir);
36         assert_checkequal(full(s1),s);
37         assert_checkequal(k1,k);
38         [s, k] = gsort(b', smode, sdir);
39         [s1, k1] = gsort(B', smode, sdir);
40         assert_checkequal(full(s1),s);
41         assert_checkequal(k1,k);
42     end
43 end
44
45 // with complex sparses :
46 A = [1 -%i; %i 0]; A = A(:);
47 A1 = sparse(A);
48 B = [1 1+%i 4; -2*%i 3 3-%i]; B = B(:);
49 B1 = sparse(B);
50 C = [-%i 3*%i; 4 9; -2*%i 7]; C = C(:);
51 C1 = sparse(C);
52 for smode = ["g" "r" "c"]
53     for sdir = ["d" "i"]
54         c = gsort(A, smode, sdir);
55         d = full(gsort(A1, smode, sdir));
56         assert_checkequal(c,d);
57         c = gsort(B, smode, sdir);
58         d = full(gsort(B1, smode, sdir));
59         assert_checkequal(c,d);
60         [s, k] = gsort(C, smode, sdir);
61         [s1, k1] = gsort(C1, smode, sdir);
62         assert_checkequal(full(s1),s);
63         assert_checkequal(k1,k);
64     end
65 end