Chrysalis - CLO3D Extensions Test Coverage


integrations/clo3d/
File: integrations/clo3d/src/TaskGroup.cpp
Date: 2026-08-27 18:36:08
Lines:
24/24
100.0%
Functions:
6/6
100.0%
Branches:
24/40
60.0%
Decisions:
8/10
80.0%
Calls:
128/141
90.8%

Line Branch Decision Call Exec Source
1 #include "TaskGroup.h"
2
3 #include "TaskGroupException.h"
4
5 #include <atomic>
6 #include <memory>
7
8 using namespace CLO3D;
9
10
10/10
✓ Call 0 invoked.
✓ Call 1 invoked.
✓ Call 2 invoked.
✓ Call 3 invoked.
✓ Call 4 invoked.
✓ Call 5 invoked.
✓ Call 6 invoked.
✓ Call 7 invoked.
✓ Call 8 invoked.
✓ Call 9 invoked.
786 TaskGroup::TaskGroup(const QString& name): BaseTask(name) {}
11
12 786 void TaskGroup::wait() {
13
2/4
✓ Branch 6 taken 786 times.
✗ Branch 7 not taken.
✓ Branch 9 taken 786 times.
✗ Branch 10 not taken.
7/7
✓ Call 0 invoked.
✓ Call 1 invoked.
✓ Call 2 invoked.
✓ Call 3 invoked.
✓ Call 4 invoked.
✓ Call 5 invoked.
✓ Call 8 invoked.
786 TaskGroupException groupException(name());
14
2/2
✓ Branch 13 taken 3930 times.
✓ Branch 14 taken 786 times.
2/2
✓ Decision 'true' taken 3930 times.
✓ Decision 'false' taken 786 times.
13/13
✓ Call 0 invoked.
✓ Call 1 invoked.
✓ Call 2 invoked.
✓ Call 3 invoked.
✓ Call 4 invoked.
✓ Call 5 invoked.
✓ Call 6 invoked.
✓ Call 7 invoked.
✓ Call 8 invoked.
✓ Call 9 invoked.
✓ Call 10 invoked.
✓ Call 11 invoked.
✓ Call 12 invoked.
4716 for (const auto& task : tasks_) {
15 try {
16
2/2
✓ Branch 9 taken 3926 times.
✓ Branch 10 taken 4 times.
9/9
✓ Call 0 invoked.
✓ Call 1 invoked.
✓ Call 2 invoked.
✓ Call 3 invoked.
✓ Call 4 invoked.
✓ Call 5 invoked.
✓ Call 6 invoked.
✓ Call 7 invoked.
✓ Call 8 invoked.
3930 task->wait();
17
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 4 times.
2/2
✓ Call 2 invoked.
✓ Call 3 invoked.
4 } catch (const BaseTaskException& e) {
18
1/2
✓ Branch 2 taken 4 times.
✗ Branch 3 not taken.
2/2
✓ Call 0 invoked.
✓ Call 1 invoked.
4 groupException.addException(e);
19
1/2
✓ Branch 1 taken 4 times.
✗ Branch 2 not taken.
1/2
✓ Call 0 invoked.
✗ Call 3 not invoked.
4 }
20 }
21
3/4
✓ Branch 2 taken 786 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 2 times.
✓ Branch 5 taken 784 times.
0/1
? Decision couldn't be analyzed.
6/6
✓ Call 0 invoked.
✓ Call 1 invoked.
✓ Call 6 invoked.
✓ Call 7 invoked.
✓ Call 8 invoked.
✓ Call 9 invoked.
786 if (!groupException.empty()) throw groupException;
22
4/4
✓ Call 0 invoked.
✓ Call 1 invoked.
✓ Call 2 invoked.
✓ Call 3 invoked.
1570 }
23
24 786 void TaskGroup::run(const std::function<void()>& onSuccess, const std::function<void(const BaseTaskException&)>& onException) {
25
1/2
✓ Branch 8 taken 786 times.
✗ Branch 9 not taken.
9/10
✓ Call 0 invoked.
✓ Call 1 invoked.
✓ Call 2 invoked.
✓ Call 3 invoked.
✓ Call 4 invoked.
✓ Call 5 invoked.
✓ Call 6 invoked.
✓ Call 7 invoked.
✓ Call 10 invoked.
✗ Call 11 not invoked.
786 const auto remaining = std::make_shared<std::atomic<size_t>>(tasks_.size());
26
2/2
✓ Branch 13 taken 3930 times.
✓ Branch 14 taken 786 times.
2/2
✓ Decision 'true' taken 3930 times.
✓ Decision 'false' taken 786 times.
13/13
✓ Call 0 invoked.
✓ Call 1 invoked.
✓ Call 2 invoked.
✓ Call 3 invoked.
✓ Call 4 invoked.
✓ Call 5 invoked.
✓ Call 6 invoked.
✓ Call 7 invoked.
✓ Call 8 invoked.
✓ Call 9 invoked.
✓ Call 10 invoked.
✓ Call 11 invoked.
✓ Call 12 invoked.
4716 for (const auto& task : tasks_) {
27
4/10
✓ Branch 10 taken 3930 times.
✗ Branch 11 not taken.
✓ Branch 17 taken 3930 times.
✗ Branch 18 not taken.
✓ Branch 21 taken 3930 times.
✗ Branch 22 not taken.
✓ Branch 25 taken 3930 times.
✗ Branch 26 not taken.
✗ Branch 35 not taken.
✗ Branch 36 not taken.
25/32
✓ Call 0 invoked.
✓ Call 1 invoked.
✓ Call 2 invoked.
✓ Call 3 invoked.
✓ Call 4 invoked.
✓ Call 5 invoked.
✓ Call 6 invoked.
✓ Call 7 invoked.
✓ Call 8 invoked.
✓ Call 9 invoked.
✓ Call 12 invoked.
✓ Call 13 invoked.
✓ Call 14 invoked.
✓ Call 15 invoked.
✓ Call 16 invoked.
✓ Call 19 invoked.
✓ Call 20 invoked.
✓ Call 23 invoked.
✓ Call 24 invoked.
✓ Call 27 invoked.
✓ Call 28 invoked.
✓ Call 29 invoked.
✓ Call 30 invoked.
✓ Call 31 invoked.
✓ Call 32 invoked.
✗ Call 33 not invoked.
✗ Call 34 not invoked.
✗ Call 37 not invoked.
✗ Call 38 not invoked.
✗ Call 39 not invoked.
✗ Call 40 not invoked.
✗ Call 41 not invoked.
11790 task->run([remaining, onSuccess] -> void {
28
2/2
✓ Branch 4 taken 784 times.
✓ Branch 5 taken 3142 times.
2/2
✓ Decision 'true' taken 784 times.
✓ Decision 'false' taken 3142 times.
4/4
✓ Call 0 invoked.
✓ Call 1 invoked.
✓ Call 2 invoked.
✓ Call 3 invoked.
7852 if (remaining->fetch_sub(1, std::memory_order_release) == 1) {
29 std::atomic_thread_fence(std::memory_order_acquire);
30
3/3
✓ Call 0 invoked.
✓ Call 1 invoked.
✓ Call 2 invoked.
784 onSuccess();
31 }
32
1/4
✓ Branch 3 taken 3930 times.
✗ Branch 4 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
6/9
✓ Call 0 invoked.
✓ Call 1 invoked.
✓ Call 2 invoked.
✓ Call 5 invoked.
✓ Call 6 invoked.
✓ Call 7 invoked.
✗ Call 8 not invoked.
✗ Call 11 not invoked.
✗ Call 12 not invoked.
7860 }, [remaining, onException](const BaseTaskException& e) -> void {
33
2/2
✓ Branch 4 taken 2 times.
✓ Branch 5 taken 2 times.
2/2
✓ Decision 'true' taken 2 times.
✓ Decision 'false' taken 2 times.
4/4
✓ Call 0 invoked.
✓ Call 1 invoked.
✓ Call 2 invoked.
✓ Call 3 invoked.
8 if (remaining->fetch_sub(1, std::memory_order_release) == 1) {
34 std::atomic_thread_fence(std::memory_order_acquire);
35
3/3
✓ Call 0 invoked.
✓ Call 1 invoked.
✓ Call 2 invoked.
2 onException(e);
36 }
37 4 });
38 }
39
1/2
✓ Call 0 invoked.
✗ Call 1 not invoked.
1572 }
40
41 3930 void TaskGroup::addTask(std::unique_ptr<BaseTask> task) {
42
6/6
✓ Call 0 invoked.
✓ Call 1 invoked.
✓ Call 2 invoked.
✓ Call 3 invoked.
✓ Call 4 invoked.
✓ Call 5 invoked.
3930 tasks_.push_back(std::move(task));
43 3930 }
44