GCC Code Coverage Report


Directory: ./
File: tasks/zyazeva_s_graham_scheme/seq/src/ops_seq.cpp
Date: 2026-01-27 01:59:34
Exec Total Coverage
Lines: 26 26 100.0%
Functions: 6 6 100.0%
Branches: 34 104 32.7%

Line Branch Exec Source
1 #include "zyazeva_s_graham_scheme/seq/include/ops_seq.hpp"
2
3 #include <algorithm>
4 #include <cstddef>
5 #include <vector>
6
7 #include "zyazeva_s_graham_scheme/common/include/common.hpp"
8
9 namespace zyazeva_s_graham_scheme {
10
11 namespace {
12
13 int Cross(const Point &origin, const Point &a, const Point &b) {
14 304 return ((a.x - origin.x) * (b.y - origin.y)) - ((a.y - origin.y) * (b.x - origin.x));
15 }
16
17 48 std::vector<Point> BuildConvexHull(std::vector<Point> pts) {
18 48 std::ranges::sort(pts.begin(), pts.end(),
19
11/78
✗ Branch 0 not taken.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 14 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
✗ Branch 18 not taken.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
✗ Branch 22 not taken.
✗ Branch 23 not taken.
✗ Branch 24 not taken.
✗ Branch 25 not taken.
✗ Branch 26 not taken.
✗ Branch 27 not taken.
✗ Branch 28 not taken.
✗ Branch 29 not taken.
✗ Branch 30 not taken.
✗ Branch 31 not taken.
✗ Branch 32 not taken.
✗ Branch 33 not taken.
✗ Branch 34 not taken.
✗ Branch 35 not taken.
✗ Branch 36 not taken.
✗ Branch 37 not taken.
✗ Branch 38 not taken.
✗ Branch 39 not taken.
✗ Branch 40 not taken.
✗ Branch 41 not taken.
✗ Branch 42 not taken.
✗ Branch 43 not taken.
✗ Branch 44 not taken.
✗ Branch 45 not taken.
✗ Branch 46 not taken.
✗ Branch 47 not taken.
✗ Branch 48 not taken.
✗ Branch 49 not taken.
✗ Branch 50 not taken.
✗ Branch 51 not taken.
✗ Branch 52 not taken.
✗ Branch 53 not taken.
✗ Branch 54 not taken.
✗ Branch 55 not taken.
✗ Branch 56 not taken.
✗ Branch 57 not taken.
✗ Branch 58 not taken.
✗ Branch 59 not taken.
✗ Branch 60 not taken.
✗ Branch 61 not taken.
✗ Branch 62 not taken.
✗ Branch 63 not taken.
✗ Branch 64 not taken.
✗ Branch 65 not taken.
✗ Branch 66 not taken.
✓ Branch 67 taken 176 times.
✓ Branch 68 taken 32 times.
✓ Branch 69 taken 144 times.
✓ Branch 70 taken 8 times.
✓ Branch 71 taken 24 times.
✓ Branch 72 taken 144 times.
✓ Branch 73 taken 184 times.
✓ Branch 74 taken 56 times.
✓ Branch 75 taken 128 times.
✓ Branch 76 taken 16 times.
✓ Branch 77 taken 40 times.
504 [](const Point &a, const Point &b) { return a.x < b.x || (a.x == b.x && a.y < b.y); });
20
21 48 std::vector<Point> hull;
22
23
2/2
✓ Branch 0 taken 224 times.
✓ Branch 1 taken 48 times.
272 for (const auto &p : pts) {
24
4/4
✓ Branch 0 taken 152 times.
✓ Branch 1 taken 176 times.
✓ Branch 2 taken 104 times.
✓ Branch 3 taken 48 times.
328 while (hull.size() >= 2 && Cross(hull[hull.size() - 2], hull.back(), p) <= 0) {
25 hull.pop_back();
26 }
27 hull.push_back(p);
28 }
29
30 std::size_t lower_size = hull.size();
31
2/2
✓ Branch 0 taken 176 times.
✓ Branch 1 taken 48 times.
224 for (int i = static_cast<int>(pts.size()) - 2; i >= 0; --i) {
32 176 const auto &p = pts[i];
33
4/4
✓ Branch 0 taken 152 times.
✓ Branch 1 taken 104 times.
✓ Branch 2 taken 72 times.
✓ Branch 3 taken 80 times.
256 while (hull.size() > lower_size && Cross(hull[hull.size() - 2], hull.back(), p) <= 0) {
34 hull.pop_back();
35 }
36 hull.push_back(p);
37 }
38
39 hull.pop_back();
40 48 return hull;
41 }
42
43 } // namespace
44
45
1/2
✓ Branch 1 taken 64 times.
✗ Branch 2 not taken.
64 ZyazevaSGrahamSchemeSEQ::ZyazevaSGrahamSchemeSEQ(const InType &in) {
46 SetTypeOfTask(GetStaticTypeOfTask());
47
1/2
✓ Branch 1 taken 64 times.
✗ Branch 2 not taken.
64 GetInput() = in;
48 GetOutput().clear();
49 64 }
50
51
2/2
✓ Branch 0 taken 16 times.
✓ Branch 1 taken 48 times.
64 bool ZyazevaSGrahamSchemeSEQ::ValidationImpl() {
52
2/2
✓ Branch 0 taken 16 times.
✓ Branch 1 taken 48 times.
64 if (GetInput().size() < 3) {
53 GetOutput().clear();
54 }
55 64 return true;
56 }
57
58 64 bool ZyazevaSGrahamSchemeSEQ::PreProcessingImpl() {
59 64 return true;
60 }
61
62
2/2
✓ Branch 0 taken 16 times.
✓ Branch 1 taken 48 times.
64 bool ZyazevaSGrahamSchemeSEQ::RunImpl() {
63 const auto &points = GetInput();
64
65
2/2
✓ Branch 0 taken 16 times.
✓ Branch 1 taken 48 times.
64 if (points.size() < 3) {
66 GetOutput().clear();
67 16 return true;
68 }
69
70
1/2
✓ Branch 2 taken 48 times.
✗ Branch 3 not taken.
48 GetOutput() = BuildConvexHull(points);
71 48 return true;
72 }
73
74 64 bool ZyazevaSGrahamSchemeSEQ::PostProcessingImpl() {
75 64 return true; // 1
76 }
77
78 } // namespace zyazeva_s_graham_scheme
79