GCC Code Coverage Report


Directory: ./
Coverage: low: ≥ 0% medium: ≥ 75.0% high: ≥ 90.0%
Coverage Exec / Excl / Total
Lines: 100.0% 34 / 0 / 34
Functions: 100.0% 2 / 0 / 2
Branches: 52.3% 68 / 0 / 130

test/cpv_local/edh/hamming.cpp
Line Branch Exec Source
1 // competitive-verifier: STANDALONE
2
3 #include "../../../src/edh/hamming/lib.hpp"
4 #include "../../../src/util/rand/lib.hpp"
5 #include "../base.hpp"
6
7 using namespace tifa_libs;
8 rand_gen<dbitset::word_t> g;
9
10 38 void test(u64 n) {
11 38 dbitset s(n, g);
12
13
3/6
✓ Branch 4 taken 38 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 38 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 38 times.
✗ Branch 11 not taken.
38 timer_(auto v = hamming::encode(s));
14 38 auto m = v.size() - n - 1;
15
5/10
✓ Branch 2 taken 38 times.
✗ Branch 3 not taken.
✓ Branch 6 taken 38 times.
✗ Branch 7 not taken.
✓ Branch 9 taken 38 times.
✗ Branch 10 not taken.
✓ Branch 12 taken 38 times.
✗ Branch 13 not taken.
✓ Branch 19 taken 38 times.
✗ Branch 20 not taken.
38 check_bool(v.size() <= (1_u64 << m), check_param(n), check_param(m), check_param(s.to_string()), check_param(v.to_string()));
16
17
3/6
✓ Branch 4 taken 38 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 38 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 38 times.
✗ Branch 11 not taken.
38 timer_(auto t1 = hamming::decode<false>(v));
18
2/4
✓ Branch 2 taken 38 times.
✗ Branch 3 not taken.
✓ Branch 10 taken 38 times.
✗ Branch 11 not taken.
38 check(t1.to_string(), s.to_string(), check_param(v.to_string()));
19
20
2/2
✓ Branch 1 taken 37 times.
✓ Branch 2 taken 1 time.
38 if (v.size() > 1) {
21
1/2
✓ Branch 1 taken 37 times.
✗ Branch 2 not taken.
37 auto v2 = v;
22 37 rand_gen<u64> g2(1, v.size() - 1);
23 37 auto pos = g2();
24 37 v2.flip(pos);
25
26
3/6
✓ Branch 4 taken 37 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 37 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 37 times.
✗ Branch 11 not taken.
37 timer_(auto t2 = hamming::decode<true>(v2));
27
2/4
✓ Branch 1 taken 37 times.
✗ Branch 2 not taken.
✓ Branch 9 taken 37 times.
✗ Branch 10 not taken.
37 check(v2.to_string(), v.to_string(), check_param(pos));
28
4/8
✓ Branch 2 taken 37 times.
✗ Branch 3 not taken.
✓ Branch 6 taken 37 times.
✗ Branch 7 not taken.
✓ Branch 9 taken 37 times.
✗ Branch 10 not taken.
✓ Branch 15 taken 37 times.
✗ Branch 16 not taken.
37 check_bool(t2.has_value(), check_param(pos), check_param(s.to_string()), check_param(v.to_string()));
29
3/6
✓ Branch 2 taken 37 times.
✗ Branch 3 not taken.
✓ Branch 5 taken 37 times.
✗ Branch 6 not taken.
✓ Branch 14 taken 37 times.
✗ Branch 15 not taken.
37 check(t2->to_string(), s.to_string(), check_param(pos), check_param(v.to_string()));
30 37 }
31 38 }
32
33 1 int main() {
34
2/2
✓ Branch 0 taken 20 times.
✓ Branch 1 taken 1 time.
21 flt_ (u32, i, 0, 20) {
35
3/6
✓ Branch 4 taken 20 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 20 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 20 times.
✗ Branch 11 not taken.
20 timer_(test(i));
36 }
37
2/2
✓ Branch 0 taken 8 times.
✓ Branch 1 taken 1 time.
9 flt_ (u32, i, 2, 10) {
38
3/6
✓ Branch 4 taken 8 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 8 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 8 times.
✗ Branch 11 not taken.
8 timer_(test((1 << i) - (i + 1)));
39 }
40
3/6
✓ Branch 4 taken 1 time.
✗ Branch 5 not taken.
✓ Branch 7 taken 1 time.
✗ Branch 8 not taken.
✓ Branch 10 taken 1 time.
✗ Branch 11 not taken.
1 timer_(test(1000));
41
3/6
✓ Branch 4 taken 1 time.
✗ Branch 5 not taken.
✓ Branch 7 taken 1 time.
✗ Branch 8 not taken.
✓ Branch 10 taken 1 time.
✗ Branch 11 not taken.
1 timer_(test(10000));
42
3/6
✓ Branch 4 taken 1 time.
✗ Branch 5 not taken.
✓ Branch 7 taken 1 time.
✗ Branch 8 not taken.
✓ Branch 10 taken 1 time.
✗ Branch 11 not taken.
1 timer_(test(200000));
43
3/6
✓ Branch 4 taken 1 time.
✗ Branch 5 not taken.
✓ Branch 7 taken 1 time.
✗ Branch 8 not taken.
✓ Branch 10 taken 1 time.
✗ Branch 11 not taken.
1 timer_(test(500000));
44
3/6
✓ Branch 4 taken 1 time.
✗ Branch 5 not taken.
✓ Branch 7 taken 1 time.
✗ Branch 8 not taken.
✓ Branch 10 taken 1 time.
✗ Branch 11 not taken.
1 timer_(test(100000));
45
3/6
✓ Branch 4 taken 1 time.
✗ Branch 5 not taken.
✓ Branch 7 taken 1 time.
✗ Branch 8 not taken.
✓ Branch 10 taken 1 time.
✗ Branch 11 not taken.
1 timer_(test(200000));
46
3/6
✓ Branch 4 taken 1 time.
✗ Branch 5 not taken.
✓ Branch 7 taken 1 time.
✗ Branch 8 not taken.
✓ Branch 10 taken 1 time.
✗ Branch 11 not taken.
1 timer_(test(500000));
47
3/6
✓ Branch 4 taken 1 time.
✗ Branch 5 not taken.
✓ Branch 7 taken 1 time.
✗ Branch 8 not taken.
✓ Branch 10 taken 1 time.
✗ Branch 11 not taken.
1 timer_(test(1000000));
48
3/6
✓ Branch 4 taken 1 time.
✗ Branch 5 not taken.
✓ Branch 7 taken 1 time.
✗ Branch 8 not taken.
✓ Branch 10 taken 1 time.
✗ Branch 11 not taken.
1 timer_(test(2000000));
49
3/6
✓ Branch 4 taken 1 time.
✗ Branch 5 not taken.
✓ Branch 7 taken 1 time.
✗ Branch 8 not taken.
✓ Branch 10 taken 1 time.
✗ Branch 11 not taken.
1 timer_(test(5000000));
50 1 }
51