| 486 | }; |
| 487 | |
| 488 | void DebugArrayTests() |
| 489 | { |
| 490 | MArray<CEStr> sArr; |
| 491 | sArr.reserve(1); |
| 492 | _ASSERTE(sArr.size()==0 && sArr.capacity()==1); |
| 493 | sArr.push_back(CEStr(L"sample string")); |
| 494 | _ASSERTE(sArr.size()==1 && sArr.capacity()==1); |
| 495 | const wchar_t* psz = sArr[0].c_str(); |
| 496 | _ASSERTE(psz && wcscmp(psz, L"sample string")==0); |
| 497 | sArr.swap(MArray<CEStr>()); |
| 498 | _ASSERTE(sArr.size()==0 && sArr.capacity()==0); |
| 499 | sArr.push_back(CEStr(L"1")); |
| 500 | _ASSERTE(sArr.size()==1 && sArr.capacity()>=1 && sArr[0]==L"1"); |
| 501 | sArr.push_back(L"3"); |
| 502 | _ASSERTE(sArr.size()==2 && sArr.capacity()>=2 && sArr[0]==L"1" && sArr[1]==L"3"); |
| 503 | const CEStr s2(L"2"); |
| 504 | sArr.insert(1, s2); |
| 505 | _ASSERTE(sArr.size()==3 && sArr[0]==L"1" && sArr[1]==L"2" && sArr[2]==L"3"); |
| 506 | sArr.erase(1); |
| 507 | _ASSERTE(sArr.size()==2 && sArr[0]==L"1" && sArr[1]==L"3"); |
| 508 | sArr.push_back(L"4"); |
| 509 | _ASSERTE(sArr.size()==3 && sArr[0]==L"1" && sArr[1]==L"3" && sArr[2]==L"4"); |
| 510 | sArr.insert(1, CEStr(L"2")); |
| 511 | _ASSERTE(sArr.size()==4 && sArr[0]==L"1" && sArr[1]==L"2" && sArr[2]==L"3" && sArr[3]==L"4"); |
| 512 | sArr.erase(1); |
| 513 | _ASSERTE(sArr.size()==3 && sArr[0]==L"1" && sArr[1]==L"3" && sArr[2]==L"4"); |
| 514 | |
| 515 | bool delete_called = false; |
| 516 | MArrayDeleteTester::dtor_called = 0; |
| 517 | MArray<MArrayDeleteTester> dArr; |
| 518 | dArr.push_back(MArrayDeleteTester{2}); |
| 519 | _ASSERTE(MArrayDeleteTester::dtor_called==1 && dArr.size()==1 && dArr[0].value==2); // dtor of temp object |
| 520 | MArrayDeleteTester::dtor_called = 0; |
| 521 | dArr.clear(); |
| 522 | _ASSERTE(MArrayDeleteTester::dtor_called==1); // dtor call from MArray |
| 523 | MArrayDeleteTester::dtor_called = 0; |
| 524 | dArr.resize(2); |
| 525 | _ASSERTE(MArrayDeleteTester::dtor_called==0 && dArr.size()==2 && dArr[0].value==1 && dArr[1].value==1); |
| 526 | dArr.resize(1); |
| 527 | _ASSERTE(MArrayDeleteTester::dtor_called==1 && dArr.size()==1 && dArr[0].value==1); |
| 528 | |
| 529 | MArray<int> arr; |
| 530 | int i1 = 1; |
| 531 | arr.push_back(i1); |
| 532 | const int i2 = 2; |
| 533 | arr.push_back(i2); |
| 534 | arr.push_back(3); |
| 535 | arr.push_back(4); |
| 536 | arr.insert(2, 5); |
| 537 | _ASSERTE(arr.size()==5 && arr[0]==1 && arr[1]==2 && arr[2]==5 && arr[3]==3 && arr[4]==4); |
| 538 | arr.sort([](const int& i1, const int& i2){ return (i1 < i2); }); |
| 539 | _ASSERTE(arr.size()==5 && arr[0]==1 && arr[1]==2 && arr[2]==3 && arr[3]==4 && arr[4]==5); |
| 540 | arr.sort([](const int& i1, const int& i2){ return (i1 > i2); }); |
| 541 | _ASSERTE(arr.size()==5 && arr[0]==5 && arr[1]==4 && arr[2]==3 && arr[3]==2 && arr[4]==1); |
| 542 | |
| 543 | _ASSERTE(&arr[1] == &(arr[1])); |
| 544 | |
| 545 | MArray<int> arr2; |