GCC Code Coverage Report


Directory: ./
File: src/detID/wireID.test.cc
Date: 2025-09-01 06:19:01
Exec Total Coverage
Lines: 82 82 100.0%
Functions: 15 15 100.0%
Branches: 106 153 69.3%

Line Branch Exec Source
1 #include "na64detID/wireID.hh"
2
3 #include <gtest/gtest.h>
4
5 namespace na64dp {
6
7 // Tests WireID for wire-type detectors
8 8 TEST(WireID, getSet) {
9 //ASSERT_GT( WireID::wireMax, 64 ); // enough to store MM hits
10 //ASSERT_GT( WireID::wireMax, 64 ); // enough to store GM hits
11 2 const char projs[] = "XYUV";
12
2/2
✓ Branch 0 taken 4095 times.
✓ Branch 1 taken 1 times.
8192 for( size_t i = 0; i <= WireID::wireMax; ++i ) {
13
2/2
✓ Branch 0 taken 16380 times.
✓ Branch 1 taken 4095 times.
40950 for( const char * prj = projs; '\0' != *prj; ++prj ) {
14 32760 WireID wid;
15
1/2
✗ Branch 3 not taken.
✓ Branch 4 taken 16380 times.
32760 EXPECT_FALSE( wid.proj_is_set() );
16
1/2
✗ Branch 3 not taken.
✓ Branch 4 taken 16380 times.
32760 EXPECT_FALSE( wid.wire_no_is_set() );
17
18
2/2
✓ Branch 1 taken 16380 times.
✓ Branch 4 taken 16380 times.
32760 wid.proj(WireID::proj_code(*prj));
19 32760 wid.wire_no(i);
20
2/3
✓ Branch 2 taken 16380 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 16380 times.
32760 EXPECT_EQ( wid.wire_no(), i );
21
4/5
✓ Branch 1 taken 16380 times.
✓ Branch 4 taken 16380 times.
✓ Branch 7 taken 16380 times.
✗ Branch 10 not taken.
✓ Branch 11 taken 16380 times.
32760 EXPECT_EQ( WireID::proj_label(wid.proj()), *prj );
22
23 WireID::Projection conjProjCode =
24
2/2
✓ Branch 1 taken 16380 times.
✓ Branch 4 taken 16380 times.
32760 WireID::conjugated_projection_code(wid.proj());
25
1/1
✓ Branch 1 taken 16380 times.
32760 char conjProjLabel = WireID::proj_label(conjProjCode);
26
4/5
✓ Branch 0 taken 4095 times.
✓ Branch 1 taken 4095 times.
✓ Branch 2 taken 4095 times.
✓ Branch 3 taken 4095 times.
✗ Branch 4 not taken.
32760 switch( conjProjLabel ) {
27
2/3
✓ Branch 1 taken 4095 times.
✗ Branch 4 not taken.
✓ Branch 5 taken 4095 times.
8190 case 'X' : EXPECT_EQ( 'Y', *prj ); break;
28
2/3
✓ Branch 1 taken 4095 times.
✗ Branch 4 not taken.
✓ Branch 5 taken 4095 times.
8190 case 'Y' : EXPECT_EQ( 'X', *prj ); break;
29
2/3
✓ Branch 1 taken 4095 times.
✗ Branch 4 not taken.
✓ Branch 5 taken 4095 times.
8190 case 'U' : EXPECT_EQ( 'V', *prj ); break;
30
2/3
✓ Branch 1 taken 4095 times.
✗ Branch 4 not taken.
✓ Branch 5 taken 4095 times.
8190 case 'V' : EXPECT_EQ( 'U', *prj ); break;
31 };
32
33 32760 WireID wid2;
34 32760 wid2.wire_no(i);
35
2/2
✓ Branch 1 taken 16380 times.
✓ Branch 4 taken 16380 times.
32760 wid2.proj(WireID::proj_code(*prj));
36
2/3
✓ Branch 2 taken 16380 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 16380 times.
32760 EXPECT_EQ( wid2.wire_no(), i );
37
4/5
✓ Branch 1 taken 16380 times.
✓ Branch 4 taken 16380 times.
✓ Branch 7 taken 16380 times.
✗ Branch 10 not taken.
✓ Branch 11 taken 16380 times.
32760 EXPECT_EQ( WireID::proj_label(wid2.proj()), *prj );
38
39 32760 wid.unset_wire_no();
40
1/2
✗ Branch 3 not taken.
✓ Branch 4 taken 16380 times.
32760 EXPECT_TRUE( wid.proj_is_set() );
41
1/2
✗ Branch 3 not taken.
✓ Branch 4 taken 16380 times.
32760 EXPECT_FALSE( wid.wire_no_is_set() );
42
43 32760 wid.wire_no(i);
44 32760 wid.unset_proj();
45
1/2
✗ Branch 3 not taken.
✓ Branch 4 taken 16380 times.
32760 EXPECT_FALSE( wid.proj_is_set() );
46
1/2
✗ Branch 3 not taken.
✓ Branch 4 taken 16380 times.
32760 EXPECT_TRUE( wid.wire_no_is_set() );
47 }
48 }
49 2 }
50
51 8 TEST(WireID, payloadStrConversions) {
52 2 char buffer[32] = "";
53
1/1
✓ Branch 1 taken 1 times.
2 WireID::to_string( 0x0, buffer, sizeof(buffer) );
54
2/3
✓ Branch 1 taken 1 times.
✗ Branch 4 not taken.
✓ Branch 5 taken 1 times.
2 EXPECT_EQ( '\0', buffer[0] );
55
56 2 const char projections[] = "XYUV";
57 2 uint16_t wNos[] = { 0, 123, 42, WireID::wireMax };
58
2/2
✓ Branch 0 taken 4 times.
✓ Branch 1 taken 1 times.
10 for( const char * prj = projections; *prj != '\0' ; ++prj ) {
59
2/2
✓ Branch 0 taken 16 times.
✓ Branch 1 taken 4 times.
40 for( size_t i = 0; i < sizeof(wNos)/sizeof(*wNos); ++i ) {
60 32 WireID wid;
61
2/2
✓ Branch 1 taken 16 times.
✓ Branch 4 taken 16 times.
32 wid.proj( WireID::proj_code( *prj ) );
62
4/5
✓ Branch 1 taken 16 times.
✓ Branch 4 taken 16 times.
✓ Branch 7 taken 16 times.
✗ Branch 10 not taken.
✓ Branch 11 taken 16 times.
32 EXPECT_EQ( wid.proj(), WireID::proj_code( *prj ) ) << " for proj=`"
63 32 << *prj << "').";
64 32 wid.wire_no( wNos[i] );
65
4/5
✓ Branch 1 taken 16 times.
✓ Branch 4 taken 16 times.
✓ Branch 7 taken 16 times.
✗ Branch 10 not taken.
✓ Branch 11 taken 16 times.
32 EXPECT_EQ( wid.proj(), WireID::proj_code( *prj ) ) << " for wire #" << wNos[i]
66 32 << ", proj=`" << *prj << "').";
67
2/3
✓ Branch 2 taken 16 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 16 times.
32 EXPECT_EQ( wid.wire_no(), wNos[i] ) << " for wire #" << wNos[i]
68 32 << ", proj=`" << *prj << "').";
69
1/1
✓ Branch 1 taken 16 times.
32 WireID::to_string( wid.id, buffer, sizeof(buffer) );
70
1/1
✓ Branch 1 taken 16 times.
32 WireID ctrlWid( WireID::from_string(buffer) );
71
2/3
✓ Branch 1 taken 16 times.
✗ Branch 4 not taken.
✓ Branch 5 taken 16 times.
32 EXPECT_EQ( ctrlWid.id, wid.id ) << " for wire #" << wNos[i]
72 32 << ", proj=`" << *prj << "', label is \"" << buffer << "\").";
73 }
74 }
75 2 }
76
77 8 TEST(WireID, strConvErrors) {
78 // unkown projection
79
5/11
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 5 taken 1 times.
✓ Branch 7 taken 1 times.
✗ Branch 8 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✓ Branch 13 taken 1 times.
✓ Branch 29 taken 1 times.
✗ Branch 30 not taken.
✗ Branch 31 not taken.
2 EXPECT_THROW( WireID::from_string("Z-12")
80 2 , std::runtime_error );
81 // exceeded limit
82 char bf[32];
83 2 snprintf( bf, sizeof(bf), "X-%d", WireID::wireMax + 1 );
84
5/11
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 5 taken 1 times.
✓ Branch 7 taken 1 times.
✗ Branch 8 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✓ Branch 13 taken 1 times.
✓ Branch 29 taken 1 times.
✗ Branch 30 not taken.
✗ Branch 31 not taken.
2 EXPECT_THROW( WireID::from_string(bf)
85 2 , std::runtime_error );
86 // extra symbols on tail
87
5/11
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 5 taken 1 times.
✓ Branch 7 taken 1 times.
✗ Branch 8 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✓ Branch 13 taken 1 times.
✓ Branch 29 taken 1 times.
✗ Branch 30 not taken.
✗ Branch 31 not taken.
2 EXPECT_THROW( WireID::from_string("Y-12a")
88 2 , std::runtime_error );
89 2 }
90
91 8 TEST(WireID, supportSideProjectionIDs) {
92
1/1
✓ Branch 1 taken 1 times.
2 std::string strExpr = "X2-123";
93
1/1
✓ Branch 2 taken 1 times.
2 WireID wid = WireID::from_string(strExpr.c_str());
94
3/4
✓ Branch 1 taken 1 times.
✓ Branch 4 taken 1 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 1 times.
2 EXPECT_EQ(WireID::kX2, wid.proj());
95
2/3
✓ Branch 1 taken 1 times.
✗ Branch 6 not taken.
✓ Branch 7 taken 1 times.
2 EXPECT_TRUE(WireID::proj_is_adjoint(wid.proj()));
96 char bf[32];
97
1/1
✓ Branch 1 taken 1 times.
2 WireID::to_string(wid.id, bf, sizeof(bf));
98
2/3
✓ Branch 2 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 1 times.
2 EXPECT_STREQ(strExpr.c_str(), bf);
99 2 }
100
101 8 TEST(PlaneKey, dropsIrrelevant) {
102 DetID did( 0
103 , aux::gKinIDMax
104 , 0
105
1/1
✓ Branch 1 taken 1 times.
2 , WireID( APVPlaneID::kU, WireID::wireMax ).id
106
1/1
✓ Branch 1 taken 1 times.
2 );
107
108
1/1
✓ Branch 1 taken 1 times.
2 PlaneKey planeID(did);
109 // assure the plane ID has all the field preserved as in the generic ID
110 //EXPECT_EQ( planeID.chip(), 0 );
111
3/4
✓ Branch 1 taken 1 times.
✓ Branch 4 taken 1 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 1 times.
2 EXPECT_EQ( planeID.kin(), aux::gKinIDMax );
112
3/4
✓ Branch 1 taken 1 times.
✓ Branch 4 taken 1 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 1 times.
2 EXPECT_EQ( planeID.number(), 0 );
113
2/3
✓ Branch 1 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 1 times.
2 EXPECT_TRUE( planeID.is_payload_set() );
114 // assure we drop wire no information while were converting to plane key
115
1/1
✓ Branch 1 taken 1 times.
2 WireID wid(planeID.payload());
116
1/2
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
2 EXPECT_TRUE( wid.proj_is_set() );
117
3/4
✓ Branch 1 taken 1 times.
✓ Branch 4 taken 1 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 1 times.
2 EXPECT_EQ( wid.proj(), APVPlaneID::kU );
118
1/2
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
2 EXPECT_FALSE( wid.wire_no_is_set() );
119 2 }
120
121 }
122
123