| 227 | } |
| 228 | |
| 229 | void deque_test::test_operations() |
| 230 | { |
| 231 | auto check1 = { |
| 232 | 1, 2, 3, 4, 11, 22, 33, 44, 55, 66, 77, 88, |
| 233 | 5, 6, 7, 8, 9, 10, 11, 12 |
| 234 | }; |
| 235 | auto to_insert = {11, 22, 33, 44, 55, 66, 77, 88}; |
| 236 | |
| 237 | std::deque<int> d1{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12}; |
| 238 | std::deque<int> d2{d1}; |
| 239 | std::deque<int> d3{d1}; |
| 240 | std::deque<int> d4{d1}; |
| 241 | |
| 242 | d1.insert(d1.begin() + 5, to_insert.begin(), to_insert.end()); |
| 243 | test_eq( |
| 244 | "insert iterator range", |
| 245 | check1.begin(), check1.end(), |
| 246 | d1.begin(), d1.end() |
| 247 | ); |
| 248 | |
| 249 | d2.insert(d2.begin() + 5, to_insert); |
| 250 | test_eq( |
| 251 | "insert initializer list", |
| 252 | check1.begin(), check1.end(), |
| 253 | d2.begin(), d2.end() |
| 254 | ); |
| 255 | |
| 256 | auto check2 = { |
| 257 | 1, 2, 3, 4, 99, 99, 99, 99, 99, 99, 99, 99, |
| 258 | 5, 6, 7, 8, 9, 10, 11, 12 |
| 259 | }; |
| 260 | d3.insert(d3.begin() + 5, 8U, 99); |
| 261 | test_eq( |
| 262 | "insert value n times", |
| 263 | check2.begin(), check2.end(), |
| 264 | d3.begin(), d3.end() |
| 265 | ); |
| 266 | |
| 267 | auto check3 = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12}; |
| 268 | d3.erase(d3.begin() + 4, d3.begin() + 12); |
| 269 | test_eq( |
| 270 | "erase iterator range", |
| 271 | check3.begin(), check3.end(), |
| 272 | d3.begin(), d3.end() |
| 273 | ); |
| 274 | |
| 275 | auto check4 = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 12}; |
| 276 | d3.erase(d3.begin() + 10); |
| 277 | test_eq( |
| 278 | "erase", |
| 279 | check4.begin(), check4.end(), |
| 280 | d3.begin(), d3.end() |
| 281 | ); |
| 282 | |
| 283 | d2.swap(d3); |
| 284 | test_eq( |
| 285 | "swap1", |
| 286 | check1.begin(), check1.end(), |