GCC Code Coverage Report


Directory: ./
File: src/util/cartesian-product.test.cc
Date: 2025-09-01 06:19:01
Exec Total Coverage
Lines: 25 25 100.0%
Functions: 6 6 100.0%
Branches: 25 31 80.6%

Line Branch Exec Source
1 #include "na64util/cartesian-product.hh"
2
3 #include <gtest/gtest.h>
4
5 namespace na64dp {
6 namespace test {
7
8 8 TEST(CartesianProduct, Basic) {
9 static const int data[][5] = {
10 {1},
11 {3,4,5},
12 {6,7},
13 };
14
15 static const int tstSeq[][3] = {
16 {1, 3, 6}, {1, 3, 7},
17 {1, 4, 6}, {1, 4, 7},
18 {1, 5, 6}, {1, 5, 7},
19 };
20
21
1/1
✓ Branch 1 taken 1 times.
4 std::vector<int> one(data[0], data[0] + 1)
22
1/1
✓ Branch 1 taken 1 times.
4 , two(data[1], data[1] + 3)
23
1/1
✓ Branch 1 taken 1 times.
2 , three(data[2], data[2]+2 );
24 2 util::CartesianProduct< 3, std::vector<int> > g(one, two, three);
25 std::array<int, 3> c;
26 2 size_t n = 0;
27
2/2
✓ Branch 1 taken 6 times.
✓ Branch 2 taken 1 times.
14 while(g >> c) {
28
2/3
✓ Branch 2 taken 6 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 6 times.
12 EXPECT_EQ(tstSeq[n][0], c[0]);
29
2/3
✓ Branch 2 taken 6 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 6 times.
12 EXPECT_EQ(tstSeq[n][1], c[1]);
30
2/3
✓ Branch 2 taken 6 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 6 times.
12 EXPECT_EQ(tstSeq[n][2], c[2]);
31 12 ++n;
32 }
33 2 }
34
35 8 TEST(CartesianProduct, Collections) {
36 static const int tstSeq[][3] = {
37 {4, 3, 1}, {4, 3, 2},
38 {5, 3, 1}, {5, 3, 2},
39 };
40
41 2 util::CartesianProductCollections<int, 3> col;
42
2/2
✓ Branch 1 taken 1 times.
✓ Branch 4 taken 1 times.
2 col.add(0, 4); col.add(0, 5);
43
1/1
✓ Branch 1 taken 1 times.
2 col.add(1, 3);
44
2/2
✓ Branch 1 taken 1 times.
✓ Branch 4 taken 1 times.
2 col.add(2, 1); col.add(2, 2);
45
46
1/1
✓ Branch 1 taken 1 times.
2 util::CartesianProduct< 3, std::vector<int> > g = col.get();
47 std::array<int, 3> c;
48 2 size_t n = 0;
49
2/2
✓ Branch 1 taken 4 times.
✓ Branch 2 taken 1 times.
10 while(g >> c) {
50
2/3
✓ Branch 2 taken 4 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 4 times.
8 EXPECT_EQ(tstSeq[n][0], c[0]);
51
2/3
✓ Branch 2 taken 4 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 4 times.
8 EXPECT_EQ(tstSeq[n][1], c[1]);
52
2/3
✓ Branch 2 taken 4 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 4 times.
8 EXPECT_EQ(tstSeq[n][2], c[2]);
53 8 ++n;
54 }
55 2 }
56
57 }
58 }
59
60