Skip to content

Commit b239862

Browse files
committed
Update test case for Rule 9.5.2
1 parent 0b5250f commit b239862

File tree

1 file changed

+12
-14
lines changed

1 file changed

+12
-14
lines changed

cpp/misra/test/rules/RULE-9-5-2/test.cpp

Lines changed: 12 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
#include <vector>
2+
#include <array>
23

34
/* Helper functions */
45
std::vector<int> getData() { return {1, 2, 3}; }
@@ -9,8 +10,8 @@ class MyContainer {
910
public:
1011
MyContainer() = default;
1112
MyContainer(std::vector<int> data) : data_(data) {}
12-
std::vector<int>::iterator begin() { return data_.begin(); }
13-
std::vector<int>::iterator end() { return data_.end(); }
13+
std::vector<int>::const_iterator begin() const { return data_.begin(); }
14+
std::vector<int>::const_iterator end() const { return data_.end(); }
1415

1516
private:
1617
std::vector<int> data_{7, 8, 9};
@@ -19,15 +20,15 @@ class MyContainer {
1920
class ConvertibleToVector {
2021
public:
2122
operator std::vector<int>() const { return {7, 8, 9}; }
22-
std::array<int, 3>::iterator begin() { return data_.begin(); }
23-
std::array<int, 3>::iterator end() { return data_.end(); }
23+
std::array<int, 3>::const_iterator begin() const { return data_.begin(); }
24+
std::array<int, 3>::const_iterator end() const { return data_.end(); }
2425

2526
private:
2627
std::array<int, 3> data_{7, 8, 9};
2728
};
2829

29-
std::vector<int> operator+(const std::vector<int> &a,
30-
const std::vector<int> &b) {
30+
std::vector<int> operator+(std::vector<int> a,
31+
std::vector<int> b) {
3132
std::vector<int> result = a;
3233
result.insert(result.end(), b.begin(), b.end());
3334
return result;
@@ -37,8 +38,6 @@ std::vector<int> convertToIntVector(std::vector<int> vector) { return vector; }
3738

3839
int main() {
3940
std::vector<int> localVec = {1, 2, 3};
40-
std::vector<int> *vecPtr = &localVec;
41-
ConvertibleToVector convertible;
4241

4342
/* ========== 1. EXPLICIT FUNCTION CALLS ========== */
4443

@@ -92,7 +91,6 @@ int main() {
9291
localVec)) { // NON-COMPLIANT: 2 function calls + 1 operator call
9392
}
9493

95-
std::vector<int> vec1 = {1}, vec2 = {2}, vec3 = {3};
9694
std::vector<int> appendedVector = (vec1 + vec2) + vec3;
9795
for (auto x : appendedVector) { // COMPLIANT: 0 calls
9896
}
@@ -104,26 +102,26 @@ int main() {
104102
/* ========== 4. IMPLICIT CONVERSIONS ========== */
105103

106104
ConvertibleToVector convertible;
107-
for (auto x : convertible) { // COMPLIANT: 1 conversion operator call only
105+
for (int x : convertible) { // COMPLIANT: 1 conversion operator call only
108106
}
109107

110-
for (auto x :
108+
for (int x :
111109
convertToIntVector(convertible)) { // NON_COMPLIANT: 1 function call + 1
112110
// conversion operator call
113111
}
114112

115-
for (auto x :
113+
for (int x :
116114
convertToIntVector(convertible)) { // NON_COMPLIANT: 1 function call + 1
117115
// conversion operator call
118116
}
119117

120118
std::vector<int> intVector1 = convertToIntVector(convertible);
121-
for (auto x : intVector1) { // NON_COMPLIANT: 1 function call + 1
119+
for (int x : intVector1) { // NON_COMPLIANT: 1 function call + 1
122120
// conversion operator call
123121
}
124122

125123
std::vector<int> intVector2 = convertToIntVector(convertible);
126-
for (auto x : intVector2) { // NON_COMPLIANT: 1 function call + 1
124+
for (int x : intVector2) { // NON_COMPLIANT: 1 function call + 1
127125
// conversion operator call
128126
}
129127
}

0 commit comments

Comments
 (0)