@@ -173,7 +173,22 @@ TEST(test_string_array, string_array_resize) {
173
173
ret = rcutils_string_array_resize (&sa0, sa0.size );
174
174
ASSERT_EQ (RCUTILS_RET_OK, ret);
175
175
176
+ // Grow to 16 (with allocation failure)
177
+ sa0.allocator = failing_allocator;
178
+ ret = rcutils_string_array_resize (&sa0, 16 );
179
+ EXPECT_EQ (RCUTILS_RET_BAD_ALLOC, ret);
180
+ EXPECT_EQ (8u , sa0.size );
181
+ rcutils_reset_error ();
182
+
183
+ // Grow to 16 (witn invalid allocator)
184
+ sa0.allocator = invalid_allocator;
185
+ ret = rcutils_string_array_resize (&sa0, 16 );
186
+ EXPECT_EQ (RCUTILS_RET_INVALID_ARGUMENT, ret);
187
+ EXPECT_EQ (8u , sa0.size );
188
+ rcutils_reset_error ();
189
+
176
190
// Grow to 16
191
+ sa0.allocator = allocator;
177
192
ret = rcutils_string_array_resize (&sa0, 16 );
178
193
ASSERT_EQ (RCUTILS_RET_OK, ret);
179
194
ASSERT_EQ (16u , sa0.size );
@@ -191,7 +206,22 @@ TEST(test_string_array, string_array_resize) {
191
206
sa0.data [i] = strdup (val);
192
207
}
193
208
209
+ // Shrink to 4 (with allocation failure)
210
+ sa0.allocator = failing_allocator;
211
+ ret = rcutils_string_array_resize (&sa0, 4 );
212
+ EXPECT_EQ (RCUTILS_RET_BAD_ALLOC, ret);
213
+ EXPECT_EQ (16u , sa0.size );
214
+ rcutils_reset_error ();
215
+
216
+ // Shrink to 4 (witn invalid allocator)
217
+ sa0.allocator = invalid_allocator;
218
+ ret = rcutils_string_array_resize (&sa0, 4 );
219
+ EXPECT_EQ (RCUTILS_RET_INVALID_ARGUMENT, ret);
220
+ EXPECT_EQ (16u , sa0.size );
221
+ rcutils_reset_error ();
222
+
194
223
// Shrink to 4
224
+ sa0.allocator = allocator;
195
225
ret = rcutils_string_array_resize (&sa0, 4 );
196
226
ASSERT_EQ (RCUTILS_RET_OK, ret);
197
227
ASSERT_EQ (4u , sa0.size );
0 commit comments