Unverified Commit 0957a020 authored by Horace He's avatar Horace He Committed by GitHub

Removed trav (and some other test/CI fixes) (#173)

* checkpoint

* another checkpoint

* final checkpoint

* converted tests and fixed some tests

* fix some tests

* updated descriptions

* responded to comments

* fix topo sort

* added space before for

* final spacing nits
parent 1e6e8b0f
......@@ -10,7 +10,7 @@
int permToInt(vi& v) {
int use = 0, i = 0, r = 0;
trav(x, v) r = r * ++i + __builtin_popcount(use & -(1 << x)),
for(int x:v) r = r * ++i + __builtin_popcount(use & -(1<<x)),
use |= 1 << x; // (note: minus, not ~!)
return r;
}
......@@ -2,7 +2,6 @@
using namespace std;
#define rep(i, a, b) for(int i = a; i < (b); ++i)
#define trav(a, x) for(auto& a : x)
#define all(x) begin(x), end(x)
#define sz(x) (int)(x).size()
typedef long long ll;
......
......@@ -19,7 +19,7 @@ struct FT2 {
for (; x < sz(ys); x |= x + 1) ys[x].push_back(y);
}
void init() {
trav(v, ys) sort(all(v)), ft.emplace_back(sz(v));
for (vi& v : ys) sort(all(v)), ft.emplace_back(sz(v));
}
int ind(int x, int y) {
return (int)(lower_bound(all(ys[x]), y) - ys[x].begin()); }
......
......@@ -57,7 +57,7 @@ vector<F> hull3d(const vector<P3>& A) {
C(a, b, c); C(a, c, b); C(b, c, a);
}
}
trav(it, FS) if ((A[it.b] - A[it.a]).cross(
for (F& it : FS) if ((A[it.b] - A[it.a]).cross(
A[it.c] - A[it.a]).dot(it.q) <= 0) swap(it.c, it.b);
return FS;
};
......@@ -18,7 +18,7 @@ pair<P, P> closest(vector<P> v) {
sort(all(v), [](P a, P b) { return a.y < b.y; });
pair<ll, pair<P, P>> ret{LLONG_MAX, {P(), P()}};
int j = 0;
trav(p, v) {
for (P p : v) {
P d{1 + (ll)sqrt(ret.first), 0};
while (v[j].y <= p.y - d.x) S.erase(v[j++]);
auto lo = S.lower_bound(p - d), hi = S.upper_bound(p + d);
......
......@@ -13,7 +13,7 @@ Points on the edge of the hull between two other points are not considered part
\includegraphics[width=\textwidth]{content/geometry/ConvexHull}
\vspace{-6mm}
\end{minipage}
* Status: tested with Kattis problems convexhull
* Status: stress-tested, tested with Kattis problems convexhull
* Time: O(n \log n)
*/
#pragma once
......@@ -27,7 +27,7 @@ vector<P> convexHull(vector<P> pts) {
vector<P> h(sz(pts)+1);
int s = 0, t = 0;
for (int it = 2; it--; s = --t, reverse(all(pts)))
trav(p, pts) {
for (P p : pts) {
while (t >= s + 2 && h[t-2].cross(h[t-1], p) <= 0) t--;
h[t++] = p;
}
......
......@@ -18,8 +18,8 @@ void delaunay(vector<P>& ps, F trifun) {
if (sz(ps) == 3) { int d = (ps[0].cross(ps[1], ps[2]) < 0);
trifun(0,1+d,2-d); }
vector<P3> p3;
trav(p, ps) p3.emplace_back(p.x, p.y, p.dist2());
if (sz(ps) > 3) trav(t, hull3d(p3)) if ((p3[t.b]-p3[t.a]).
for (P p : ps) p3.emplace_back(p.x, p.y, p.dist2());
if (sz(ps) > 3) for(auto t:hull3d(p3)) if ((p3[t.b]-p3[t.a]).
cross(p3[t.c]-p3[t.a]).dot(P3(0,0,1)) < 0)
trifun(t.a, t.c, t.b);
}
......@@ -22,7 +22,7 @@ vector<array<int, 3>> manhattanMST(vector<P> ps) {
sort(all(id), [&](int i, int j) {
return (ps[i]-ps[j]).x < (ps[j]-ps[i]).y;});
map<int, int> sweep;
trav(i,id) {
for (int i : id) {
for (auto it = sweep.lower_bound(-ps[i].y);
it != sweep.end(); sweep.erase(it++)) {
int j = it->second;
......@@ -32,8 +32,7 @@ vector<array<int, 3>> manhattanMST(vector<P> ps) {
}
sweep[-ps[i].y] = i;
}
if (k & 1) trav(p,ps) p.x = -p.x;
else trav(p,ps) swap(p.x, p.y);
for (P& p : ps) if (k & 1) p.x = -p.x; else swap(p.x, p.y);
}
return edges;
}
......@@ -6,9 +6,8 @@
* Description: Calculates the area of the union of $n$ polygons (not necessarily
* convex). The points within each polygon must be given in CCW order.
* (Epsilon checks may optionally be added to sideOf/sgn, but shouldn't be needed.)
* Status: Submitted on ECNA 2017 Problem A, fuzz-tested
* Status: stress-tested, Submitted on ECNA 2017 Problem A
* Time: $O(N^2)$, where $N$ is the total number of points
* Usage:
*/
#pragma once
......@@ -37,7 +36,7 @@ double polyUnion(vector<vector<P>>& poly) {
}
}
sort(all(segs));
trav(s,segs) s.first = min(max(s.first, 0.0), 1.0);
for (auto& s : segs) s.first = min(max(s.first, 0.0), 1.0);
double sum = 0;
int cnt = segs[0].second;
rep(j,1,sz(segs)) {
......
......@@ -9,6 +9,6 @@
template<class V, class L>
double signedPolyVolume(const V& p, const L& trilist) {
double v = 0;
trav(i, trilist) v += p[i.a].cross(p[i.b]).dot(p[i.c]);
for (auto i : trilist) v += p[i.a].cross(p[i.b]).dot(p[i.c]);
return v / 6;
}
......@@ -54,7 +54,7 @@ struct TwoSat {
vi val, comp, z; int time = 0;
int dfs(int i) {
int low = val[i] = ++time, x; z.push_back(i);
trav(e, gr[i]) if (!comp[e])
for(int e : gr[i]) if (!comp[e])
low = min(low, val[e] ?: dfs(e));
if (low == val[i]) do {
x = z.back(); z.pop_back();
......
......@@ -20,7 +20,7 @@ void bellmanFord(vector<Node>& nodes, vector<Ed>& eds, int s) {
sort(all(eds), [](Ed a, Ed b) { return a.s() < b.s(); });
int lim = sz(nodes) / 2 + 2; // /3+100 with shuffled vertices
rep(i,0,lim) trav(ed, eds) {
rep(i,0,lim) for (Ed ed : eds) {
Node cur = nodes[ed.a], &dest = nodes[ed.b];
if (abs(cur.dist) == inf) continue;
ll d = cur.dist + ed.w;
......@@ -29,7 +29,7 @@ void bellmanFord(vector<Node>& nodes, vector<Ed>& eds, int s) {
dest.dist = (i < lim-1 ? d : -inf);
}
}
rep(i,0,lim) trav(e, eds) {
rep(i,0,lim) for (Ed e : eds) {
if (nodes[e.a].dist == -inf)
nodes[e.b].dist = -inf;
}
......
......@@ -25,7 +25,7 @@ int Time;
template<class F>
int dfs(int at, int par, F& f) {
int me = num[at] = ++Time, e, y, top = me;
trav(pa, ed[at]) if (pa.second != par) {
for (auto pa : ed[at]) if (pa.second != par) {
tie(y, e) = pa;
if (num[y]) {
top = min(top, num[y]);
......
......@@ -17,7 +17,7 @@
bool find(int j, vector<vi>& g, vi& btoa, vi& vis) {
if (btoa[j] == -1) return 1;
vis[j] = 1; int di = btoa[j];
trav(e, g[di])
for (int e : g[di])
if (!vis[e] && find(e, g, btoa, vis)) {
btoa[e] = di;
return 1;
......@@ -28,7 +28,7 @@ int dfsMatching(vector<vi>& g, vi& btoa) {
vi vis;
rep(i,0,sz(g)) {
vis.assign(sz(btoa), 0);
trav(j,g[i])
for (int j : g[i])
if (find(j, g, btoa, vis)) {
btoa[j] = i;
break;
......
......@@ -41,7 +41,7 @@ struct Dinic {
int qi = 0, qe = lvl[s] = 1;
while (qi < qe && !lvl[t]) {
int v = q[qi++];
trav(e, adj[v])
for (Edge e : adj[v])
if (!lvl[e.to] && e.c >> (30 - L))
q[qe++] = e.to, lvl[e.to] = lvl[v] + 1;
}
......
......@@ -37,7 +37,7 @@ void pop(Node*& a) { a->prop(); a = merge(a->l, a->r); }
ll dmst(int n, int r, vector<Edge>& g) {
UF uf(n);
vector<Node*> heap(n);
trav(e, g) heap[e.b] = merge(heap[e.b], new Node{e});
for (Edge e : g) heap[e.b] = merge(heap[e.b], new Node{e});
ll res = 0;
vi seen(n, -1), path(n);
seen[r] = r;
......
......@@ -22,7 +22,7 @@ template<class T> T edmondsKarp(vector<unordered_map<int, T>>& graph, int source
rep(i,0,ptr) {
int x = q[i];
trav(e, graph[x]) {
for (auto e : graph[x]) {
if (par[e.first] == -1 && e.second > 0) {
par[e.first] = x;
q[ptr++] = e.first;
......
......@@ -26,6 +26,6 @@ vi eulerWalk(vector<vector<pii>>& gr, int nedges, int src=0) {
D[x]--, D[y]++;
eu[e] = 1; s.push_back(y);
}}
trav(x, D) if (x < 0 || sz(ret) != nedges+1) return {};
for (int x : D) if (x < 0 || sz(ret) != nedges+1) return {};
return {ret.rbegin(), ret.rend()};
}
......@@ -14,7 +14,7 @@
vector<pii> generalMatching(int N, vector<pii>& ed) {
vector<vector<ll>> mat(N, vector<ll>(N)), A;
trav(pa, ed) {
for (pii pa : ed) {
int a = pa.first, b = pa.second, r = rand() % mod;
mat[a][b] = r, mat[b][a] = (mod - r) % mod;
}
......
......@@ -24,7 +24,7 @@ vector<Edge> gomoryHu(int N, vector<Edge> ed) {
vi par(N);
rep(i,1,N) {
PushRelabel D(N); // Dinic also works
trav(t,ed) D.addEdge(t[0], t[1], t[2], t[2]);
for (Edge t : ed) D.addEdge(t[0], t[1], t[2], t[2]);
tree.push_back({i, par[i], D.calc(i, par[i])});
rep(j,i+1,N)
if (par[j] == par[i] && D.leftOfMinCut(j)) par[j] = i;
......
......@@ -27,7 +27,7 @@ template <bool VALS_EDGES> struct HLD {
rt(N),pos(N),tree(new Node(0, N)){ dfsSz(),dfsHld();}
void dfsSz(int v = 0) {
if (par[v] != -1) adj[v].erase(find(all(adj[v]), par[v]));
trav(u, adj[v]) {
for (int& u : adj[v]) {
par[u] = v, depth[u] = depth[v] + 1;
dfsSz(u);
siz[v] += siz[u];
......@@ -36,7 +36,7 @@ template <bool VALS_EDGES> struct HLD {
}
void dfsHld(int v = 0) {
pos[v] = tim++;
trav(u, adj[v]) {
for (int u : adj[v]) {
rt[u] = (u == adj[v][0] ? rt[v] : u);
dfsHld(u);
}
......
......@@ -21,7 +21,7 @@ struct LCA {
LCA(vector<vi>& C) : time(sz(C)), rmq((dfs(C,0,-1), ret)) {}
void dfs(vector<vi>& C, int v, int par) {
time[v] = T++;
trav(y, C[v]) if (y != par) {
for (int y : C[v]) if (y != par) {
path.push_back(v), ret.push_back(time[v]);
dfs(C, y, v);
}
......
......@@ -20,8 +20,8 @@ struct Maxclique {
vector<vi> C;
vi qmax, q, S, old;
void init(vv& r) {
trav(v,r) v.d = 0;
trav(v, r) trav(j, r) v.d += e[v.i][j.i];
for (auto& v : r) v.d = 0;
for (auto& v : r) for (auto j : r) v.d += e[v.i][j.i];
sort(all(r), [](auto a, auto b) { return a.d > b.d; });
int mxD = r[0].d;
rep(i,0,sz(r)) r[i].d = min(i, mxD) + 1;
......@@ -33,12 +33,12 @@ struct Maxclique {
if (sz(q) + R.back().d <= sz(qmax)) return;
q.push_back(R.back().i);
vv T;
trav(v,R) if (e[R.back().i][v.i]) T.push_back({v.i});
for(auto v:R) if (e[R.back().i][v.i]) T.push_back({v.i});
if (sz(T)) {
if (S[lev]++ / ++pk < limit) init(T);
int j = 0, mxk = 1, mnk = max(sz(qmax) - sz(q) + 1, 1);
C[1].clear(), C[2].clear();
trav(v, T) {
for (auto v : T) {
int k = 1;
auto f = [&](int i) { return e[v.i][i]; };
while (any_of(all(C[k]), f)) k++;
......@@ -47,7 +47,7 @@ struct Maxclique {
C[k].push_back(v.i);
}
if (j > 0) T[j - 1].d = 0;
rep(k,mnk,mxk + 1) trav(i, C[k])
rep(k,mnk,mxk + 1) for (int i : C[k])
T[j].i = i, T[j++].d = k;
expand(T, lev + 1);
} else if (sz(q) > sz(qmax)) qmax = q;
......
......@@ -56,9 +56,9 @@ struct MCMF {
while (!q.empty()) {
s = q.top().second; q.pop();
seen[s] = 1; di = dist[s] + pi[s];
trav(i, ed[s]) if (!seen[i])
for (int i : ed[s]) if (!seen[i])
relax(i, cap[s][i] - flow[s][i], cost[s][i], 1);
trav(i, red[s]) if (!seen[i])
for (int i : red[s]) if (!seen[i])
relax(i, flow[i][s], -cost[i][s], 0);
}
rep(i,0,N) pi[i] = min(pi[i] + dist[i], INF);
......@@ -85,7 +85,7 @@ struct MCMF {
int it = N, ch = 1; ll v;
while (ch-- && it--)
rep(i,0,N) if (pi[i] != INF)
trav(to, ed[i]) if (cap[i][to])
for (int to : ed[i]) if (cap[i][to])
if ((v = pi[i] + cost[i][to]) < pi[to])
pi[to] = v, ch = 1;
assert(it >= 0); // negative cost cycle
......
......@@ -15,13 +15,13 @@ vi cover(vector<vi>& g, int n, int m) {
vi match(m, -1);
int res = dfsMatching(g, match);
vector<bool> lfound(n, true), seen(m);
trav(it, match) if (it != -1) lfound[it] = false;
for (int it : match) if (it != -1) lfound[it] = false;
vi q, cover;
rep(i,0,n) if (lfound[i]) q.push_back(i);
while (!q.empty()) {
int i = q.back(); q.pop_back();
lfound[i] = 1;
trav(e, g[i]) if (!seen[e] && match[e] != -1) {
for (int e : g[i]) if (!seen[e] && match[e] != -1) {
seen[e] = true;
q.push_back(match[e]);
}
......
......@@ -38,7 +38,7 @@ struct PushRelabel {
int v = sz(g); H[s] = v; ec[t] = 1;
vi co(2*v); co[0] = v-1;
rep(i,0,v) cur[i] = g[i].data();
trav(e, g[s]) addFlow(e, e.c);
for (Edge& e : g[s]) addFlow(e, e.c);
for (int hi = 0;;) {
while (hs[hi].empty()) if (!hi--) return -ec[s];
......@@ -46,7 +46,7 @@ struct PushRelabel {
while (ec[u] > 0) // discharge u
if (cur[u] == g[u].data() + sz(g[u])) {
H[u] = 1e9;
trav(e, g[u]) if (e.c && H[u] > H[e.dest]+1)
for (Edge& e : g[u]) if (e.c && H[u] > H[e.dest]+1)
H[u] = H[e.dest]+1, cur[u] = &e;
if (++co[H[u]], !--co[hi] && hi < v)
rep(i,0,v) if (hi < H[i] && H[i] < v)
......
......@@ -19,7 +19,7 @@ vi val, comp, z, cont;
int Time, ncomps;
template<class G, class F> int dfs(int j, G& g, F& f) {
int low = val[j] = ++Time, x; z.push_back(j);
trav(e,g[j]) if (comp[e] < 0)
for (auto e : g[j]) if (comp[e] < 0)
low = min(low, val[e] ?: dfs(e,g,f));
if (low == val[j]) {
......
......@@ -12,14 +12,14 @@
vi topoSort(const vector<vi>& gr) {
vi indeg(sz(gr)), ret;
trav(li, gr) trav(x, li) indeg[x]++;
for (auto& li : gr) for (int x : li) indeg[x]++;
queue<int> q; // use priority queue for lexic. smallest ans.
rep(i,0,sz(gr)) if (indeg[i] == 0) q.push(-i);
while (!q.empty()) {
int i = -q.front(); // top() for priority queue
ret.push_back(i);
q.pop();
trav(x, gr[i])
for (int x : gr[i])
if (--indeg[x] == 0) q.push(-x);
}
return ret;
......
......@@ -17,7 +17,7 @@
bool dfs(int a, int L, vector<vi>& g, vi& btoa, vi& A, vi& B) {
if (A[a] != L) return 0;
A[a] = -1;
trav(b, g[a]) if (B[b] == L + 1) {
for (int b : g[a]) if (B[b] == L + 1) {
B[b] = 0;
if (btoa[b] == -1 || dfs(btoa[b], L + 1, g, btoa, A, B))
return btoa[b] = a, 1;
......@@ -33,13 +33,13 @@ int hopcroftKarp(vector<vi>& g, vi& btoa) {
fill(all(B), 0);
/// Find the starting nodes for BFS (i.e. layer 0).
cur.clear();
trav(a, btoa) if(a != -1) A[a] = -1;
for (int a : btoa) if(a != -1) A[a] = -1;
rep(a,0,sz(g)) if(A[a] == 0) cur.push_back(a);
/// Find all layers using bfs.
for (int lay = 1;; lay++) {
bool islast = 0;
next.clear();
trav(a, cur) trav(b, g[a]) {
for (int a : cur) for (int b : g[a]) {
if (btoa[b] == -1) {
B[b] = lay;
islast = 1;
......@@ -51,7 +51,7 @@ int hopcroftKarp(vector<vi>& g, vi& btoa) {
}
if (islast) break;
if (next.empty()) return res;
trav(a, next) A[a] = lay;
for (int a : next) A[a] = lay;
cur.swap(next);
}
/// Use DFS to scan for augmenting paths.
......
......@@ -6,6 +6,7 @@
* Description: Deterministic Miller-Rabin primality test.
* Guaranteed to work for numbers up to $2^{63}$; for larger numbers, extend A randomly.
* Time: 7 times the complexity of $a^b \mod c$.
* Status: Stress-tested
*/
#pragma once
......@@ -15,7 +16,7 @@ bool isPrime(ull n) {
if (n < 2 || n % 6 % 4 != 1) return (n | 1) == 3;
ull A[] = {2, 325, 9375, 28178, 450775, 9780504, 1795265022},
s = __builtin_ctzll(n-1), d = n >> s;
trav(a, A) { // ^ count trailing zeroes
for (ull a : A) { // ^ count trailing zeroes
ull p = modpow(a%n, d, n), i = s;
while (p != 1 && p != n - 1 && a % n && i--)
p = modmul(p, p, n);
......
......@@ -9,7 +9,7 @@
* $\phi(n)=n \cdot \prod_{p|n}(1-1/p)$.
*
* $\sum_{d|n} \phi(d) = n$, $\sum_{1\leq k \leq n, \gcd(k,n)=1} k = n \phi(n)/2, n>1$
*
*
* \textbf{Euler's thm}: $a,n$ coprime $\Rightarrow a^{\phi(n)} \equiv 1 \pmod{n}$.
*
* \textbf{Fermat's little thm}: $p$ prime $\Rightarrow a^{p-1} \equiv 1 \pmod{p}$ $\forall a$.
......@@ -22,6 +22,6 @@ int phi[LIM];
void calculatePhi() {
rep(i,0,LIM) phi[i] = i&1 ? i : i/2;
for(int i = 3; i < LIM; i += 2) if(phi[i] == i)
for(int j = i; j < LIM; j += i) phi[j] -= phi[j] / i;
for (int i = 3; i < LIM; i += 2) if(phi[i] == i)
for (int j = i; j < LIM; j += i) phi[j] -= phi[j] / i;
}
......@@ -33,6 +33,6 @@ vector<ll> berlekampMassey(vector<ll> s) {
}
C.resize(L + 1); C.erase(C.begin());
trav(x, C) x = (mod - x) % mod;
for (ll& x : C) x = (mod - x) % mod;
return C;
}
......@@ -47,7 +47,7 @@ vd conv(const vd& a, const vd& b) {
copy(all(a), begin(in));
rep(i,0,sz(b)) in[i].imag(b[i]);
fft(in);
trav(x, in) x *= x;
for (C& x : in) x *= x;
rep(i,0,n) out[i] = in[-i & (n - 1)] - conj(in[i]);
fft(out);
rep(i,0,sz(res)) res[i] = imag(out[i]) / (4 * n);
......
......@@ -20,7 +20,7 @@ void FST(vi& a, bool inv) {
// pii(u + v, u - v); // XOR /// include-line
}
}
// if (inv) trav(x, a) x /= sz(a); // XOR only /// include-line
// if (inv) for (int& x : a) x /= sz(a); // XOR only /// include-line
}
vi conv(vi a, vi b) {
FST(a, 0); FST(b, 0);
......
......@@ -9,7 +9,7 @@ struct Poly {
vector<double> a;
double operator()(double x) const {
double val = 0;
for(int i = sz(a); i--;) (val *= x) += a[i];
for (int i = sz(a); i--;) (val *= x) += a[i];
return val;
}
void diff() {
......
......@@ -27,7 +27,7 @@ struct AhoCorasick {
void insert(string& s, int j) {
assert(!s.empty());
int n = 0;
trav(c, s) {
for (char c : s) {
int& m = N[n].next[c - first];
if (m == -1) { n = m = sz(N); N.emplace_back(-1); }
else n = m;
......@@ -62,7 +62,7 @@ struct AhoCorasick {
vi find(string word) {
int n = 0;
vi res; // ll count = 0;
trav(c, word) {
for (char c : word) {
n = N[n].next[c - first];
res.push_back(N[n].end);
// count += N[n].nmatches;
......
......@@ -50,7 +50,7 @@ vector<H> getHashes(string& str, int length) {
return ret;
}
H hashString(string& s) { H h{}; trav(c,s) h=h*C+c; return h; }
H hashString(string& s){H h{}; for(char c:s) h=h*C+c;return h;}
#include <sys/time.h>
int main() {
......
......@@ -51,4 +51,4 @@ vector<H> getHashes(string& str, int length) {
return ret;
}
H hashString(string& s) { H h{}; trav(c,s) h=h*C+c; return h; }
H hashString(string& s){H h{}; for(char c:s) h=h*C+c;return h;}
......@@ -30,7 +30,7 @@ int exampleFunction1(vi mice, int* cats, int catsCount) {
rep(i, 1, catsCount) {
// This comment will be kept!
trav(it, mice) {
for (auto it : mice) {
/// This will be removed.
// And this kept.
sum += cats[i] * it;
......
......@@ -9,7 +9,6 @@ for test in $tests; do
echo "$(basename $test): "
start=`date +%s.%N`
g++ -std=c++14 -O2 $test && ./a.out
end=`date +%s.%N`
retCode=$?
if (($retCode != 0)); then
echo "Failed with $retCode"
......@@ -18,6 +17,7 @@ for test in $tests; do
else
pass+=1
fi
end=`date +%s.%N`
runtime=$( echo "$end - $start" | bc -l )
echo "Took $runtime seconds"
rm -f a.out
......
......@@ -70,7 +70,7 @@ private:
ostringstream oss;
oss << "{ ";
trav(it, data)
for(auto &it: data)
oss << convertToString(it) << " ";
oss << "}";
......
......@@ -14,7 +14,7 @@ UnitTestManager::UnitTestManager():
UnitTestManager::~UnitTestManager()
{
trav(it, m_unitTestWrappers)
for(auto &it: m_unitTestWrappers)
delete it.second;
m_unitTestWrappers.clear();
......@@ -58,7 +58,7 @@ void UnitTestManager::registerWrapper(UnitTestWrapper* unitTestWrapper)
void UnitTestManager::runAll()
{
trav(it, m_unitTestWrappers)
for(auto &it: m_unitTestWrappers)
runTest(it.second);
}
......@@ -97,7 +97,7 @@ void UnitTestManager::runTest(UnitTestWrapper* unitTestWrapper)
fprintf(stderr, "Running test \"%s\" <%d, %d>... ",
name.c_str(), i, unitTest->getCount());
fflush(stderr);