Mercurial > hg > ltpda
diff testing/utp_1.1/write_utp_document.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/write_utp_document.m Tue Dec 06 18:42:11 2011 +0100 @@ -0,0 +1,127 @@ +function write_utp_document(outfile, results) + + txt = ''; + + fd = fopen(outfile, 'w+'); + + fprintf(fd, '\\section{Results}\n'); + + + + while ~isempty(results) + + % get the first method + cls = results(1).class; + mthd = results(1).method; + + % find all results for this method + n = 1; + indices = []; + clear mresults; + for ll=1:numel(results) + if strcmp(cls, results(ll).class) && strcmp(mthd, results(ll).method) + mresults(n) = results(ll); + indices = [indices ll]; + n = n + 1; + end + end + if n==1 + mresults = []; + end + + results(indices) = []; + + writeTestTable(fd, mresults); + + fprintf('remaining %d\n', length(results)); + + end + + + % write output + + + fclose(fd); + +end + + +function txt = writeTestTable(fd, results) + txt = ''; + + cls = results(1).class; + mth = results(1).method; + + writeHeader(fd, cls, mth); + + for kk=1:numel(results) + + res = results(kk); + + rcol = ''; + if ~res.a || ~res.s + rcol = '\rowcolor{red}'; + end + + if res.s + syntax = 'pass'; + else + syntax = 'fail'; + end + + if res.a + algo = 'pass'; + else + algo = 'fail'; + end + + + fprintf(fd, '%s \\multirow{2}{3cm}{%s %s} & \\multirow{2}{5cm}{%s} & %s & %s \\\\ \\cline{3-4}\n', rcol, res.num, res.subnum, fix(res.doc.desc), fix(res.doc.syntax), syntax); + fprintf(fd, '%s & & %s & %s \\\\ \\hline\n', rcol, fix(res.doc.algo), algo); + + end + + writeFooter(fd, cls, mth); + + +end + +function s = fix(str) + + s = strrep(str, '_', '\_'); + s = strrep(s, '^', '\^'); + + parts = regexp(s, '\n', 'split'); + parts(cellfun('isempty', parts)) = []; + + if isempty(parts) + s = ''; + else + s = parts{1}; + for kk=2:numel(parts) + s = [s sprintf('\n') parts{kk}]; + end + end + + +end + +function writeHeader(fd, cls, mth) + + fprintf(fd, '\\begin{longtable}{|p{3cm}|p{5cm}|p{5cm}|c|} \\hline\n'); + fprintf(fd, '{\\bf %s/%s} &&& \\\\ \\hline\n', cls, mth); + fprintf(fd, '\\endhead\n'); + + +end + + +function writeFooter(fd, cls, mth) +% fprintf(fd, '\\end{tabular}\n'); +% fprintf(fd, '\\end{center}\n'); + fprintf(fd, '\\caption{Unit tests for %s/%s.}\n', cls, mth); + fprintf(fd, '\\label{tab:%s_%s}\n', cls, mth); + fprintf(fd, '\\end{longtable}\n'); + fprintf(fd, '\\clearpage\n\n\n'); +end +