| 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 | std::string log_level) | ||
| 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 → 81 not taken.
✓ Branch 12 → 13 taken 10 times.
✗ Branch 12 → 59 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 → 79 not taken.
✓ Branch 16 → 17 taken 10 times.
✗ Branch 16 → 61 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 → 79 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 → 75 not taken.
|
20 | dynamic_cast<iguana::Validator*>(vdor.get())->SetOutputDirectory(output_dir); |
| 37 |
4/12✓ Branch 29 → 30 taken 10 times.
✗ Branch 29 → 69 not taken.
✓ Branch 30 → 31 taken 10 times.
✗ Branch 30 → 63 not taken.
✓ Branch 41 → 42 taken 10 times.
✗ Branch 41 → 44 not taken.
✓ Branch 46 → 47 taken 10 times.
✗ Branch 46 → 75 not taken.
✗ Branch 69 → 70 not taken.
✗ Branch 69 → 72 not taken.
✗ Branch 75 → 76 not taken.
✗ Branch 75 → 78 not taken.
|
30 | vdor->SetOption("log", log_level); |
| 38 | |||
| 39 | // event loop | ||
| 40 |
1/2✓ Branch 46 → 47 taken 10 times.
✗ Branch 46 → 75 not taken.
|
10 | vdor->Start(banks); |
| 41 | int it_ev = 0; | ||
| 42 |
5/8✓ Branch 47 → 48 taken 10010 times.
✗ Branch 47 → 75 not taken.
✓ Branch 48 → 49 taken 10010 times.
✗ Branch 48 → 52 not taken.
✓ Branch 49 → 50 taken 10010 times.
✗ Branch 49 → 51 not taken.
✓ Branch 50 → 51 taken 10000 times.
✓ Branch 50 → 52 taken 10 times.
|
10010 | while(reader.next(banks) && (num_events == 0 || it_ev++ < num_events)) { |
| 43 |
1/2✓ Branch 51 → 47 taken 10000 times.
✗ Branch 51 → 75 not taken.
|
10000 | vdor->Run(banks); |
| 44 | } | ||
| 45 |
1/2✓ Branch 52 → 53 taken 10 times.
✗ Branch 52 → 75 not taken.
|
10 | vdor->Stop(); |
| 46 | return 0; | ||
| 47 | 10 | } | |
| 48 |