Mercurial > hg > camir-aes2014
diff 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 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/toolboxes/xml_toolbox/tests/xml_tests.m Tue Feb 10 15:05:51 2015 +0000 @@ -0,0 +1,322 @@ +function toolbox_test +% function toolbox_test +% +% This function is used to test the XML Toolbox for Matlab. +% + +% Copyright (C) 2002-2005, University of Southampton +% Author: Dr Marc Molinari <m.molinari@soton.ac.uk> +% $Revision: 1.1 $ $Date: 2005/04/15 17:12:14 $ $Tag$ + +INFO = ver('Matlab'); +VER = str2num(INFO.Version); + +N=1; % test index (gets increased with every run) + +% ========================================= +comm = 'double'; +c = -5.789; +dotest(c, N, comm); N=N+1; clear c; + +comm='empty double'; +c = []; +dotest(c, N, comm); N=N+1; clear c; + +comm='double array'; +c = [-10:0.75:10]; +dotest(c, N, comm); N=N+1; clear c; + +comm='double array 2 dim'; +c = [-5:5; 10:20]; +dotest(c, N, comm); N=N+1; clear c; + +comm='double array 3 dim'; +c(1,1,:) = [-10:10]; +c(2,2,:) = [100:120]; +c(3,3,:) = [-1.0:0.1:1]; +dotest(c, N, comm); N=N+1; clear c; + +comm='large double'; +c = 999999999999999; +dotest(c, N, comm); N=N+1; clear c; + +comm='small negative double'; +c = -0.0000000000001; +dotest(c, N, comm); N=N+1; clear c; + +% ========================================= +comm='char'; +c = 'z'; +dotest(c, N, comm); N=N+1; clear c; + +comm='empty char'; +c = ['']; +dotest(c, N, comm); N=N+1; clear c; + +comm='single space'; +c = [' ']; +dotest(c, N, comm); N=N+1; clear c; + +comm='several spaces'; +c = [' ']; +dotest(c, N, comm); N=N+1; clear c; + +comm='non-xml characters, <&''"> with leading and trailing spaces'; +c = [' <&''"> ']; +dotest(c, N, comm); N=N+1; clear c; + +comm='char array / string'; +c = 'Hello World! Look out of the window'; +dotest(c, N, comm); N=N+1; clear c; + +comm='char array / string with leading+trailing space'; +c = ' This has a leading and trailing space. '; +dotest(c, N, comm); N=N+1; clear c; + +comm='funny ascii characters'; +c = 'Funny chars: !$^&*()_+=-@#{}[];:,./\?'; +dotest(c, N, comm); N=N+1; clear c; + +comm='char array'; +c = ['abcdefg'; ... + 'hijklmn']; +dotest(c, N, comm); N=N+1; clear c; + +% ========================================= +comm='complex'; +c = -7.14 + 2.03i; +dotest(c, N, comm); N=N+1; clear c; + +comm='pure imaginary'; +c = 8i; +dotest(c, N, comm); N=N+1; clear c; + +comm='complex array'; +a = [-10:0.75:10]; +b = [10:-0.75:-10]; +c = a+b*i; +dotest(c, N, comm); N=N+1; clear a b c; + +comm='complex array 2 dim'; +a = [-5:5; 10:20]; +b = [-5:5; 10:20]; +c = a+b*i; +dotest(c, N, comm); N=N+1; clear a b c; + +% ========================================= +comm='sparse'; +c = sparse(4,5,1); +dotest(c, N, comm); N=N+1; clear c; + +comm='empty sparse'; +c = sparse(10,7,0); +dotest(c, N, comm); N=N+1; clear c; + +comm='complex sparse'; +c = sparse(20,40,4+2i); +dotest(c, N, comm); N=N+1; clear c; + +% ========================================= +comm='empty struct'; +if (VER <= 5.3) + % Matlab up to V. 5.3 does not like empty structs + c = []; +else + c = struct([]); +end +dotest(c, N, comm); N=N+1; clear c; + +comm='struct'; +c.A = 1; +c.B = 2; +dotest(c, N, comm); N=N+1; clear c; + +comm='struct with arrays'; +c.A = [1 2 3 4 5 6]; +c.B = [10 20; 30 40; 50 60; 70 80; 90 100]; +c.C = [9 8 7 6 5 4 3 2 1]'; % transposed +dotest(c, N, comm); N=N+1; clear c; + +comm='struct with chars'; +c.A = 'a b c d e f g'; +c.B = 'zz yy xx ww vv uu'; +c.C = ['hippopotamus']'; % transposed +dotest(c, N, comm); N=N+1; clear c; + +comm='struct with sparse'; +c.A = sparse(100,100,42); +c.B = sparse(1,1,0); +c.C.s = sparse(eye(4)); +dotest(c, N, comm); N=N+1; clear c; + +comm='substructures'; +c.A.a.b = 1; +c.A.b.c = 'cAbc'; +c.B = [5 5 5 5]; +if (VER <= 5.3) + % Matlab up to V. 5.3 does not like empty structs + c.C.elongated_name = []; +else + c.C.elongated_name = struct([]); +end +c.D.complex = [1+i 2+2i 3+3i]; +dotest(c, N, comm); N=N+1; clear c; + + +% ========================================= +comm='cell - empty double'; +c = {[]}; +dotest(c, N, comm); N=N+1; clear c; + +comm='cell - empty char'; +c = {''}; +dotest(c, N, comm); N=N+1; clear c; + +comm='cell - char with spaces only'; +c = {' '}; +dotest(c, N, comm); N=N+1; clear c; + +comm='cell - empty double, char, double'; +c = {[], '', []}; +dotest(c, N, comm); N=N+1; clear c; + +if (VER>5.3) + comm='cell - empty struct, double'; + c = {struct([]), []}; + dotest(c, N, comm); N=N+1; clear c; +end + +comm='cell with 3 empty cells'; +c = { {} {} {} }; +dotest(c, N, comm); N=N+1; clear c; + +comm='cell numeric'; +c = {177}; +dotest(c, N, comm); N=N+1; clear c; + +comm='cell complex'; +c = {101-99i}; +dotest(c, N, comm); N=N+1; clear c; + +comm='cell alphanumeric'; +c = {'aabbccdd'}; +dotest(c, N, comm); N=N+1; clear c; + +comm='cell structure'; +a.b.c = [1 2 3]; +a.b.d = 'Hello World!'; +c = {a}; +dotest(c, N, comm); N=N+1; clear c a; + +comm='cell containing empty char field'; +c = {'the next one is empty', '', 'the previous one is empty'}; +dotest(c, N, comm); N=N+1; clear c; + +comm='cell containing empty double field'; +c = {'the next one is empty', [], 'the previous one is empty'}; +dotest(c, N, comm); N=N+1; clear c; + +comm='cell mixed'; +c = { 'abc', 987, 'def', 654, 'ghijklmno', 10000, 9999-i }; +dotest(c, N, comm); N=N+1; clear c; + +comm='cell of cells'; +c = { {'abc', 987}, {'def', 654}, {'ghijklmno', 10000}, {-1-i} }; +dotest(c, N, comm); N=N+1; clear c; + +comm='array of cells'; +c{1,1} = { {'abc', 987}, {'def', 654}, {'ghijklmno', 10000} }; +c{2,1} = { 'second row', 22222222222, 0.9222i }; +dotest(c, N, comm); N=N+1; clear c; + +% ========================================= +comm='combination of all types'; +c(1,1).a = 9e-9; +c(1,1).b = 'aaa'; +c(1,1).c = {'bbb', [10 20 30], 'ccccccccccc'}; +c(1,1).d.e.f.g.h = [10 20 30; 40 50 60; 70 80 90; 100 110 120]; +c(1,1).e = sparse([1 2 4 5], [1 2 4 5], [1 1 1 1]); +c(1,2).c = [22+33i; 44-55i; -66+77i; -88+99i]; +c(2,2).a.x(2).y(3).z = 'this is cool'; +c(2,2).b = 7e-7; +c(2,2).d.hello.world.hitchhiker.galaxy = 42; +c(2,2).e = { sparse(4,7,1), ' check this out with spaces ', pi }; +dotest(c, N, comm); N=N+1; clear c; + +return + + + +% ======================================== +% ======================================== +function dotest(c, N, comm) +% c is variable, N is id number and comm is comment. + +if nargin<3, comm=''; end + +% name based routines: +tsave_n(N, c); +str_c = xml_format(c); +%x = tload_n(N); +% % %str_x = xml_var2xml(x); +% % str_x = xml_format(x); +% % +% % if (~strcmp( class(c), class(x)) | ... +% % ~strcmp( str_c, str_x ) ) +% % disp(['Test ', num2str(N), ' (V.1.x) ***FAILED*** ("', comm, '") <=====================']); +% % return +% % else +% % disp(['Test ', num2str(N), ' (V.1.x) passed ("', comm, '")']); +% % end + +% test format from previous versions: +% save in type-based (1.x) version +%tsave_t(N, c); +str_c = xml_format(c); +% load with name-based (2.0) version +x = tload_n(N); +str_x = xml_format(x); + +if (~strcmp( class(c), class(x)) | ... + ~strcmp( str_c, str_x ) ) + disp(['Test ', num2str(N), ' (V.2.x,3.x) ***FAILED*** ("', comm, '") <=====================']); + return +else + disp(['Test ', num2str(N), ' (V.2.x,3.x) passed ("', comm, '")']); +end + +return + + +% ======================================== +% ======================================== +function tsave_t(N, c) +% saves variable c in file test_t_N.xml in old format of V.1.x +%xml_oldsave( ['test_t_', num2str(N), '.xml'], c ); +str = xml_format_old(c); +fid = fopen(['test_t_', num2str(N), '.xml'], 'w'); +fprintf( fid, '%s', str); +fclose(fid); + +% ======================================== +% ======================================== +function tsave_n(N, c) +% saves variable c in file test_n_N.xml +% xml_save( ['test_n_', num2str(N), '.xml'], c ); +str = xml_format(c); +fid = fopen(['test_n_', num2str(N), '.xml'], 'w'); +fprintf( fid, '%s', str); +fclose(fid); + +% % ======================================== +% % ======================================== +% function c = tload_t(N) +% % loads variable c in file test_t_N.xml +% c = xml_load( ['test_t_', num2str(N), '.xml'] ); + +% ======================================== +% ======================================== +function c = tload_n(N) +% loads variable c in file test_n_N.xml +str = fileread(['test_n_', num2str(N), '.xml']); +c = xml_parse(str);