@@ -196,6 +196,125 @@ TEST_F(CircularBufferTest, BackTest){
196
196
197
197
}
198
198
199
+ TEST_F (CircularBufferTest, AtFunctionTest){
200
+ // push back & at access for individual elements
201
+ test_buff.push_back (" string1" );
202
+ test_buff.push_back (" string2" );
203
+ EXPECT_EQ (test_buff.size (), 2 );
204
+ EXPECT_EQ (test_buff.at (0 ), " string1" );
205
+ EXPECT_EQ (test_buff.at (1 ), " string2" );
206
+ test_buff.at (0 ) = " string2" ;
207
+ test_buff.at (1 ) = " string1" ;
208
+ EXPECT_EQ (test_buff.at (0 ), " string2" );
209
+ EXPECT_EQ (test_buff.at (1 ), " string1" );
210
+ // create full buffer
211
+ for (int i=0 ; i<TEST_BUFFER_SIZE; i++)
212
+ test_buff.push_back (" string" + std::to_string (i));
213
+ // test at function for each element
214
+ for (int i=0 ; i<TEST_BUFFER_SIZE; i++)
215
+ EXPECT_EQ (test_buff.at (i), " string" + std::to_string (i));
216
+ // test assignment with at function for each element
217
+ for (int i=0 ; i<TEST_BUFFER_SIZE; i++)
218
+ test_buff.at (i) = " test_string" ;
219
+ for (int i=0 ; i<TEST_BUFFER_SIZE; i++)
220
+ EXPECT_EQ (test_buff.at (i)," test_string" );
221
+ // test out of bounds
222
+ try {
223
+ test_buff.at (TEST_BUFFER_SIZE) = " test_string" ;
224
+ FAIL () << " Expected std::out_of_range error" ;
225
+ }
226
+ catch (const std::out_of_range& err){
227
+ EXPECT_EQ (err.what (), std::string (" Index is out of Range of buffer size" ));
228
+ }
229
+ // test out of size
230
+ test_buff.pop_front ();
231
+ try {
232
+ test_buff.at (TEST_BUFFER_SIZE - 1 ) = " test_string" ;
233
+ FAIL () << " Expected std::out_of_range error" ;
234
+ }
235
+ catch (const std::out_of_range& err){
236
+ EXPECT_EQ (err.what (), std::string (" Index is out of Range of buffer size" ));
237
+ }
238
+ }
239
+
240
+ TEST_F (CircularBufferTest, AccessOperatorTest){
241
+ // push back & at access for individual elements
242
+ test_buff.push_back (" string1" );
243
+ test_buff.push_back (" string2" );
244
+ EXPECT_EQ (test_buff.size (), 2 );
245
+ EXPECT_EQ (test_buff[0 ], " string1" );
246
+ EXPECT_EQ (test_buff[1 ], " string2" );
247
+ test_buff[0 ] = " string2" ;
248
+ test_buff[1 ] = " string1" ;
249
+ EXPECT_EQ (test_buff[0 ], " string2" );
250
+ EXPECT_EQ (test_buff[1 ], " string1" );
251
+ // create full buffer
252
+ for (int i=0 ; i<TEST_BUFFER_SIZE; i++)
253
+ test_buff.push_back (" string" + std::to_string (i));
254
+ // test [] operator for each element
255
+ for (int i=0 ; i<TEST_BUFFER_SIZE; i++)
256
+ EXPECT_EQ (test_buff[i], " string" + std::to_string (i));
257
+ // test assignment with [] operator for each element
258
+ for (int i=0 ; i<TEST_BUFFER_SIZE; i++)
259
+ test_buff[i] = " test_string" ;
260
+ for (int i=0 ; i<TEST_BUFFER_SIZE; i++)
261
+ EXPECT_EQ (test_buff[i]," test_string" );
262
+ // test out of bounds
263
+ try {
264
+ test_buff[TEST_BUFFER_SIZE] = " test_string" ;
265
+ FAIL () << " Expected std::out_of_range error" ;
266
+ }
267
+ catch (const std::out_of_range& err){
268
+ EXPECT_EQ (err.what (), std::string (" Index is out of Range of buffer size" ));
269
+ }
270
+ // test out of size
271
+ test_buff.pop_front ();
272
+ try {
273
+ test_buff[TEST_BUFFER_SIZE - 1 ] = " test_string" ;
274
+ FAIL () << " Expected std::out_of_range error" ;
275
+ }
276
+ catch (const std::out_of_range& err){
277
+ EXPECT_EQ (err.what (), std::string (" Index is out of Range of buffer size" ));
278
+ }
279
+ }
280
+
281
+
282
+ TEST_F (CircularBufferTest, BeginIteratorTest){
283
+ // create full buffer
284
+ for (int i=0 ; i<TEST_BUFFER_SIZE; i++)
285
+ test_buff.push_back (" string" + std::to_string (i));
286
+ // test first element with iterator
287
+ CircularBuffer<std::string>::iterator it = test_buff.begin ();
288
+ EXPECT_EQ (*it, " string0" );
289
+ // access with begin iterator
290
+ for (int i=0 ; i<TEST_BUFFER_SIZE; i++)
291
+ EXPECT_EQ (*(it++), " string" + std::to_string (i));
292
+
293
+ // access with const begin iterator
294
+ CircularBuffer<std::string>::const_iterator const_it = test_buff.begin ();
295
+ for (int i=0 ; i<TEST_BUFFER_SIZE; i++)
296
+ EXPECT_EQ (*(const_it++), " string" + std::to_string (i));
297
+ }
298
+
299
+ TEST_F (CircularBufferTest, EndIteratorTest){
300
+ // create full buffer
301
+ for (int i=0 ; i<TEST_BUFFER_SIZE; i++)
302
+ test_buff.push_back (" string" + std::to_string (i));
303
+ // test last element with iterator
304
+ CircularBuffer<std::string>::iterator it = test_buff.end ();
305
+ EXPECT_EQ (*(--it), " string99" );
306
+ // access with begin iterator
307
+ for (int i = TEST_BUFFER_SIZE-1 ; i>=0 ; i--)
308
+ EXPECT_EQ (*(it--), " string" + std::to_string (i));
309
+
310
+ // access with const begin iterator
311
+ CircularBuffer<std::string>::const_iterator const_it = test_buff.end ();
312
+ for (int i = TEST_BUFFER_SIZE-1 ; i>=0 ; i--)
313
+ EXPECT_EQ (*(--const_it), " string" + std::to_string (i));
314
+ }
315
+
316
+
317
+
199
318
200
319
201
320
0 commit comments