comparison 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
comparison
equal deleted inserted replaced
43:bc767aaa99a8 44:409a22968d5e
1 function write_utp_document(outfile, results)
2
3 txt = '';
4
5 fd = fopen(outfile, 'w+');
6
7 fprintf(fd, '\\section{Results}\n');
8
9
10
11 while ~isempty(results)
12
13 % get the first method
14 cls = results(1).class;
15 mthd = results(1).method;
16
17 % find all results for this method
18 n = 1;
19 indices = [];
20 clear mresults;
21 for ll=1:numel(results)
22 if strcmp(cls, results(ll).class) && strcmp(mthd, results(ll).method)
23 mresults(n) = results(ll);
24 indices = [indices ll];
25 n = n + 1;
26 end
27 end
28 if n==1
29 mresults = [];
30 end
31
32 results(indices) = [];
33
34 writeTestTable(fd, mresults);
35
36 fprintf('remaining %d\n', length(results));
37
38 end
39
40
41 % write output
42
43
44 fclose(fd);
45
46 end
47
48
49 function txt = writeTestTable(fd, results)
50 txt = '';
51
52 cls = results(1).class;
53 mth = results(1).method;
54
55 writeHeader(fd, cls, mth);
56
57 for kk=1:numel(results)
58
59 res = results(kk);
60
61 rcol = '';
62 if ~res.a || ~res.s
63 rcol = '\rowcolor{red}';
64 end
65
66 if res.s
67 syntax = 'pass';
68 else
69 syntax = 'fail';
70 end
71
72 if res.a
73 algo = 'pass';
74 else
75 algo = 'fail';
76 end
77
78
79 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);
80 fprintf(fd, '%s & & %s & %s \\\\ \\hline\n', rcol, fix(res.doc.algo), algo);
81
82 end
83
84 writeFooter(fd, cls, mth);
85
86
87 end
88
89 function s = fix(str)
90
91 s = strrep(str, '_', '\_');
92 s = strrep(s, '^', '\^');
93
94 parts = regexp(s, '\n', 'split');
95 parts(cellfun('isempty', parts)) = [];
96
97 if isempty(parts)
98 s = '';
99 else
100 s = parts{1};
101 for kk=2:numel(parts)
102 s = [s sprintf('\n') parts{kk}];
103 end
104 end
105
106
107 end
108
109 function writeHeader(fd, cls, mth)
110
111 fprintf(fd, '\\begin{longtable}{|p{3cm}|p{5cm}|p{5cm}|c|} \\hline\n');
112 fprintf(fd, '{\\bf %s/%s} &&& \\\\ \\hline\n', cls, mth);
113 fprintf(fd, '\\endhead\n');
114
115
116 end
117
118
119 function writeFooter(fd, cls, mth)
120 % fprintf(fd, '\\end{tabular}\n');
121 % fprintf(fd, '\\end{center}\n');
122 fprintf(fd, '\\caption{Unit tests for %s/%s.}\n', cls, mth);
123 fprintf(fd, '\\label{tab:%s_%s}\n', cls, mth);
124 fprintf(fd, '\\end{longtable}\n');
125 fprintf(fd, '\\clearpage\n\n\n');
126 end
127