GCC Code Coverage Report


Directory: ./
File: tasks/tsibareva_e_matrix_column_max/common/include/common.hpp
Date: 2026-01-27 01:59:34
Exec Total Coverage
Lines: 136 137 99.3%
Functions: 21 21 100.0%
Branches: 208 480 43.3%

Line Branch Exec Source
1 #pragma once
2
3 #include <cstdint>
4 #include <string>
5 #include <tuple>
6 #include <vector>
7
8 #include "task/include/task.hpp"
9
10 namespace tsibareva_e_matrix_column_max {
11
12 enum class MatrixType : std::uint8_t {
13 kSingleConstant, // 1x1 константная
14 kSingleRow, // 1x10 одна строка
15 kSingleCol, // 3x1 один столбец
16 kAllZeros, // 5x5 все нули
17 kConstant, // 5x5 константная
18 kMaxFirst, // 6x4 максимум в первой строке
19 kMaxLast, // 6x4 максимум в последней строке
20 kMaxMiddle, // 6x4 максимум в середине
21 kAscending, // 8x8 возрастающая
22 kDescending, // 8x8 убывающая
23 kDiagonalDominant, // 8x8 диагонально доминантная
24 kSparse, // 8x8 разреженная
25 kNegative, // 8x8 отрицательная
26 kSquareSmall, // 2x2 маленькая квадратная
27 kVertical, // 10x4 вертикальная
28 kHorizontal, // 5x10 горизонтальная
29 kCheckerboard, // 7x7 шахматная
30 kEmpty, // Пустая матрица
31 kZeroColumns, // Матрица с нулевыми столбцами
32 kNonRectangular // Непрямоугольная матрица
33 };
34
35 using InType = std::vector<std::vector<int>>;
36 using OutType = std::vector<int>;
37 using TestType = std::tuple<MatrixType, std::string>;
38 using BaseTask = ppc::task::Task<InType, OutType>;
39
40 10 inline std::vector<std::vector<int>> GenerateSingleConstantMatrix() {
41
4/10
✗ Branch 1 not taken.
✓ Branch 2 taken 10 times.
✓ Branch 3 taken 10 times.
✓ Branch 4 taken 10 times.
✓ Branch 5 taken 10 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
20 return {{30}};
42 20 }
43 inline std::vector<int> GenerateSingleConstantExpected() {
44 10 return {30};
45 }
46
47 10 inline std::vector<std::vector<int>> GenerateSingleRowMatrix() {
48
4/10
✗ Branch 1 not taken.
✓ Branch 2 taken 10 times.
✓ Branch 3 taken 10 times.
✓ Branch 4 taken 10 times.
✓ Branch 5 taken 10 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
20 return {{1, 2, 3, 4, 5, 6, 7, 8, 9, 10}};
49 10 }
50 inline std::vector<int> GenerateSingleRowExpected() {
51 10 return {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
52 }
53
54 10 inline std::vector<std::vector<int>> GenerateSingleColMatrix() {
55
4/10
✗ Branch 1 not taken.
✓ Branch 2 taken 10 times.
✓ Branch 3 taken 30 times.
✓ Branch 4 taken 10 times.
✓ Branch 5 taken 30 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
40 return {{1}, {2}, {3}};
56
3/10
✓ Branch 1 taken 10 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 10 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 10 times.
✗ Branch 8 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
✗ Branch 12 not taken.
20 }
57 inline std::vector<int> GenerateSingleColExpected() {
58 10 return {3};
59 }
60
61 14 inline std::vector<std::vector<int>> GenerateAllZerosMatrix() {
62
4/10
✗ Branch 1 not taken.
✓ Branch 2 taken 14 times.
✓ Branch 3 taken 70 times.
✓ Branch 4 taken 14 times.
✓ Branch 5 taken 70 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
84 return {{0, 0, 0, 0, 0}, {0, 0, 0, 0, 0}, {0, 0, 0, 0, 0}, {0, 0, 0, 0, 0}, {0, 0, 0, 0, 0}};
63
5/14
✓ Branch 1 taken 14 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 14 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 14 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 14 times.
✗ Branch 11 not taken.
✓ Branch 13 taken 14 times.
✗ Branch 14 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
✗ Branch 18 not taken.
28 }
64 14 inline std::vector<int> GenerateAllZerosExpected() {
65 14 return {0, 0, 0, 0, 0};
66 }
67
68 10 inline std::vector<std::vector<int>> GenerateConstantMatrix() {
69
4/10
✗ Branch 1 not taken.
✓ Branch 2 taken 10 times.
✓ Branch 3 taken 50 times.
✓ Branch 4 taken 10 times.
✓ Branch 5 taken 50 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
60 return {{30, 30, 30, 30, 30}, {30, 30, 30, 30, 30}, {30, 30, 30, 30, 30}, {30, 30, 30, 30, 30}, {30, 30, 30, 30, 30}};
70
5/14
✓ Branch 1 taken 10 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 10 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 10 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 10 times.
✗ Branch 11 not taken.
✓ Branch 13 taken 10 times.
✗ Branch 14 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
✗ Branch 18 not taken.
10 }
71 inline std::vector<int> GenerateConstantExpected() {
72 10 return {30, 30, 30, 30, 30};
73 }
74
75 10 inline std::vector<std::vector<int>> GenerateMaxFirstMatrix() {
76
4/10
✗ Branch 1 not taken.
✓ Branch 2 taken 10 times.
✓ Branch 3 taken 60 times.
✓ Branch 4 taken 10 times.
✓ Branch 5 taken 60 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
70 return {{1000, 1001, 1002, 1003}, {1, 2, 3, 4}, {2, 3, 4, 5}, {3, 4, 5, 6}, {4, 5, 6, 7}, {5, 6, 7, 8}};
77
6/16
✓ Branch 1 taken 10 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 10 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 10 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 10 times.
✗ Branch 11 not taken.
✓ Branch 13 taken 10 times.
✗ Branch 14 not taken.
✓ Branch 16 taken 10 times.
✗ Branch 17 not taken.
✗ Branch 18 not taken.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
10 }
78 inline std::vector<int> GenerateMaxFirstExpected() {
79 10 return {1000, 1001, 1002, 1003};
80 }
81
82 10 inline std::vector<std::vector<int>> GenerateMaxLastMatrix() {
83
4/10
✗ Branch 1 not taken.
✓ Branch 2 taken 10 times.
✓ Branch 3 taken 60 times.
✓ Branch 4 taken 10 times.
✓ Branch 5 taken 60 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
70 return {{1, 2, 3, 4}, {2, 3, 4, 5}, {3, 4, 5, 6}, {4, 5, 6, 7}, {5, 6, 7, 8}, {1000, 1001, 1002, 1003}};
84
6/16
✓ Branch 1 taken 10 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 10 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 10 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 10 times.
✗ Branch 11 not taken.
✓ Branch 13 taken 10 times.
✗ Branch 14 not taken.
✓ Branch 16 taken 10 times.
✗ Branch 17 not taken.
✗ Branch 18 not taken.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
10 }
85 inline std::vector<int> GenerateMaxLastExpected() {
86 10 return {1000, 1001, 1002, 1003};
87 }
88
89 10 inline std::vector<std::vector<int>> GenerateMaxMiddleMatrix() {
90
4/10
✗ Branch 1 not taken.
✓ Branch 2 taken 10 times.
✓ Branch 3 taken 60 times.
✓ Branch 4 taken 10 times.
✓ Branch 5 taken 60 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
70 return {{1, 2, 3, 4}, {2, 3, 4, 5}, {1000, 1001, 1002, 1003}, {4, 5, 6, 7}, {5, 6, 7, 8}, {6, 7, 8, 9}};
91
6/16
✓ Branch 1 taken 10 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 10 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 10 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 10 times.
✗ Branch 11 not taken.
✓ Branch 13 taken 10 times.
✗ Branch 14 not taken.
✓ Branch 16 taken 10 times.
✗ Branch 17 not taken.
✗ Branch 18 not taken.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
10 }
92 inline std::vector<int> GenerateMaxMiddleExpected() {
93 10 return {1000, 1001, 1002, 1003};
94 }
95
96 10 inline std::vector<std::vector<int>> GenerateAscendingMatrix() {
97 return {{1, 2, 3, 4, 5, 6, 7, 8}, {9, 10, 11, 12, 13, 14, 15, 16}, {17, 18, 19, 20, 21, 22, 23, 24},
98 {25, 26, 27, 28, 29, 30, 31, 32}, {33, 34, 35, 36, 37, 38, 39, 40}, {41, 42, 43, 44, 45, 46, 47, 48},
99
4/10
✗ Branch 1 not taken.
✓ Branch 2 taken 10 times.
✓ Branch 3 taken 80 times.
✓ Branch 4 taken 10 times.
✓ Branch 5 taken 80 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
90 {49, 50, 51, 52, 53, 54, 55, 56}, {57, 58, 59, 60, 61, 62, 63, 64}};
100
8/20
✓ Branch 1 taken 10 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 10 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 10 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 10 times.
✗ Branch 11 not taken.
✓ Branch 13 taken 10 times.
✗ Branch 14 not taken.
✓ Branch 16 taken 10 times.
✗ Branch 17 not taken.
✓ Branch 19 taken 10 times.
✗ Branch 20 not taken.
✓ Branch 22 taken 10 times.
✗ Branch 23 not taken.
✗ Branch 24 not taken.
✗ Branch 25 not taken.
✗ Branch 26 not taken.
✗ Branch 27 not taken.
10 }
101 inline std::vector<int> GenerateAscendingExpected() {
102 10 return {57, 58, 59, 60, 61, 62, 63, 64};
103 }
104
105 10 inline std::vector<std::vector<int>> GenerateDescendingMatrix() {
106 return {{64, 63, 62, 61, 60, 59, 58, 57}, {56, 55, 54, 53, 52, 51, 50, 49}, {48, 47, 46, 45, 44, 43, 42, 41},
107 {40, 39, 38, 37, 36, 35, 34, 33}, {32, 31, 30, 29, 28, 27, 26, 25}, {24, 23, 22, 21, 20, 19, 18, 17},
108
4/10
✗ Branch 1 not taken.
✓ Branch 2 taken 10 times.
✓ Branch 3 taken 80 times.
✓ Branch 4 taken 10 times.
✓ Branch 5 taken 80 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
90 {16, 15, 14, 13, 12, 11, 10, 9}, {8, 7, 6, 5, 4, 3, 2, 1}};
109
8/20
✓ Branch 1 taken 10 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 10 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 10 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 10 times.
✗ Branch 11 not taken.
✓ Branch 13 taken 10 times.
✗ Branch 14 not taken.
✓ Branch 16 taken 10 times.
✗ Branch 17 not taken.
✓ Branch 19 taken 10 times.
✗ Branch 20 not taken.
✓ Branch 22 taken 10 times.
✗ Branch 23 not taken.
✗ Branch 24 not taken.
✗ Branch 25 not taken.
✗ Branch 26 not taken.
✗ Branch 27 not taken.
10 }
110 inline std::vector<int> GenerateDescendingExpected() {
111 10 return {64, 63, 62, 61, 60, 59, 58, 57};
112 }
113
114 10 inline std::vector<std::vector<int>> GenerateDiagonalDominantMatrix() {
115 return {{1000, 1, 2, 3, 4, 5, 6, 7}, {1, 1100, 3, 4, 5, 6, 7, 8}, {2, 3, 1200, 5, 6, 7, 8, 9},
116 {3, 4, 5, 1300, 7, 8, 9, 10}, {4, 5, 6, 7, 1400, 9, 10, 11}, {5, 6, 7, 8, 9, 1500, 11, 12},
117
4/10
✗ Branch 1 not taken.
✓ Branch 2 taken 10 times.
✓ Branch 3 taken 80 times.
✓ Branch 4 taken 10 times.
✓ Branch 5 taken 80 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
90 {6, 7, 8, 9, 10, 11, 1600, 14}, {7, 8, 9, 10, 11, 12, 14, 1700}};
118
8/20
✓ Branch 1 taken 10 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 10 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 10 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 10 times.
✗ Branch 11 not taken.
✓ Branch 13 taken 10 times.
✗ Branch 14 not taken.
✓ Branch 16 taken 10 times.
✗ Branch 17 not taken.
✓ Branch 19 taken 10 times.
✗ Branch 20 not taken.
✓ Branch 22 taken 10 times.
✗ Branch 23 not taken.
✗ Branch 24 not taken.
✗ Branch 25 not taken.
✗ Branch 26 not taken.
✗ Branch 27 not taken.
10 }
119 inline std::vector<int> GenerateDiagonalDominantExpected() {
120 10 return {1000, 1100, 1200, 1300, 1400, 1500, 1600, 1700};
121 }
122
123 10 inline std::vector<std::vector<int>> GenerateSparseMatrix() {
124 return {{8, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 61, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 72, 0},
125
4/10
✗ Branch 1 not taken.
✓ Branch 2 taken 10 times.
✓ Branch 3 taken 80 times.
✓ Branch 4 taken 10 times.
✓ Branch 5 taken 80 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
90 {0, 0, 0, 0, 0, 0, 0, 0}, {0, 9, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0}};
126
8/20
✓ Branch 1 taken 10 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 10 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 10 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 10 times.
✗ Branch 11 not taken.
✓ Branch 13 taken 10 times.
✗ Branch 14 not taken.
✓ Branch 16 taken 10 times.
✗ Branch 17 not taken.
✓ Branch 19 taken 10 times.
✗ Branch 20 not taken.
✓ Branch 22 taken 10 times.
✗ Branch 23 not taken.
✗ Branch 24 not taken.
✗ Branch 25 not taken.
✗ Branch 26 not taken.
✗ Branch 27 not taken.
20 }
127 inline std::vector<int> GenerateSparseExpected() {
128 10 return {8, 9, 0, 61, 0, 0, 72, 0};
129 }
130
131 10 inline std::vector<std::vector<int>> GenerateNegativeMatrix() {
132 return {{-30, -31, -32, -33, -34, -35, -36, -37}, {-40, -41, -42, -43, -44, -45, -46, -47},
133 {-50, -51, -52, -53, -54, -55, -56, -57}, {-60, -61, -62, -63, -64, -65, -66, -67},
134 {-70, -71, -72, -73, -74, -75, -76, -77}, {-80, -81, -82, -83, -84, -85, -86, -87},
135
4/10
✗ Branch 1 not taken.
✓ Branch 2 taken 10 times.
✓ Branch 3 taken 80 times.
✓ Branch 4 taken 10 times.
✓ Branch 5 taken 80 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
90 {-90, -91, -92, -93, -94, -95, -96, -97}, {-100, -101, -102, -103, -104, -105, -106, -107}};
136
8/20
✓ Branch 1 taken 10 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 10 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 10 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 10 times.
✗ Branch 11 not taken.
✓ Branch 13 taken 10 times.
✗ Branch 14 not taken.
✓ Branch 16 taken 10 times.
✗ Branch 17 not taken.
✓ Branch 19 taken 10 times.
✗ Branch 20 not taken.
✓ Branch 22 taken 10 times.
✗ Branch 23 not taken.
✗ Branch 24 not taken.
✗ Branch 25 not taken.
✗ Branch 26 not taken.
✗ Branch 27 not taken.
10 }
137 inline std::vector<int> GenerateNegativeExpected() {
138 10 return {-30, -31, -32, -33, -34, -35, -36, -37};
139 }
140
141 10 inline std::vector<std::vector<int>> GenerateSquareSmallMatrix() {
142
4/10
✗ Branch 1 not taken.
✓ Branch 2 taken 10 times.
✓ Branch 3 taken 20 times.
✓ Branch 4 taken 10 times.
✓ Branch 5 taken 20 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
30 return {{1, 2}, {3, 4}};
143
2/8
✓ Branch 1 taken 10 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 10 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✗ Branch 9 not taken.
10 }
144 inline std::vector<int> GenerateSquareSmallExpected() {
145 10 return {3, 4};
146 }
147
148 10 inline std::vector<std::vector<int>> GenerateVerticalMatrix() {
149 return {{1, 2, 3, 4}, {5, 6, 7, 8}, {9, 10, 11, 12}, {13, 14, 15, 16}, {17, 18, 19, 20},
150
4/10
✗ Branch 1 not taken.
✓ Branch 2 taken 10 times.
✓ Branch 3 taken 100 times.
✓ Branch 4 taken 10 times.
✓ Branch 5 taken 100 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
110 {21, 22, 23, 24}, {25, 26, 27, 28}, {29, 30, 31, 32}, {33, 34, 35, 36}, {37, 38, 39, 40}};
151
10/24
✓ Branch 1 taken 10 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 10 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 10 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 10 times.
✗ Branch 11 not taken.
✓ Branch 13 taken 10 times.
✗ Branch 14 not taken.
✓ Branch 16 taken 10 times.
✗ Branch 17 not taken.
✓ Branch 19 taken 10 times.
✗ Branch 20 not taken.
✓ Branch 22 taken 10 times.
✗ Branch 23 not taken.
✓ Branch 25 taken 10 times.
✗ Branch 26 not taken.
✓ Branch 28 taken 10 times.
✗ Branch 29 not taken.
✗ Branch 30 not taken.
✗ Branch 31 not taken.
✗ Branch 32 not taken.
✗ Branch 33 not taken.
10 }
152 inline std::vector<int> GenerateVerticalExpected() {
153 10 return {37, 38, 39, 40};
154 }
155
156 10 inline std::vector<std::vector<int>> GenerateHorizontalMatrix() {
157 return {{1, 2, 3, 4, 5, 6, 7, 8, 9, 10},
158 {11, 12, 13, 14, 15, 16, 17, 18, 19, 20},
159 {21, 22, 23, 24, 25, 26, 27, 28, 29, 30},
160 {31, 32, 33, 34, 35, 36, 37, 38, 39, 40},
161
4/10
✗ Branch 1 not taken.
✓ Branch 2 taken 10 times.
✓ Branch 3 taken 50 times.
✓ Branch 4 taken 10 times.
✓ Branch 5 taken 50 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
60 {41, 42, 43, 44, 45, 46, 47, 48, 49, 50}};
162
5/14
✓ Branch 1 taken 10 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 10 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 10 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 10 times.
✗ Branch 11 not taken.
✓ Branch 13 taken 10 times.
✗ Branch 14 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
✗ Branch 18 not taken.
10 }
163 inline std::vector<int> GenerateHorizontalExpected() {
164 10 return {41, 42, 43, 44, 45, 46, 47, 48, 49, 50};
165 }
166
167 10 inline std::vector<std::vector<int>> GenerateCheckerboardMatrix() {
168 return {{1, -1, 1, -1, 1, -1, 1}, {-1, 1, -1, 1, -1, 1, -1}, {1, -1, 1, -1, 1, -1, 1}, {-1, 1, -1, 1, -1, 1, -1},
169
4/10
✗ Branch 1 not taken.
✓ Branch 2 taken 10 times.
✓ Branch 3 taken 70 times.
✓ Branch 4 taken 10 times.
✓ Branch 5 taken 70 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
80 {1, -1, 1, -1, 1, -1, 1}, {-1, 1, -1, 1, -1, 1, -1}, {1, -1, 1, -1, 1, -1, 1}};
170
7/18
✓ Branch 1 taken 10 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 10 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 10 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 10 times.
✗ Branch 11 not taken.
✓ Branch 13 taken 10 times.
✗ Branch 14 not taken.
✓ Branch 16 taken 10 times.
✗ Branch 17 not taken.
✓ Branch 19 taken 10 times.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
✗ Branch 22 not taken.
✗ Branch 23 not taken.
✗ Branch 24 not taken.
10 }
171 inline std::vector<int> GenerateCheckerboardExpected() {
172 10 return {1, 1, 1, 1, 1, 1, 1};
173 }
174
175 inline std::vector<std::vector<int>> GenerateEmptyMatrix() {
176 10 return {};
177 }
178 inline std::vector<std::vector<int>> GenerateZeroColumnsMatrix() {
179 10 return std::vector<std::vector<int>>(5, std::vector<int>());
180 }
181 10 inline std::vector<std::vector<int>> GenerateNonRectangularMatrix() {
182
4/10
✗ Branch 1 not taken.
✓ Branch 2 taken 10 times.
✓ Branch 3 taken 30 times.
✓ Branch 4 taken 10 times.
✓ Branch 5 taken 30 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
40 return {{1, 2, 3}, {4, 5}, {6, 7, 8}};
183
3/10
✓ Branch 1 taken 10 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 10 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 10 times.
✗ Branch 8 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
✗ Branch 12 not taken.
10 }
184 inline std::vector<int> GenerateEmptyExpected() {
185 30 return {};
186 }
187
188 204 inline std::vector<std::vector<int>> GenerateMatrixFunc(MatrixType type) {
189
20/21
✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
✓ Branch 2 taken 10 times.
✓ Branch 3 taken 14 times.
✓ Branch 4 taken 10 times.
✓ Branch 5 taken 10 times.
✓ Branch 6 taken 10 times.
✓ Branch 7 taken 10 times.
✓ Branch 8 taken 10 times.
✓ Branch 9 taken 10 times.
✓ Branch 10 taken 10 times.
✓ Branch 11 taken 10 times.
✓ Branch 12 taken 10 times.
✓ Branch 13 taken 10 times.
✓ Branch 14 taken 10 times.
✓ Branch 15 taken 10 times.
✓ Branch 16 taken 10 times.
✓ Branch 17 taken 10 times.
✓ Branch 18 taken 10 times.
✓ Branch 19 taken 10 times.
✗ Branch 20 not taken.
204 switch (type) {
190 10 case MatrixType::kSingleConstant:
191 10 return GenerateSingleConstantMatrix();
192 10 case MatrixType::kSingleRow:
193 10 return GenerateSingleRowMatrix();
194 10 case MatrixType::kSingleCol:
195 10 return GenerateSingleColMatrix();
196 14 case MatrixType::kAllZeros:
197 14 return GenerateAllZerosMatrix();
198 10 case MatrixType::kConstant:
199 10 return GenerateConstantMatrix();
200 10 case MatrixType::kMaxFirst:
201 10 return GenerateMaxFirstMatrix();
202 10 case MatrixType::kMaxLast:
203 10 return GenerateMaxLastMatrix();
204 10 case MatrixType::kMaxMiddle:
205 10 return GenerateMaxMiddleMatrix();
206 10 case MatrixType::kAscending:
207 10 return GenerateAscendingMatrix();
208 10 case MatrixType::kDescending:
209 10 return GenerateDescendingMatrix();
210 10 case MatrixType::kDiagonalDominant:
211 10 return GenerateDiagonalDominantMatrix();
212 10 case MatrixType::kSparse:
213 10 return GenerateSparseMatrix();
214 10 case MatrixType::kNegative:
215 10 return GenerateNegativeMatrix();
216 10 case MatrixType::kSquareSmall:
217 10 return GenerateSquareSmallMatrix();
218 10 case MatrixType::kVertical:
219 10 return GenerateVerticalMatrix();
220 10 case MatrixType::kHorizontal:
221 10 return GenerateHorizontalMatrix();
222 10 case MatrixType::kCheckerboard:
223 10 return GenerateCheckerboardMatrix();
224 10 case MatrixType::kEmpty:
225 return GenerateEmptyMatrix();
226 10 case MatrixType::kZeroColumns:
227 return GenerateZeroColumnsMatrix();
228 10 case MatrixType::kNonRectangular:
229 10 return GenerateNonRectangularMatrix();
230 }
231 return GenerateSingleConstantMatrix();
232 }
233
234 204 inline std::vector<int> GenerateExpectedOutput(MatrixType type) {
235
18/19
✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
✓ Branch 2 taken 10 times.
✓ Branch 3 taken 14 times.
✓ Branch 4 taken 10 times.
✓ Branch 5 taken 10 times.
✓ Branch 6 taken 10 times.
✓ Branch 7 taken 10 times.
✓ Branch 8 taken 10 times.
✓ Branch 9 taken 10 times.
✓ Branch 10 taken 10 times.
✓ Branch 11 taken 10 times.
✓ Branch 12 taken 10 times.
✓ Branch 13 taken 10 times.
✓ Branch 14 taken 10 times.
✓ Branch 15 taken 10 times.
✓ Branch 16 taken 10 times.
✓ Branch 17 taken 30 times.
✗ Branch 18 not taken.
204 switch (type) {
236 10 case MatrixType::kSingleConstant:
237 return GenerateSingleConstantExpected();
238 10 case MatrixType::kSingleRow:
239 return GenerateSingleRowExpected();
240 10 case MatrixType::kSingleCol:
241 return GenerateSingleColExpected();
242 14 case MatrixType::kAllZeros:
243 14 return GenerateAllZerosExpected();
244 10 case MatrixType::kConstant:
245 return GenerateConstantExpected();
246 10 case MatrixType::kMaxFirst:
247 return GenerateMaxFirstExpected();
248 10 case MatrixType::kMaxLast:
249 return GenerateMaxLastExpected();
250 10 case MatrixType::kMaxMiddle:
251 return GenerateMaxMiddleExpected();
252 10 case MatrixType::kAscending:
253 return GenerateAscendingExpected();
254 10 case MatrixType::kDescending:
255 return GenerateDescendingExpected();
256 10 case MatrixType::kDiagonalDominant:
257 return GenerateDiagonalDominantExpected();
258 10 case MatrixType::kSparse:
259 return GenerateSparseExpected();
260 10 case MatrixType::kNegative:
261 return GenerateNegativeExpected();
262 10 case MatrixType::kSquareSmall:
263 return GenerateSquareSmallExpected();
264 10 case MatrixType::kVertical:
265 return GenerateVerticalExpected();
266 10 case MatrixType::kHorizontal:
267 return GenerateHorizontalExpected();
268 10 case MatrixType::kCheckerboard:
269 return GenerateCheckerboardExpected();
270 30 case MatrixType::kEmpty:
271 case MatrixType::kZeroColumns:
272 case MatrixType::kNonRectangular:
273 return GenerateEmptyExpected();
274 }
275 return GenerateSingleConstantExpected();
276 }
277
278 } // namespace tsibareva_e_matrix_column_max
279