Mercurial > hg > camir-aes2014
comparison toolboxes/xml_toolbox/tests/xml_tests.m @ 0:e9a9cd732c1e tip
first hg version after svn
| author | wolffd |
|---|---|
| date | Tue, 10 Feb 2015 15:05:51 +0000 |
| parents | |
| children |
comparison
equal
deleted
inserted
replaced
| -1:000000000000 | 0:e9a9cd732c1e |
|---|---|
| 1 function toolbox_test | |
| 2 % function toolbox_test | |
| 3 % | |
| 4 % This function is used to test the XML Toolbox for Matlab. | |
| 5 % | |
| 6 | |
| 7 | |
| 8 % Copyright (C) 2002-2005, University of Southampton | |
| 9 % Author: Dr Marc Molinari <m.molinari@soton.ac.uk> | |
| 10 % $Revision: 1.1 $ $Date: 2005/04/15 17:12:14 $ $Tag$ | |
| 11 | |
| 12 | |
| 13 INFO = ver('Matlab'); | |
| 14 VER = str2num(INFO.Version); | |
| 15 | |
| 16 N=1; % test index (gets increased with every run) | |
| 17 | |
| 18 % ========================================= | |
| 19 comm = 'double'; | |
| 20 c = -5.789; | |
| 21 dotest(c, N, comm); N=N+1; clear c; | |
| 22 | |
| 23 comm='empty double'; | |
| 24 c = []; | |
| 25 dotest(c, N, comm); N=N+1; clear c; | |
| 26 | |
| 27 comm='double array'; | |
| 28 c = [-10:0.75:10]; | |
| 29 dotest(c, N, comm); N=N+1; clear c; | |
| 30 | |
| 31 comm='double array 2 dim'; | |
| 32 c = [-5:5; 10:20]; | |
| 33 dotest(c, N, comm); N=N+1; clear c; | |
| 34 | |
| 35 comm='double array 3 dim'; | |
| 36 c(1,1,:) = [-10:10]; | |
| 37 c(2,2,:) = [100:120]; | |
| 38 c(3,3,:) = [-1.0:0.1:1]; | |
| 39 dotest(c, N, comm); N=N+1; clear c; | |
| 40 | |
| 41 comm='large double'; | |
| 42 c = 999999999999999; | |
| 43 dotest(c, N, comm); N=N+1; clear c; | |
| 44 | |
| 45 comm='small negative double'; | |
| 46 c = -0.0000000000001; | |
| 47 dotest(c, N, comm); N=N+1; clear c; | |
| 48 | |
| 49 % ========================================= | |
| 50 comm='char'; | |
| 51 c = 'z'; | |
| 52 dotest(c, N, comm); N=N+1; clear c; | |
| 53 | |
| 54 comm='empty char'; | |
| 55 c = ['']; | |
| 56 dotest(c, N, comm); N=N+1; clear c; | |
| 57 | |
| 58 comm='single space'; | |
| 59 c = [' ']; | |
| 60 dotest(c, N, comm); N=N+1; clear c; | |
| 61 | |
| 62 comm='several spaces'; | |
| 63 c = [' ']; | |
| 64 dotest(c, N, comm); N=N+1; clear c; | |
| 65 | |
| 66 comm='non-xml characters, <&''"> with leading and trailing spaces'; | |
| 67 c = [' <&''"> ']; | |
| 68 dotest(c, N, comm); N=N+1; clear c; | |
| 69 | |
| 70 comm='char array / string'; | |
| 71 c = 'Hello World! Look out of the window'; | |
| 72 dotest(c, N, comm); N=N+1; clear c; | |
| 73 | |
| 74 comm='char array / string with leading+trailing space'; | |
| 75 c = ' This has a leading and trailing space. '; | |
| 76 dotest(c, N, comm); N=N+1; clear c; | |
| 77 | |
| 78 comm='funny ascii characters'; | |
| 79 c = 'Funny chars: !$^&*()_+=-@#{}[];:,./\?'; | |
| 80 dotest(c, N, comm); N=N+1; clear c; | |
| 81 | |
| 82 comm='char array'; | |
| 83 c = ['abcdefg'; ... | |
| 84 'hijklmn']; | |
| 85 dotest(c, N, comm); N=N+1; clear c; | |
| 86 | |
| 87 % ========================================= | |
| 88 comm='complex'; | |
| 89 c = -7.14 + 2.03i; | |
| 90 dotest(c, N, comm); N=N+1; clear c; | |
| 91 | |
| 92 comm='pure imaginary'; | |
| 93 c = 8i; | |
| 94 dotest(c, N, comm); N=N+1; clear c; | |
| 95 | |
| 96 comm='complex array'; | |
| 97 a = [-10:0.75:10]; | |
| 98 b = [10:-0.75:-10]; | |
| 99 c = a+b*i; | |
| 100 dotest(c, N, comm); N=N+1; clear a b c; | |
| 101 | |
| 102 comm='complex array 2 dim'; | |
| 103 a = [-5:5; 10:20]; | |
| 104 b = [-5:5; 10:20]; | |
| 105 c = a+b*i; | |
| 106 dotest(c, N, comm); N=N+1; clear a b c; | |
| 107 | |
| 108 % ========================================= | |
| 109 comm='sparse'; | |
| 110 c = sparse(4,5,1); | |
| 111 dotest(c, N, comm); N=N+1; clear c; | |
| 112 | |
| 113 comm='empty sparse'; | |
| 114 c = sparse(10,7,0); | |
| 115 dotest(c, N, comm); N=N+1; clear c; | |
| 116 | |
| 117 comm='complex sparse'; | |
| 118 c = sparse(20,40,4+2i); | |
| 119 dotest(c, N, comm); N=N+1; clear c; | |
| 120 | |
| 121 % ========================================= | |
| 122 comm='empty struct'; | |
| 123 if (VER <= 5.3) | |
| 124 % Matlab up to V. 5.3 does not like empty structs | |
| 125 c = []; | |
| 126 else | |
| 127 c = struct([]); | |
| 128 end | |
| 129 dotest(c, N, comm); N=N+1; clear c; | |
| 130 | |
| 131 comm='struct'; | |
| 132 c.A = 1; | |
| 133 c.B = 2; | |
| 134 dotest(c, N, comm); N=N+1; clear c; | |
| 135 | |
| 136 comm='struct with arrays'; | |
| 137 c.A = [1 2 3 4 5 6]; | |
| 138 c.B = [10 20; 30 40; 50 60; 70 80; 90 100]; | |
| 139 c.C = [9 8 7 6 5 4 3 2 1]'; % transposed | |
| 140 dotest(c, N, comm); N=N+1; clear c; | |
| 141 | |
| 142 comm='struct with chars'; | |
| 143 c.A = 'a b c d e f g'; | |
| 144 c.B = 'zz yy xx ww vv uu'; | |
| 145 c.C = ['hippopotamus']'; % transposed | |
| 146 dotest(c, N, comm); N=N+1; clear c; | |
| 147 | |
| 148 comm='struct with sparse'; | |
| 149 c.A = sparse(100,100,42); | |
| 150 c.B = sparse(1,1,0); | |
| 151 c.C.s = sparse(eye(4)); | |
| 152 dotest(c, N, comm); N=N+1; clear c; | |
| 153 | |
| 154 comm='substructures'; | |
| 155 c.A.a.b = 1; | |
| 156 c.A.b.c = 'cAbc'; | |
| 157 c.B = [5 5 5 5]; | |
| 158 if (VER <= 5.3) | |
| 159 % Matlab up to V. 5.3 does not like empty structs | |
| 160 c.C.elongated_name = []; | |
| 161 else | |
| 162 c.C.elongated_name = struct([]); | |
| 163 end | |
| 164 c.D.complex = [1+i 2+2i 3+3i]; | |
| 165 dotest(c, N, comm); N=N+1; clear c; | |
| 166 | |
| 167 | |
| 168 % ========================================= | |
| 169 comm='cell - empty double'; | |
| 170 c = {[]}; | |
| 171 dotest(c, N, comm); N=N+1; clear c; | |
| 172 | |
| 173 comm='cell - empty char'; | |
| 174 c = {''}; | |
| 175 dotest(c, N, comm); N=N+1; clear c; | |
| 176 | |
| 177 comm='cell - char with spaces only'; | |
| 178 c = {' '}; | |
| 179 dotest(c, N, comm); N=N+1; clear c; | |
| 180 | |
| 181 comm='cell - empty double, char, double'; | |
| 182 c = {[], '', []}; | |
| 183 dotest(c, N, comm); N=N+1; clear c; | |
| 184 | |
| 185 if (VER>5.3) | |
| 186 comm='cell - empty struct, double'; | |
| 187 c = {struct([]), []}; | |
| 188 dotest(c, N, comm); N=N+1; clear c; | |
| 189 end | |
| 190 | |
| 191 comm='cell with 3 empty cells'; | |
| 192 c = { {} {} {} }; | |
| 193 dotest(c, N, comm); N=N+1; clear c; | |
| 194 | |
| 195 comm='cell numeric'; | |
| 196 c = {177}; | |
| 197 dotest(c, N, comm); N=N+1; clear c; | |
| 198 | |
| 199 comm='cell complex'; | |
| 200 c = {101-99i}; | |
| 201 dotest(c, N, comm); N=N+1; clear c; | |
| 202 | |
| 203 comm='cell alphanumeric'; | |
| 204 c = {'aabbccdd'}; | |
| 205 dotest(c, N, comm); N=N+1; clear c; | |
| 206 | |
| 207 comm='cell structure'; | |
| 208 a.b.c = [1 2 3]; | |
| 209 a.b.d = 'Hello World!'; | |
| 210 c = {a}; | |
| 211 dotest(c, N, comm); N=N+1; clear c a; | |
| 212 | |
| 213 comm='cell containing empty char field'; | |
| 214 c = {'the next one is empty', '', 'the previous one is empty'}; | |
| 215 dotest(c, N, comm); N=N+1; clear c; | |
| 216 | |
| 217 comm='cell containing empty double field'; | |
| 218 c = {'the next one is empty', [], 'the previous one is empty'}; | |
| 219 dotest(c, N, comm); N=N+1; clear c; | |
| 220 | |
| 221 comm='cell mixed'; | |
| 222 c = { 'abc', 987, 'def', 654, 'ghijklmno', 10000, 9999-i }; | |
| 223 dotest(c, N, comm); N=N+1; clear c; | |
| 224 | |
| 225 comm='cell of cells'; | |
| 226 c = { {'abc', 987}, {'def', 654}, {'ghijklmno', 10000}, {-1-i} }; | |
| 227 dotest(c, N, comm); N=N+1; clear c; | |
| 228 | |
| 229 comm='array of cells'; | |
| 230 c{1,1} = { {'abc', 987}, {'def', 654}, {'ghijklmno', 10000} }; | |
| 231 c{2,1} = { 'second row', 22222222222, 0.9222i }; | |
| 232 dotest(c, N, comm); N=N+1; clear c; | |
| 233 | |
| 234 % ========================================= | |
| 235 comm='combination of all types'; | |
| 236 c(1,1).a = 9e-9; | |
| 237 c(1,1).b = 'aaa'; | |
| 238 c(1,1).c = {'bbb', [10 20 30], 'ccccccccccc'}; | |
| 239 c(1,1).d.e.f.g.h = [10 20 30; 40 50 60; 70 80 90; 100 110 120]; | |
| 240 c(1,1).e = sparse([1 2 4 5], [1 2 4 5], [1 1 1 1]); | |
| 241 c(1,2).c = [22+33i; 44-55i; -66+77i; -88+99i]; | |
| 242 c(2,2).a.x(2).y(3).z = 'this is cool'; | |
| 243 c(2,2).b = 7e-7; | |
| 244 c(2,2).d.hello.world.hitchhiker.galaxy = 42; | |
| 245 c(2,2).e = { sparse(4,7,1), ' check this out with spaces ', pi }; | |
| 246 dotest(c, N, comm); N=N+1; clear c; | |
| 247 | |
| 248 return | |
| 249 | |
| 250 | |
| 251 | |
| 252 % ======================================== | |
| 253 % ======================================== | |
| 254 function dotest(c, N, comm) | |
| 255 % c is variable, N is id number and comm is comment. | |
| 256 | |
| 257 if nargin<3, comm=''; end | |
| 258 | |
| 259 % name based routines: | |
| 260 tsave_n(N, c); | |
| 261 str_c = xml_format(c); | |
| 262 %x = tload_n(N); | |
| 263 % % %str_x = xml_var2xml(x); | |
| 264 % % str_x = xml_format(x); | |
| 265 % % | |
| 266 % % if (~strcmp( class(c), class(x)) | ... | |
| 267 % % ~strcmp( str_c, str_x ) ) | |
| 268 % % disp(['Test ', num2str(N), ' (V.1.x) ***FAILED*** ("', comm, '") <=====================']); | |
| 269 % % return | |
| 270 % % else | |
| 271 % % disp(['Test ', num2str(N), ' (V.1.x) passed ("', comm, '")']); | |
| 272 % % end | |
| 273 | |
| 274 % test format from previous versions: | |
| 275 % save in type-based (1.x) version | |
| 276 %tsave_t(N, c); | |
| 277 str_c = xml_format(c); | |
| 278 % load with name-based (2.0) version | |
| 279 x = tload_n(N); | |
| 280 str_x = xml_format(x); | |
| 281 | |
| 282 if (~strcmp( class(c), class(x)) | ... | |
| 283 ~strcmp( str_c, str_x ) ) | |
| 284 disp(['Test ', num2str(N), ' (V.2.x,3.x) ***FAILED*** ("', comm, '") <=====================']); | |
| 285 return | |
| 286 else | |
| 287 disp(['Test ', num2str(N), ' (V.2.x,3.x) passed ("', comm, '")']); | |
| 288 end | |
| 289 | |
| 290 return | |
| 291 | |
| 292 | |
| 293 % ======================================== | |
| 294 % ======================================== | |
| 295 function tsave_t(N, c) | |
| 296 % saves variable c in file test_t_N.xml in old format of V.1.x | |
| 297 %xml_oldsave( ['test_t_', num2str(N), '.xml'], c ); | |
| 298 str = xml_format_old(c); | |
| 299 fid = fopen(['test_t_', num2str(N), '.xml'], 'w'); | |
| 300 fprintf( fid, '%s', str); | |
| 301 fclose(fid); | |
| 302 | |
| 303 % ======================================== | |
| 304 % ======================================== | |
| 305 function tsave_n(N, c) | |
| 306 % saves variable c in file test_n_N.xml | |
| 307 % xml_save( ['test_n_', num2str(N), '.xml'], c ); | |
| 308 str = xml_format(c); | |
| 309 fid = fopen(['test_n_', num2str(N), '.xml'], 'w'); | |
| 310 fprintf( fid, '%s', str); | |
| 311 fclose(fid); | |
| 312 | |
| 313 % % ======================================== | |
| 314 % % ======================================== | |
| 315 % function c = tload_t(N) | |
| 316 % % loads variable c in file test_t_N.xml | |
| 317 % c = xml_load( ['test_t_', num2str(N), '.xml'] ); | |
| 318 | |
| 319 % ======================================== | |
| 320 % ======================================== | |
| 321 function c = tload_n(N) | |
| 322 % loads variable c in file test_n_N.xml | |
| 323 str = fileread(['test_n_', num2str(N), '.xml']); | |
| 324 c = xml_parse(str); |
