GCC Code Coverage Report


Directory: ./
File: src/iguana/tests/include/TestValidator.h
Date: 2025-11-25 17:57:04
Coverage Exec Excl Total
Lines: 78.9% 15 0 19
Functions: 100.0% 1 0 1
Branches: 50.0% 24 0 48

Line Branch Exec Source
1 // test an iguana algorithm validator
2
3 #include <filesystem>
4 #include <hipo4/reader.h>
5 #include <iguana/algorithms/Validator.h>
6
7 10 inline int TestValidator(
8 std::string vdor_name,
9 std::vector<std::string> bank_names,
10 std::string data_file,
11 int num_events,
12 std::string output_dir,
13 bool verbose)
14 {
15
16 // check arguments
17
2/4
✓ Branch 2 → 3 taken 10 times.
✗ Branch 2 → 4 not taken.
✗ Branch 3 → 4 not taken.
✓ Branch 3 → 6 taken 10 times.
10 if(vdor_name == "" || bank_names.empty()) {
18 fmt::print(stderr, "ERROR: need validator name and banks\n");
19 return 1;
20 }
21
1/2
✗ Branch 6 → 8 not taken.
✓ Branch 6 → 10 taken 10 times.
10 if(data_file == "") {
22 fmt::print(stderr, "ERROR: need a data file for command 'validator'\n");
23 return 1;
24 }
25
26 // open the HIPO file
27 10 hipo::reader reader(data_file.c_str());
28
3/6
✓ Branch 11 → 12 taken 10 times.
✗ Branch 11 → 63 not taken.
✓ Branch 12 → 13 taken 10 times.
✗ Branch 12 → 47 not taken.
✓ Branch 14 → 15 taken 10 times.
✗ Branch 14 → 19 not taken.
10 auto banks = reader.getBanks(bank_names);
29
30 // make the output directory
31
1/2
✓ Branch 14 → 15 taken 10 times.
✗ Branch 14 → 19 not taken.
10 if(output_dir != "")
32
2/4
✓ Branch 15 → 16 taken 10 times.
✗ Branch 15 → 61 not taken.
✓ Branch 16 → 17 taken 10 times.
✗ Branch 16 → 49 not taken.
10 std::filesystem::create_directories(output_dir);
33
34 // define the validator
35
1/2
✓ Branch 19 → 20 taken 10 times.
✗ Branch 19 → 61 not taken.
10 auto vdor = iguana::AlgorithmFactory::Create(vdor_name);
36
2/4
✓ Branch 20 → 21 taken 10 times.
✗ Branch 20 → 22 not taken.
✓ Branch 24 → 25 taken 10 times.
✗ Branch 24 → 57 not taken.
20 dynamic_cast<iguana::Validator*>(vdor.get())->SetOutputDirectory(output_dir);
37
4/10
✓ Branch 25 → 26 taken 10 times.
✗ Branch 25 → 27 not taken.
✓ Branch 27 → 28 taken 10 times.
✗ Branch 27 → 57 not taken.
✓ Branch 28 → 29 taken 10 times.
✗ Branch 28 → 51 not taken.
✓ Branch 34 → 35 taken 10 times.
✗ Branch 34 → 57 not taken.
✗ Branch 57 → 58 not taken.
✗ Branch 57 → 60 not taken.
30 vdor->SetOption("log", verbose ? "trace" : "info");
38
39 // event loop
40
1/2
✓ Branch 34 → 35 taken 10 times.
✗ Branch 34 → 57 not taken.
10 vdor->Start(banks);
41 int it_ev = 0;
42
5/8
✓ Branch 35 → 36 taken 10010 times.
✗ Branch 35 → 57 not taken.
✓ Branch 36 → 37 taken 10010 times.
✗ Branch 36 → 40 not taken.
✓ Branch 37 → 38 taken 10010 times.
✗ Branch 37 → 39 not taken.
✓ Branch 38 → 39 taken 10000 times.
✓ Branch 38 → 40 taken 10 times.
10010 while(reader.next(banks) && (num_events == 0 || it_ev++ < num_events)) {
43
1/2
✓ Branch 39 → 35 taken 10000 times.
✗ Branch 39 → 57 not taken.
10000 vdor->Run(banks);
44 }
45
1/2
✓ Branch 40 → 41 taken 10 times.
✗ Branch 40 → 57 not taken.
10 vdor->Stop();
46 return 0;
47 10 }
48