fix assert_checkequal
[scilab.git] / scilab / modules / development_tools / tests / unit_tests / assert / checkequal.tst
1 // Copyright (C) 2008 - INRIA - Michael Baudin
2 // Copyright (C) 2010 - DIGITEO - Michael Baudin
3 //
4 // This file must be used under the terms of the CeCILL.
5 // This source file is licensed as described in the file COPYING, which
6 // you should have received as part of this distribution.  The terms
7 // are also available at
8 // http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
9
10 // <-- CLI SHELL MODE -->
11 // <-- ENGLISH IMPOSED -->
12
13 function flag = MY_assert_equal ( computed , expected )
14     if ( and ( computed==expected ) ) then
15         flag = 1;
16     else
17         flag = 0;
18     end
19     if flag <> 1 then pause,end
20 endfunction
21
22 function checkassert ( flag , errmsg , ctype )
23     if ( ctype == "success" ) then
24         MY_assert_equal ( (flag==%t) & (errmsg==""), %t )
25     else
26         MY_assert_equal ( (flag==%f) & (errmsg<>""), %t )
27     end
28 endfunction
29
30 format("v",10);
31
32 // Check error message when number of arguments is false
33 instr = "assert_checkequal ( )";
34 ierr=execstr(instr,"errcatch");
35 MY_assert_equal ( ierr , 10000 );
36 //
37 instr = "assert_checkequal ( 1 )";
38 ierr=execstr(instr,"errcatch");
39 MY_assert_equal ( ierr , 10000 );
40 //
41 instr = "[o1,o2,o3]=assert_checkequal ( 1 , 1 )";
42 ierr=execstr(instr,"errcatch");
43 MY_assert_equal ( ierr , 59 );
44
45 //////////////////////////////////////////
46 // Check error message when type of arguments is false
47 instr = "assert_checkequal ( ""a"" , 2 )";
48 ierr=execstr(instr,"errcatch");
49 MY_assert_equal ( ierr , 10000 );
50 //
51 instr = "assert_checkequal ( 1 , ""b"" )";
52 ierr=execstr(instr,"errcatch");
53 MY_assert_equal ( ierr , 10000 );
54 //////////////////////////////////////////
55 // Check error message when size of arguments are not equal
56 instr = "assert_checkequal ( 1 , [2 3] )";
57 ierr=execstr(instr,"errcatch");
58 MY_assert_equal ( ierr , 10000 );
59 //
60 // Check that the error message is correctly handled.
61 instr = "assert_checkequal ( [1 2], [3 4] )";
62 ierr=execstr(instr,"errcatch");
63 MY_assert_equal ( ierr , 10000 );
64 errmsg = lasterror();
65 refmsg = msprintf( gettext( "%s: Assertion failed: expected = %s while computed = %s (mean diff = %s)" ) , "assert_checkequal" , "[3 ...]" , "[1 ...]", "-2");
66 MY_assert_equal ( errmsg , refmsg );
67 //
68 [flag , errmsg] = assert_checkequal ( %T , %T );
69 checkassert ( flag , errmsg , "success" );
70 //
71 [flag , errmsg] = assert_checkequal ( %F , %T );
72 checkassert ( flag , errmsg , "failure" );
73 //
74 [flag , errmsg] = assert_checkequal ( %nan , %nan );
75 checkassert ( flag , errmsg , "success" );
76 //
77 [flag , errmsg] = assert_checkequal ( list() , list() );
78 checkassert ( flag , errmsg , "success" );
79 //
80 [flag , errmsg] = assert_checkequal ( [%T %F], [%T %F] );
81 checkassert ( flag , errmsg , "success" );
82 //
83 // Test all IEEE values
84 [flag , errmsg] = assert_checkequal ( [1 %inf -%inf %nan] , [1 %inf -%inf %nan] );
85 checkassert ( flag , errmsg , "success" );
86 //
87 [flag , errmsg] = assert_checkequal ( [] , [] );
88 checkassert ( flag , errmsg , "success" );
89 ////////////////////////////////////////////////////////
90 // Check complex entries.
91 [flag , errmsg] = assert_checkequal(complex(%nan,%nan),complex(%nan,0));
92 checkassert ( flag , errmsg , "failure" );
93 //
94 [flag , errmsg] = assert_checkequal(complex(%nan,%inf),complex(%nan,0));
95 checkassert ( flag , errmsg , "failure" );
96 //
97 [flag , errmsg] = assert_checkequal(complex(%nan,%nan),complex(0,%nan));
98 checkassert ( flag , errmsg , "failure" );
99 //
100 [flag , errmsg] = assert_checkequal(complex(%nan,%inf),complex(0,%inf));
101 checkassert ( flag , errmsg , "failure" );
102 //
103 [flag , errmsg] = assert_checkequal(complex(0,%inf),complex(0,%inf));
104 checkassert ( flag , errmsg , "success" );
105 //
106 [flag , errmsg] = assert_checkequal(complex(%nan,%nan),complex(%nan,%nan));
107 checkassert ( flag , errmsg , "success" );
108 //
109 [flag , errmsg] = assert_checkequal(complex(%inf,%nan),complex(%inf,%nan));
110 checkassert ( flag , errmsg , "success" );
111 //
112 ////////////////////////////////////////////////////////
113 // Check various types
114 //
115 //  Mlist
116 s=mlist(["V","name","value"],["a","b";"c" "d"],[1 2; 3 4]);
117 t=s;
118 assert_checkequal(s, t);
119 //
120 //  Tlist
121 s=tlist(["V","name","value"],["a","b";"c" "d"],[1 2; 3 4]);
122 t=s;
123 assert_checkequal(s, t);
124 //
125 // Polynomial
126 s=poly(0,"s");
127 t=s;
128 assert_checkequal(s, t);
129 //
130 // Sparse
131 s=spzeros(3,5);
132 t=s;
133 assert_checkequal(s, t);
134 s(1)=12;
135 instr="assert_checkequal(s, t)";
136 ierr=execstr(instr,"errcatch");
137 MY_assert_equal(ierr, 10000);
138
139 //
140 // Boolean
141 s=(ones(3,5)==ones(3,5));
142 t=s;
143 assert_checkequal(s, t);
144 //
145 // Sparse Boolean
146 s=(spzeros(3,5)==spzeros(3,5));
147 t=s;
148 assert_checkequal(s, t);
149 s(1)=%f;
150 instr="assert_checkequal(s, t)";
151 ierr=execstr(instr,"errcatch");
152 MY_assert_equal(ierr, 10000);
153
154 //
155 // Integer  8
156 s=int8(3);
157 t=s;
158 assert_checkequal(s, t);
159 //
160 // String
161 s="foo";
162 t=s;
163 assert_checkequal(s, t);
164 //
165 // List
166 s=list("foo",2);
167 t=s;
168 assert_checkequal(s, t);
169 //
170 // Hypermatrix
171 // - Double
172 s = rand(2,2,2);
173 t = s;
174 assert_checkequal(s,t);
175 // - int8
176 s = int8(rand(2,2,2));
177 t = s;
178 assert_checkequal(s,t);
179 // - wrong type
180 s = rand(2,2,2);
181 t = int8(s);
182 instr="assert_checkequal(s, t)";
183 ierr=execstr(instr,"errcatch");
184 MY_assert_equal(ierr, 10000);
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202