4c358cddf06534f54e6c3f09879d8f4390f86b52
[scilab.git] / scilab / modules / elementary_functions / tests / unit_tests / isscalar.tst
1 // =============================================================================
2 // Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
3 // Copyright (C) 2013 - Scilab Enterprises - Charlotte HECQUET
4 //
5 //  This file is distributed under the same license as the Scilab package.
6 // =============================================================================
7 //
8 // <-- CLI SHELL MODE -->
9 //
10 // unit tests for isscalar function
11 // =============================================================================
12
13 // Constants
14 assert_checkequal(isscalar([1 2 3]), %f);
15 assert_checkequal(isscalar([1 2 3]'), %f);
16 assert_checkequal(isscalar([1 2; 1 2]), %f);
17 assert_checkequal(isscalar(1), %t);
18 assert_checkequal(isscalar([]), %f);
19
20 // Strings
21 assert_checkequal(isscalar(["s" "s"; "s" "s"]), %f);
22 assert_checkequal(isscalar("s"), %t);
23
24 // Polynomials
25 s=poly(0,"s");
26 assert_checkequal(isscalar([s s; s s]), %f);
27 assert_checkequal(isscalar(1+s), %t);
28
29 // Booleans
30 assert_checkequal(isscalar([%t %t; %t %t]), %f);
31 assert_checkequal(isscalar(%t), %t);
32
33 // Sparses
34 assert_checkequal(isscalar(sparse([1 2; 1 2])), %f);
35 assert_checkequal(isscalar(sparse(0)), %t);
36
37 // Structures
38 clear s;
39 assert_checkequal(isscalar(struct()), %f); // Empty structure
40 s(1,1).a = "test";
41 assert_checkequal(isscalar(s), %t); // Scalar structure
42 clear s;
43 s(3,1).a = %pi;
44 assert_checkequal(isscalar(s), %f); // Column structure
45 clear s;
46 s(1,3).a = %e;
47 assert_checkequal(isscalar(s), %f); // Row structure
48 clear s;
49 s(3,2).a = %z;
50 assert_checkequal(isscalar(s), %f); // 2D structure array (not square)
51 clear s;
52 s(2,2,2).a = %s;
53 assert_checkequal(isscalar(s), %f); // 3D structure array (cube)
54 clear s;
55 s(2,1,2).a = %s;
56 assert_checkequal(isscalar(s), %f); // 3D structure array with singleton (square)
57
58 // Cells
59 assert_checkequal(isscalar(cell()), %f); // Empty cell
60 a = cell(1);
61 a(1).entries = 1;
62 assert_checkequal(isscalar(a), %t); // Scalar case
63 clear a;
64 a = cell(1,3);
65 a(1).entries = 1:3;
66 a(2).entries = 1:3;
67 a(3).entries = 1:3;
68 assert_checkequal(isscalar(a), %f); // Row case
69 clear a;
70 a = cell(3,1);
71 a(1).entries = 1:3;
72 a(2).entries = 1:3;
73 a(3).entries = 1:3;
74 assert_checkequal(isscalar(a), %f); // Column case
75 clear a;
76 a = cell(3,2);
77 a(1,1).entries = 1:3;
78 a(1,2).entries = 1:3;
79 a(2,1).entries = 1:3;
80 a(2,2).entries = 1:3;
81 a(3,2).entries = 1:3;
82 a(3,1).entries = 1:3;
83 assert_checkequal(isscalar(a), %f); // Matrix case
84 clear a;
85 a = cell(2,2,2);
86 a(1,1,1).entries =1:3;
87 a(1,2,1).entries =1:3;
88 a(2,1,1).entries =1:3;
89 a(2,2,1).entries =1:3;
90 a(1,1,2).entries =1:3;
91 a(1,2,2).entries =1:3;
92 a(2,1,2).entries =1:3;
93 a(2,2,2).entries =1:3;
94 assert_checkequal(isscalar(a), %f); // Cubic case
95 a = cell(2,1,2);
96 a(1,1,1).entries=1:3;
97 a(2,1,1).entries=1:3;
98 a(1,1,2).entries=1:3;
99 a(2,1,2).entries=1:3;
100 assert_checkequal(isscalar(a), %f); // Hypermatrix with singleton (square)
101
102 // Lists
103 assert_checkequal(isscalar(list()), %f); // Empty list
104 l=list(1);
105 assert_checkequal(isscalar(l), %t); // Scalar case
106 clear l;
107 l=list(1,"test");
108 assert_checkequal(isscalar(l), %f); // Column case
109
110 // Error messages
111 errmsg1 = msprintf(_("%s: Wrong number of input argument(s): %d expected.\n"),"isscalar", 1);
112 assert_checkerror("isscalar()", errmsg1);
113 errmsg2 = msprintf(_("Wrong number of input arguments."));
114 assert_checkerror("isscalar(1,2)", errmsg2);
115 errmsg3 = msprintf(_("Wrong number of output arguments.\n"));
116 assert_checkerror("[r,b]=isscalar([1 2 3]);", errmsg3);