diff testing/utp_1.1/print_utp_results.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/print_utp_results.m	Tue Dec 06 18:42:11 2011 +0100
@@ -0,0 +1,99 @@
+% PRINT_UTP_RESULTS prints the results structure to a string.
+%
+% M Hewitson 07-08-08
+%
+% $Id: print_utp_results.m,v 1.5 2011/04/17 05:42:54 hewitson Exp $
+%
+
+function res = print_utp_results(results)
+  
+  DISP_ALL         = false;
+  DISP_RUNTIME     = true;
+  DISP_RUNTIME_NUM = 30;
+  
+  ntests  = numel(results);
+  apassed = sum([results(:).a]);
+  spassed = sum([results(:).s]);
+  
+  res = '';
+  
+  if DISP_ALL
+    res = [res sprintf('\n\n')];
+    res = [res sprintf('-------------------------------------------------------\n')];
+    res = [res sprintf('-------------           SUMMARY           -------------\n')];
+    res = [res sprintf('-------------------------------------------------------\n')];
+    res = [res sprintf('-------------------------------------------------------\n')];
+    res = [res sprintf('UTP name                           | Syntax | Algorithm\n')];
+    res = [res sprintf('-------------------------------------------------------\n')];
+    for aa=1:ntests
+      str = dispRes(results(aa).fcn, results(aa).s, results(aa).a, results(aa).msg);
+      res = [res str];
+    end
+    res = [res sprintf('\n\n')];
+  end
+  
+  if DISP_RUNTIME
+    
+    runtime = [0 results(:).runtime];
+    d       = diff(runtime);
+    [sorted, idx]  = sort(d);
+    
+    res = [res sprintf('-------------------------------------------------------\n')];
+    res = [res sprintf('-------------           RUNTIME           -------------\n')];
+    res = [res sprintf('-------------------------------------------------------\n')];
+    res = [res sprintf('-------------------------------------------------------\n')];
+    res = [res sprintf('UTP name                           | Runtime           \n')];
+    res = [res sprintf('-------------------------------------------------------\n')];
+    for ll = 0:min(DISP_RUNTIME_NUM, length(idx)-1);
+      currentIdx = idx(end-ll);
+      str = dispRes(results(currentIdx).fcn, sorted(end-ll), '', '');
+      res = [res str];
+    end
+    res = [res sprintf('\n\n')];
+  end
+  
+  res = [res sprintf('-------------------------------------------------------\n')];
+  res = [res sprintf('-------------           FAILURES           ------------\n')];
+  res = [res sprintf('-------------------------------------------------------\n')];
+  res = [res sprintf('-------------------------------------------------------\n')];
+  res = [res sprintf('UTP name                           | Syntax | Algorithm\n')];
+  res = [res sprintf('-------------------------------------------------------\n')];  
+  for jj=1:ntests
+    if results(jj).a==0 || results(jj).s==0
+      str = dispRes(results(jj).fcn, results(jj).s, results(jj).a, results(jj).msg);
+      res = [res str];
+    end
+  end
+  res = [res sprintf('-------------------------------------------------------\n')];
+  res = [res sprintf('\n\n')];
+  
+  % Summary
+  res = [res sprintf('------------------------------------\n')];
+  res = [res sprintf('Total # tests:  %d\n', ntests)];
+  res = [res sprintf('S tests failed: %d\n', ntests - spassed)];
+  res = [res sprintf('A tests failed: %d\n', ntests - apassed)];
+  res = [res sprintf('------------------------------------\n')];
+end
+
+function str = dispRes(fcn, s, a, msg)
+  if numel(fcn) > 35
+    fcn = [fcn(1:31), ' ...'];
+  end
+  str = sprintf('%-36s%s  %s %s\n', fcn, res2str(s), res2str(a), msg);
+end
+
+function str = res2str(a)
+  if islogical(a)
+    if (a)
+      str = '  pass  ';
+    else
+      str = '--fail--';
+    end
+  elseif isnumeric(a)
+    str = sprintf('%8.2f seconds', a);
+  elseif ischar(a)
+    str = a;
+  else
+    str = '';
+  end
+end