diff testing/utp_1.1/utp_test_files/makeTestFiles.m @ 44:409a22968d5e default

Add unit tests
author Daniele Nicolodi <nicolodi@science.unitn.it>
date Tue, 06 Dec 2011 18:42:11 +0100
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/testing/utp_1.1/utp_test_files/makeTestFiles.m	Tue Dec 06 18:42:11 2011 +0100
@@ -0,0 +1,451 @@
+% MAKETESTFILES builds a set of test files for the current LTPDA version.
+%
+% M Hewitson 09-09-08
+%
+% $Id: makeTestFiles.m,v 1.8 2010/05/12 15:55:19 ingo Exp $
+%
+function makeTestFiles()
+  
+  mkPlist();
+  
+  mkAO();
+  mkRational();
+  mkParfrac();
+  mkPzmodel();
+  mkMiir();
+  mkMfir();
+  mkTimespan();
+  mkSSM();
+  
+  mkCollection();
+  mkMatrix;
+  mkSmodel;
+  mkPest;
+  mkFilterbank;
+  
+end
+
+%% PLIST
+function mkPlist()
+  
+  
+  pl1 = plist();
+  pl2 = plist('a', 1, 'b', 2, 'c', 3);
+  pl3 = plist('char', 'string', ...
+    'number', 123, ...
+    'logical', true, ...
+    'cell', {'asd', [1 2 3; 4 5 6], [true false], 'asd'});
+  
+  pl4 = plist('spec', specwin('kaiser', 5, 20), ...
+    'time', time(123456), ...
+    'ao', ao(1:10, randn(10,1)), ...
+    'miir', miir(plist('type', 'lowpass')));
+  
+  plvec = [pl1, pl2, pl3];
+  plmat = [pl1, pl2, pl3; pl4, pl1, pl2];
+  
+  writeFiles([pl1, pl2, pl3, pl4], plvec, plmat);
+  
+end
+
+%% AO
+function mkAO()
+  
+  % tsdata ao
+  aots = ao(plist('fs', 10, 'nsecs', 10, ...
+    'tsfcn', 'sin(2*pi*1.4*t) + 0.1*randn(size(t))', ...
+    't0', time('1980-12-01 12:43:12')));
+  
+  aots.setName();
+  
+  % fsdata ao
+  aofs = aots.psd;
+  aofs.setName();
+  
+  % xydata ao
+  aoxy = ao(xydata(1:10,1:10));
+  aoxy.setName();
+  
+  % cdata ao
+  aoc = ao(magic(3));
+  aoc.setName();
+  
+  plvec = [aots, aofs, aoxy];
+  plmat = [aots, aofs, aoxy; aots, aoc, ao()];
+  
+  writeFiles([aots, aofs, aoxy, aoc], plvec, plmat);
+  
+end
+
+%% Pzmodel
+function mkPzmodel()
+  
+  pzm1 = pzmodel(1, pz(1), []);
+  pzm1.setName();
+  
+  pzm2 = pzmodel(1, [], pz(1));
+  pzm2.setName();
+  
+  pzm3 = pzmodel(1, 1, 10);
+  pzm3.setName();
+  
+  pzm4 = pzmodel();
+  pzm4.setName();
+  
+  pzm5 = pzmodel(2, 10, {1, [1 1]});
+  pzm5.setName();
+  
+  pzmvec = [pzm1, pzm2, pzm3];
+  pzmmat = [pzm1, pzm2, pzm3; pzm4, pzm5, pzm5];
+  
+  writeFiles([pzm1, pzm2, pzm3, pzm4, pzm5], pzmvec, pzmmat);
+  
+end
+
+%% MFIR
+function mkMfir()
+  
+  fir1 = mfir(plist('type', 'highpass'));
+  fir1.setName();
+  
+  fir2 = mfir(plist('type', 'lowpass'));
+  fir2.setName();
+  
+  fir3 = mfir(plist('type', 'lowpass', 'fc', .1, 'gain', 1, 'fs', 1, 'order', 64, 'WIN', specwin('Hanning', 65)));
+  fir3.setName();
+  
+  pzm = pzmodel(1, [pz(1) pz(200)], pz(50));
+  pl = plist('pzmodel', pzm, 'fs', 1000);
+  fir4 = mfir(pl);
+  fir4.setName();
+  
+  a1 = ao(plist('fsfcn', '1./(50+f)', 'f', linspace(0, 500, 1000)));
+  a1.setFs(1000);
+  pl = plist('ao', a1);
+  fir5 = mfir(pl);
+  fir5.setName();
+  
+  firvec = [fir1, fir2, fir3];
+  firmat = [fir1, fir2, fir3; fir4, fir5, fir5];
+  
+  writeFiles([fir1, fir2, fir3, fir4, fir5], firvec, firmat);
+  
+end
+%% MIIR
+function mkMiir()
+  
+  iir1 = miir(plist('type', 'lowpass'));
+  iir1.setName();
+  
+  iir2 = miir(plist('type', 'bandpass', 'fc', [0.01 0.1]));
+  iir2.setName();
+  
+  iir3 = miir(plist('type', 'bandreject', 'fc', [0.01 0.1]));
+  iir3.setName();
+  
+  pzm = pzmodel(1, [pz(1) pz(200)], pz(50));
+  pzm.setName();
+  pl = plist('pzmodel', pzm, 'fs', 1000);
+  iir4 = miir(pl);
+  iir4.setName();
+  
+  a  = [0.5 -0.01];
+  b  = [1 0.1];
+  fs = 1;
+  iir5 = miir(a,b,fs);
+  iir5.setName();
+  
+  iirvec = [iir1, iir2, iir3];
+  iirmat = [iir1, iir2, iir3; iir4, iir5, iir5];
+  
+  writeFiles([iir1, iir2, iir3, iir4, iir5], iirvec, iirmat);
+  
+end
+
+%% SSM
+function mkSSM
+  
+  try
+    s1 = ssm();
+    s2 = ssm(plist('built-in', 'SMD'));
+    s3 = ssm(plist('built-in', 'HARMONIC_OSC_1D'));
+    
+    sVec = [s1, s2, s3];
+    sMat = [s1, s2, s3; s2, s1, s2];
+    
+    writeFiles([s1 s2 s3], sVec, sMat);
+  catch
+    warning('!!! Don''t know how to build this SSM object.');
+  end
+  
+end
+
+%% TIMESPAN
+function mkTimespan()
+  
+  ts1 = timespan();
+  ts1.setName();
+  
+  ts2 = timespan('2008-08-08 12:00:00', '2008-08-08 13:00:00');
+  ts2.setName();
+  
+  ts3 = timespan(time(10), time(100));
+  ts3.setName();
+  
+  ts4 = timespan(time(0) ,'14:00:00'); % timespan
+  ts4.setName();
+  
+  pl = plist('timezone', 'GMT+06','start', time(1234),'end', time(12345));
+  ts5 = timespan(pl);
+  ts5.setName();
+  
+  tsvec = [ts4, ts2, ts5];
+  
+  tsmat = [ts1, ts2, ts5; ts4, ts3, ts2];
+  
+  writeFiles([ts1, ts2, ts3, ts4, ts5], tsvec, tsmat)
+  
+end
+
+%% PARFRAC
+function mkParfrac()
+  
+  pf1 = parfrac();
+  pf1.setName();
+  
+  pf2 = parfrac([1 2], {4, 6+2i}, []);
+  pf2.setName();
+  
+  pf3 = parfrac([1 2+1i 2-1i], [6 1+3i 1-3i], [1 2]);
+  pf3.setName();
+  
+  pf4 = parfrac([1 2+1i 2-1i], [6 1+3i 1-3i], [1 2 3 4], 'my par frac', unit('V'), unit('Hz'));
+  pf4.setName();
+  
+  pzm = pzmodel(1, pz(1), [pz(1,2), pz(1+2i)]);
+  pl  = plist('pzmodel', pzm, 'name', 'new name', 'iunits', 'm^3', 'ounits', 'Hz');
+  pf5 = parfrac(pl);
+  pf5.setName();
+  
+  pfvec = [pf4, pf2, pf5];
+  
+  pfmat = [pf1, pf2, pf5; pf4, pf3, pf2];
+  
+  writeFiles([pf1, pf2, pf3, pf4, pf5], pfvec, pfmat)
+  
+end
+
+%% RATIONAL
+function mkRational()
+  
+  ra1 = rational();
+  ra1.setName();
+  
+  ra2 = rational([1 2], [4, 6], 'my rational');
+  ra2.setName();
+  
+  ra3 = rational([1 2 -3], [6 -7 1 -5], 'my par rat', unit('V'), unit('Hz'));
+  ra3.setName();
+  
+  pzm = pzmodel(1, pz(1), [pz(1,2), pz(1+2i)]);
+  pl  = plist('pzmodel', pzm, 'name', 'new name', 'iunits', 'm^3', 'ounits', 'Hz');
+  ra4 = rational(pl);
+  ra4.setName();
+  
+  ravec = [ra4, ra3, ra2];
+  
+  ramat = [ra1, ra2, ra3; ra4, ra3, ra2];
+  
+  writeFiles([ra1, ra2, ra3, ra4], ravec, ramat)
+  
+end
+
+%% COLLECTION
+function mkCollection()
+  
+  coll1 = collection();
+  coll1.setName();
+  
+  coll2 = collection(rational([1 2], [4, 6], 'my rational'), ao(magic(8)), mfir(plist('type', 'lowpass')));
+  coll2.setName();
+  
+  coll3 = collection(ao(1:51, randn(1,51) + 1.1i, 12.3), pzmodel(1, pz(1), [pz(1,2), pz(1+2i)]));
+  coll3.setName();
+  coll3.setPlotinfo(plist('color', 'black'));
+  
+  
+  collVec = [coll1, coll2, coll3];
+  
+  collMat = [coll3, coll1, coll2; coll2 coll3, coll1];
+  
+  writeFiles([coll1, coll2, coll3], collVec, collMat)
+  
+end
+
+%% MATRIX
+function mkMatrix()
+  
+  m1 = matrix();
+  m1.setName();
+  
+  m2 = matrix([ao(1), ao(2) ao(3); ao(4), ao(5), ao(6)]);
+  m2.setName();
+  
+  m3 = matrix(ao(1), ao(2), ao(3));
+  m3.setName();
+  m3.setPlotinfo(plist('color', 'black'));
+  
+  
+  mVec = [m1, m2, m3];
+  
+  mMat = [m3, m1, m2; m2 m3, m1];
+  
+  writeFiles([m1, m2, m3], mVec, mMat)
+  
+end
+
+%% SMODEL
+function mkSmodel()
+  
+  model1 = smodel();
+  model1.setName();
+  
+  model2 = smodel('C1*X1  + C2*X2 + C3*X3');
+  model2.setParams('C1', 1.00447715161685);
+  model2.setParams('C2', 2.06131342419899);
+  model2.setParams('C3', 3.03410245878967);
+  model2.setXvals(randn(1,100));
+  %   model2.setXvar({'X1', 'X2', 'X3'});
+  model2.setXvar('X1');
+  model2.setXunits(unit('T', 'm', 'C'));
+  model2.setYunits('m');
+  model2.setPlotinfo(plist('color', 'black'));
+  model2.setName();
+  
+  modelVec = [model1, model2];
+  
+  modelMat = [model1, model1 model2; model1 model2, model1];
+  
+  writeFiles([model1, model2], modelVec, modelMat)
+  
+end
+
+%% PEST
+function mkPest()
+  
+  model = smodel('C1*X1  + C2*X2 + C3*X3');
+  model.setParams('C1', 1.00447715161685);
+  model.setParams('C2', 2.06131342419899);
+  model.setParams('C3', 3.03410245878967);
+  %   model.setXvar({'X1', 'X2', 'X3'});
+  model.setXvar('X1');
+  model.setXunits(unit('T', 'm', 'C'));
+  model.setYunits('m');
+  model.setName();
+  
+  pest1 = pest([1;2.06;3.03], {'C1', 'C2', 'C3'}, [0.0917;0.089;0.0957], [0.00841 -0.000604 0.000455;-0.000604 0.00791 -0.000246;0.000455 -0.000246 0.00916]);
+  pest1.setYunits(unit('[m T^(-1)]','[m m^(-1)]','[m C^(-1)]'));
+  pest1.setModels(model);
+  pest1.setName();
+  
+  pest2 = pest();
+  pest2.setName();
+  
+  pestVec = [pest1, pest2];
+  
+  pestMat = [pest1, pest1 pest2; pest1 pest2, pest1];
+  
+  writeFiles([pest1, pest2], pestVec, pestMat)
+  
+end
+
+%% FILTERBANK
+function mkFilterbank()
+
+  a1 = ao(plist('fsfcn', '1./(50+f)', 'f', linspace(0, 500, 1000)));
+  a1.setFs(1000);
+  pl = plist('ao', a1);
+  
+  f1 = mfir(pl);
+  f2 = mfir(plist('Type', 'lowpass'));
+  f3 = mfir(plist('type', 'lowpass', 'fc', .1, 'gain', 1, 'fs', 1, 'order', 64, 'WIN', specwin('Hanning', 65)));
+  
+  pzm = pzmodel(1, [pz(1) pz(200)], pz(50));
+  pzm.setName();
+  pl = plist('pzmodel', pzm, 'fs', 1000);
+  
+  f4 = miir(pl);
+  f5 = miir();
+  f6 = miir(plist('type', 'bandreject', 'fc', [0.01 0.1]));
+  
+  fb1 = filterbank();
+  fb1.setName();
+  
+  fb2 = filterbank([f1, f2, f3], 'serial');
+  fb2.setPlotinfo(plist('color', 'black'));
+  fb2.setName();
+  
+  fb3 = filterbank(f4, f5, f6);
+  
+  fbVec = [fb1, fb2, fb3];
+  
+  fbMat = [fb1, fb3 fb2; fb1 fb2, fb3];
+  
+  writeFiles([fb1, fb2, fb3], fbVec, fbMat)
+  
+end
+
+%% Write Function
+function writeFiles(objs, obj_vec, obj_mat)
+  
+  % class
+  cln = class(objs);
+  
+  % Get the toolbox version
+  tbxver = getappdata(0, 'ltpda_version');
+  
+  % get only the version string without the MATLAB version
+  tbxver = strtok(tbxver);
+  
+  % remove the points between the subversions
+  tbxver = strrep(tbxver, '.', '');
+  
+  %%%%%%%%%%   Save single objects   %%%%%%%%%%
+  for ii = 1:numel(objs)
+    
+    % Create filename
+    filename = sprintf('%s_%s_%d', cln, tbxver, ii);
+    
+    % Save XML
+    save(objs(ii), [filename '.xml']);
+    if ~strcmp(tbxver, '191')
+      % Save MAT
+      save(objs(ii), [filename '.mat']);
+    end
+  end
+  
+  %%%%%%%%%%   Save vector of object   %%%%%%%%%%
+  
+  % Create filename
+  filename = sprintf('%s_%s_vec', cln, tbxver);
+  
+  % Save XML
+  save(obj_vec, [filename '.xml']);
+  if ~strcmp(tbxver, '191')
+    % Save MAT
+    save(obj_vec, [filename '.mat']);
+  end
+  
+  %%%%%%%%%%   Save matrix of object   %%%%%%%%%%
+  
+  % Create filename
+  filename = sprintf('%s_%s_mat', cln, tbxver);
+  
+  % Save XML
+  save(obj_mat, [filename '.xml']);
+  if ~strcmp(tbxver, '191')
+    % Save MAT
+    save(obj_mat, [filename '.mat']);
+  end
+  
+end