Mercurial > hg > ltpda
diff testing/utp_1.1/generic_utps/utp_generic_aop_rule11.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/generic_utps/utp_generic_aop_rule11.m Tue Dec 06 18:42:11 2011 +0100 @@ -0,0 +1,170 @@ + +% <TestDescription> +% +% Tests the arithmetic operators rule 11. +% +% </TestDescription> +function result = utp_generic_aop_rule11(fcn) + + % <SyntaxDescription> + % + % Tests the arithmetic operators rule 11 for each data type: xydata, + % fsdata, tsdata, cdata and useful combinations. + % + % </SyntaxDescription> + + % Test AOs + % tsdata + n = 12; + fs = 12.1; + x = 0:(1/fs):(n/fs)-1/fs; + a_ts = ao(x,randn(n,1), fs); + a_ts.setDx(ones(n,1)*1.1); + a_ts.setDy((1:n)*2.2); + a_ts.setYunits('Hz^(-1/2) V^2'); + a_ts.setName(); + + b_ts = ao(x,randn(n,1), fs); + b_ts.setDx(7); + b_ts.setDy(9); + b_ts.setYunits('Hz^(-1/2) V^2'); + b_ts.setName(); + + c_ts = ao(x,randn(n,1), fs); + c_ts.setDx(7); + c_ts.setDy(9); + c_ts.setYunits('Hz^(-1/2) V^2'); + c_ts.setName(); + + V_N_ts = [copy(a_ts, 1), copy(b_ts, 1), copy(c_ts, 1)]; + + % fsdata + a_fs = ao(plist('xvals', 1:n, 'yvals', abs(randn(n,1)), 'type', 'fsdata')); + a_fs.setDx(ones(n,1)*1.1); + a_fs.setDy((1:n)*2.2); + a_fs.setName(); + + b_fs = ao(plist('xvals', 1:n, 'yvals', abs(randn(n,1)), 'type', 'fsdata')); + b_fs.setDx(7); + b_fs.setDy(9); + b_fs.setName(); + + c_fs = ao(plist('xvals', 1:n, 'yvals', abs(randn(n,1)), 'type', 'fsdata')); + c_fs.setDx(ones(n,1)*1.1); + c_fs.setDy((1:n)*2.2); + c_fs.setName(); + + V_N_fs = [copy(a_fs, 1), copy(b_fs, 1), copy(c_fs, 1)]; + + % xydata + a_xy = ao(plist('xvals', 1:n, 'yvals', abs(randn(n,1)), 'type', 'xydata')); + a_xy.setDx(ones(n,1)*1.1); + a_xy.setDy((1:n)*2.2); + a_xy.setYunits('Hz^(-1/2) V^2'); + a_xy.setName(); + + b_xy = ao(plist('xvals', 1:n, 'yvals', abs(randn(n,1)), 'type', 'xydata')); + b_xy.setDx(7); + b_xy.setDy(9); + b_xy.setName(); + + c_xy = ao(plist('xvals', 1:n, 'yvals', abs(randn(n,1)), 'type', 'xydata')); + c_xy.setDx(ones(n,1)*1.1); + c_xy.setDy((1:n)*2.2); + c_xy.setYunits('Hz^(-1/2) V^2'); + c_xy.setName(); + + V_N_xy = [copy(a_xy, 1), copy(b_xy, 1), copy(c_xy, 1)]; + + % cdata + a_c = ao(8); + a_c.setDy(2); + a_c.setName(); + + b_c = ao(111:122); + b_c.setDy((111:122)/100); + b_c.setName(); + + c_c = ao(111:122); + c_c.setDy((111:122)/100); + c_c.setName(); + + V_N_c = [copy(a_c, 1), copy(b_c, 1), copy(c_c, 1)]; + + % <SyntaxDescription> + % + % Tests that for more than two inputs the result will be as if the + % commands are nested. For example: plus(a, b, c) == plus(plus(a, b), c) + % + % </SyntaxDescription> + + try + % <SyntaxCode> + %tsdata + o_ts1 = fcn(a_ts, b_ts, c_ts); + o_ts2 = fcn(fcn(a_ts, b_ts), c_ts); + o_ts3 = fcn(a_ts, V_N_ts, c_ts); + o_ts4 = fcn(fcn(a_ts, V_N_ts), c_ts); + + %fsdata + o_fs1 = fcn(a_fs, b_fs, c_fs); + o_fs2 = fcn(fcn(a_fs, b_fs), c_fs); + o_fs3 = fcn(a_fs, V_N_fs, c_fs); + o_fs4 = fcn(fcn(a_fs, V_N_fs), c_fs); + + %xydata + o_xy1 = fcn(a_xy, b_xy, c_xy); + o_xy2 = fcn(fcn(a_xy, b_xy), c_xy); + o_xy3 = fcn(a_xy, V_N_xy, c_xy); + o_xy4 = fcn(fcn(a_xy, V_N_xy), c_xy); + + %cdata + o_c1 = fcn(a_c, b_c, c_c); + o_c2 = fcn(fcn(a_c, b_c), c_c); + o_c3 = fcn(a_c, V_N_c, c_c); + o_c4 = fcn(fcn(a_c, V_N_c), c_c); + + % </SyntaxCode> + stest = true; + catch err + disp(err.message) + stest = false; + end + + % <AlgoDescription> + % + % 1) Check that for more than two inputs the result will be as if the + % commands are nested. + % + % </AlgoDescription> + + atest = true; + if stest + try + ple = plist('Exceptions', {'created', 'proctime', 'UUID'}); + % <AlgoCode> + if ~eq(o_ts1, o_ts2, ple), atest = false; end + if ~eq(o_ts3, o_ts4, ple), atest = false; end + if ~eq(o_fs1, o_fs2, ple), atest = false; end + if ~eq(o_fs3, o_fs4, ple), atest = false; end + if ~eq(o_xy1, o_xy2, ple), atest = false; end + if ~eq(o_xy3, o_xy4, ple), atest = false; end + if ~eq(o_c1, o_c2, ple), atest = false; end + if ~eq(o_c3, o_c4, ple), atest = false; end + % </AlgoCode> + catch err + disp(err.message) + atest = false; + end + else + atest = false; + end + + % Return a result structure + dbs = dbstack; + % dbs(1).name = sprintf('%s/%s (%s/%s)', func2str(fcn), ruleName, aCl(1:end-4), bCl(1:end-4)); + dbs(1).name = sprintf('%s/rule11', func2str(fcn)); + result = utp_prepare_result(atest, stest, dbs, mfilename); + +end % END UTP_rule11 +