GCC Code Coverage Report


Directory: ./
File: tasks/nalitov_d_broadcast/seq/src/ops_seq.cpp
Date: 2026-01-27 01:59:34
Exec Total Coverage
Lines: 29 33 87.9%
Functions: 8 8 100.0%
Branches: 30 44 68.2%

Line Branch Exec Source
1 #include "nalitov_d_broadcast/seq/include/ops_seq.hpp"
2
3 #include <cstring>
4 #include <stdexcept>
5 #include <variant>
6 #include <vector>
7
8 #include "nalitov_d_broadcast/common/include/common.hpp"
9
10 namespace nalitov_d_broadcast {
11
12 namespace {
13
14 template <typename T>
15
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 128 times.
256 bool TransferData(const InType &src, OutType &dst) {
16 const auto &src_data = std::get<std::vector<T>>(src.data);
17 auto &dst_data = std::get<std::vector<T>>(dst);
18
19
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 128 times.
256 if (dst_data.size() != src_data.size()) {
20 dst_data.resize(src_data.size());
21 }
22
23
2/2
✓ Branch 0 taken 120 times.
✓ Branch 1 taken 8 times.
256 if (!src_data.empty()) {
24 240 std::memcpy(dst_data.data(), src_data.data(), src_data.size() * sizeof(T));
25 }
26 256 return true;
27 }
28
29 } // namespace
30
31
1/2
✓ Branch 1 taken 128 times.
✗ Branch 2 not taken.
128 NalitovDBroadcastSEQ::NalitovDBroadcastSEQ(const InType &in) {
32 SetTypeOfTask(GetStaticTypeOfTask());
33 GetInput() = in;
34
35
2/2
✓ Branch 0 taken 40 times.
✓ Branch 1 taken 88 times.
128 if (std::holds_alternative<std::vector<int>>(in.data)) {
36 const auto &src = std::get<std::vector<int>>(in.data);
37
1/2
✓ Branch 1 taken 40 times.
✗ Branch 2 not taken.
80 GetOutput() = InTypeVariant{std::vector<int>(src)};
38
2/2
✓ Branch 0 taken 32 times.
✓ Branch 1 taken 56 times.
88 } else if (std::holds_alternative<std::vector<float>>(in.data)) {
39 const auto &src = std::get<std::vector<float>>(in.data);
40
1/2
✓ Branch 1 taken 32 times.
✗ Branch 2 not taken.
64 GetOutput() = InTypeVariant{std::vector<float>(src)};
41
1/2
✓ Branch 0 taken 56 times.
✗ Branch 1 not taken.
56 } else if (std::holds_alternative<std::vector<double>>(in.data)) {
42 const auto &src = std::get<std::vector<double>>(in.data);
43
1/2
✓ Branch 1 taken 56 times.
✗ Branch 2 not taken.
112 GetOutput() = InTypeVariant{std::vector<double>(src)};
44 } else {
45 throw std::runtime_error("Unsupported data type");
46 }
47 128 }
48
49
2/2
✓ Branch 0 taken 88 times.
✓ Branch 1 taken 40 times.
128 bool NalitovDBroadcastSEQ::ValidationImpl() {
50 const auto &src_data = GetInput();
51
52
2/2
✓ Branch 0 taken 88 times.
✓ Branch 1 taken 40 times.
128 if (std::holds_alternative<std::vector<int>>(src_data.data)) {
53 return true;
54 }
55
2/2
✓ Branch 0 taken 56 times.
✓ Branch 1 taken 32 times.
88 if (std::holds_alternative<std::vector<float>>(src_data.data)) {
56 return true;
57 }
58
1/2
✓ Branch 0 taken 56 times.
✗ Branch 1 not taken.
56 if (std::holds_alternative<std::vector<double>>(src_data.data)) {
59 56 return true;
60 }
61
62 return false;
63 }
64
65 128 bool NalitovDBroadcastSEQ::PreProcessingImpl() {
66 128 return true;
67 }
68
69
2/2
✓ Branch 0 taken 40 times.
✓ Branch 1 taken 88 times.
128 bool NalitovDBroadcastSEQ::RunImpl() {
70 try {
71 const auto &src_data = GetInput();
72 auto &dst_data = GetOutput();
73
74
2/2
✓ Branch 0 taken 40 times.
✓ Branch 1 taken 88 times.
128 if (std::holds_alternative<std::vector<int>>(src_data.data)) {
75
1/2
✓ Branch 1 taken 40 times.
✗ Branch 2 not taken.
40 return TransferData<int>(src_data, dst_data);
76 }
77
2/2
✓ Branch 0 taken 32 times.
✓ Branch 1 taken 56 times.
88 if (std::holds_alternative<std::vector<float>>(src_data.data)) {
78
1/2
✓ Branch 1 taken 32 times.
✗ Branch 2 not taken.
32 return TransferData<float>(src_data, dst_data);
79 }
80
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 56 times.
56 if (std::holds_alternative<std::vector<double>>(src_data.data)) {
81
1/2
✓ Branch 1 taken 56 times.
✗ Branch 2 not taken.
56 return TransferData<double>(src_data, dst_data);
82 }
83
84 return false;
85 } catch (...) {
86 return false;
87 }
88 }
89
90 128 bool NalitovDBroadcastSEQ::PostProcessingImpl() {
91 128 return true;
92 }
93
94 } // namespace nalitov_d_broadcast
95